计算机视觉——SIFT特征提取与检索

本文详细介绍了SIFT特征提取的定义、步骤和实验分析,展示了SIFT在不同环境和场景下的稳定性。通过实验,验证了SIFT的尺度不变性、旋转不变性和亮度不变性。此外,还探讨了RANSAC算法在剔除SIFT匹配中的错配,提高匹配准确性的作用。RANSAC通过随机抽样一致性方法筛选最佳匹配,实验证明其在多种场景下能有效提高匹配精度。
摘要由CSDN通过智能技术生成

一、SIFT特征提取

1.1 定义

SIFT的全称是Scale Invariant Feature Transform,尺度不变特征变换。是在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。SIFT所查找到的关键点是一些十分突出、不会因光照、仿射变换和噪音等因素而变化的点,如角点、边缘点、暗区的亮点及亮区的暗点等。SIFT特征对旋转、尺度缩放、亮度变化等保持不变性,是一种非常稳定的局部特征。

1.2 SIFT特征提取与检索的基本步骤

1.尺度空间的极值检测
搜索所有尺度空间上的图像,通过高斯微分函数来识别潜在的对尺度和选择不变的兴趣点。
2.特征点定位
在每个候选的位置上,通过一个拟合精细模型来确定位置尺度,关键点的选取依据他们的稳定程度。
3.特征方向赋值
基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向,后续的所有操作都是对于关键点的方向、尺度和位置进行变换,从而提供这些特征的不变性。
4.特征点描述
在每个特征点周围的邻域内,在选定的尺度上测量图像的局部梯度,这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变换。

1.3 基本步骤的详细解释

1.检测尺度空间极值
构建尺度空间

这里的尺度可以理解为图像的模糊程度,就是眼睛近视的度数。尺度越大细节越少,SIFT特征希望提取所有尺度上的信息,所以对图像构建尺度空间, 也就是实用不同的平滑核对图像进行平滑。
所以,这里的平滑核选用高斯核,空间尺度有高斯核尺度决定

其中是原图像,*是卷积符号,对应尺度下的尺度图像。是高斯核。

enter description here

其中左上角为原图,右上角为尺度下的图像,下行左右分别是尺度的图像。
尺度空间描述了不同模糊程度上的特征,而并没有刻画图像尺寸大小的情形,所以文中将尺度空间和图像金字塔结合起来。图像的金字塔是通过对图像逐步平滑下采样得到的。

令每一层金字塔(octave)中尺度变化范围为,每层金字塔测量s个尺度,那么第t层金字塔的尺度范围就是,第层金字塔的第一幅图像由上层塔中尺度下的下采样的到,下采样比例为0.5.

最终的尺度金字塔图像如下:
在这里插入图片描述

,2.高斯差分金字塔(DOG)
现在已经将图像变到尺度空间了,希望在这个空间找到比较显著的点,即变化明显的点,也就是说在图像逐渐模糊的过程中引起你注意的点,这个点突不突出可以通过尺度轴上变化趋势来体现,即尺度轴上的梯度极值。

在尺度轴上计算梯度就是图像沿着尺度轴差分呗
在这里插入图片描述
将相邻的两个高斯空间的图像相减就得到了DoG的响应图像。
在这里插入图片描述
3.关键点搜索和定位
关键点搜索
为了寻找尺度空间的极值点,每个像素点要和其图像域(同一尺度空间)和尺度域(相邻的尺度空间)的所有相邻点进行比较,当其大于(或者小于)所有相邻点时,该点就是极值点。如下图所示,中间的检测点要和其所在图像的3×3邻域8个像素点,以及其相邻的上下两层的3×3领域18个像素点,共26个像素点进行比较。
在这里插入图片描述

关键点的精确定位
这些候选关键点是DOG空间的局部极值点,而且这些极值点均为离散的点,精确定位极值点的一种方法是,对尺度空间DoG函数进行曲线拟合,计算其极值点,从而实现关键点的精确定位。

在这里插入图片描述
在这里插入图片描述
4.消除边界响应
在这里插入图片描述
5.生成特征描述
在完成关键点的梯度计算后,使用直方图统计邻域内像素的梯度和方向。

sift_12.png
为了保证特征矢量的旋转不变性,要以特征点为中心,在附近邻域内将坐标轴旋转θ角度,即将坐标轴旋转为特征点的主方向。

在这里插入图片描述
旋转之后的主方向为中心取8x8的窗口,求每个像素的梯度幅值和方向,箭头方向代表梯度方向,长度代表梯度幅值,然后利用高斯窗口对其进行加权运算,最后在每个4x4的小块上绘制8个方向的梯度直方图,计算每个梯度方向的累加值,即可形成一个种子点,即每个特征的由4个种子点组成,每个种子点有8个方向的向量信息。

在这里插入图片描述
论文中建议对每个关键点使用4x4共16个种子点来描述,这样一个关键点就会产生128维的SIFT特征向量。
在这里插入图片描述

二、SIFT特征提取与检索的实验与分析

2.1针对自己所处的环境,拍摄多张图片,构造出一个小的数据集

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

2.2 实现数据集中,每张图片的SIFT特征提取,并展示特征点

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分析:对上述15张图进行检测,发现同一个建筑物,在不同尺度下,标记出来的点大部分相同,连细节部分都几乎相同,说明SIFT算法具有尺度不变性,且对于局部特征的提取较为稳定。由上面15张图分析,可以看到相同建筑物在不同尺度、亮度、旋转变化的拍摄下得出的图片检测出的特征点大致相同。说明SIFT,具有旋转不变性、尺度不变性、亮度不变性,噪声等图片的影响也具有一定的稳定性。但缺点在于,从时间效率 上SIFT特征提取和检测消耗了大量的时间,毕竟要进行大量的采样卷积等操作,虽然提取的精度较高,但是耗费的时间也相对长,希望日后可以对其进行优化。

SIFT算法和Harris角点检测算法比较:SIFT特征提取和检测算法提取到的特征点明显多于Harris角点检测,Harris特征点提取的精度低和效率不高,运算慢。SIFT算法运用高斯图像金字塔和高斯差分金字塔之后再检测极值,而Harris角点只是对原图进行角点检测和变化,Harris特征点检测存在角点信息丢失与偏移的现象。

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *
from PCV.localdescriptors import sift
from PCV.localdescriptors import harris

# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)

imname = 'C:/Users/mangowu/Desktop/1/15.png'
im = array(Image.open(imname).convert(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值