整理仅自用

无标识定位校准

SIFT

应用场景:尺度不变特征转换(SIFT, Scale Invariant Feature Transform)算法是为了解决图片的匹配问题,想要从图像中提取一种对图像的大小和旋转变化保持鲁棒的特征,从而实现匹配。这一算法的灵感也十分的直观:人眼观测两张图片是否匹配时会注意到其中的典型区域(特征点部分),如果我们能够实现这一特征点区域提取过程,再对所提取到的区域进行描述就可以实现特征匹配了。

1.建立高斯差分金字塔

高斯卷积核和高斯模糊:高斯卷积核如下图所示,他是一个中间大,四周小的矩阵。把这个卷积核拿去对原图进行卷积,得到的图像就是高斯模糊后的结果。可以理解成每一个像素都取周边像素的平均值

在这里插入图片描述

高斯卷积核每个位置的参数如下式所示,其中xy表示的是具体位置的坐标,故只要确定了σ的值就可以得到高斯卷积核的的所有参数,σ越大模糊效果越明显。img

差分:差分就是将高斯模糊前的图片与模糊后的图片直接相减,得到的结果就是差分。可以预见,高斯模糊是把原图进行平滑操作,那两者相减的结果就是原图中不平滑的部分,是比较突出的部分,也就是特征处。

高斯金字塔:高斯金字塔模仿的是图像的不同的尺度,模仿人眼的近大远小,通过高斯模糊加隔点取值进行降采样(类似于神经网络中的池化操作)。首先将原图像作为最底层图像,然后利用高斯核对其进行卷积,然后对卷积后的图像进行下采样得到上一层图像,又将此图像作为输入,重复卷积和下采样操作得到更上一层图像,反复迭代多次,形成一个金字塔形的图像数据结构,即高斯金字塔。

高斯差分金字塔

1、对原图进行不同σ的高斯模糊,得到一组图片,称为一个Octave。每个Octave内的图片尺寸相同,高斯参数σ不同; 2、对第一个Octave内的图片进行差分操作,得到一组差分数据; 3、再对第一个Octave中最上面的图片进行高斯降采样,得到尺寸稍小的图片,同样对该图片进行不同σ的高斯模糊,得到一组尺寸稍小的图片。这一组图片与上一组相比,尺寸不同。 4、再对第二个Octave内的图片进行差分操作,得到一组差分数据; 5、重复操作,建立起高斯差分金字塔。 img

假设,共有 n 张图片需要提取特征,原图大小是 M * N,每个Octave中有 S 层不同 σ 的图片,整个金字塔共有 O 组,原则上,SO 都是可以自己随便设定的,但是SIFT论文中给出的参考值如下:

img

对于参数第一组的第一层σ0,它的取值为固定值:

 对于系数k有:

img

第一组第二层:σ = k * σ0, 第一组第三层,σ = k * k * σ0, 第一组第四层,σ = k * k * k * σ0

以此类推,得到整个第一组的σ,每组总共有n+3层,取第n+1层(就是倒数第三层)的参数 k ^ n 作为下一组第一层的σ,并不断重复这个过程。

img

2.极值点的精确定位

Sift的第二个步骤主要是在图像中找到那些尺度不变性的特征点,这些特征点是由高斯金字塔中的图像通过一系列的筛选规则得到的。共计需要进行5次筛选。

1.阈值检测

由于我们不能保证图片就是完全没有噪声的,所以在推选之前我们要排除一些对比度比较低的点,这些点很不稳定,容易受到干扰,本着宁缺毋滥的原则,先把不稳定因子排除。论文中阈值的设定如下式所示。

2.极值检测

对图像中的每一个点进行遍历,判断每一个点是否是极值 ,判断的标准是,把这个点与相邻的层,上下层9+9=18个点和同一层中8个点,共18+8=26个点进行比较,看这个点是否是最大值,还是最小值,若是,则保留下来,当做候选人

img

3.极值点的精确定位

在sift算法中,把尺度看成连续的,而在前面的极值检测中,只是把它当成离散点来计算,于是极值点的检测就会出现下图的情况,所以在本轮的筛选中,需要找到精确的极值点。其实这里的精确点的位置,是一个亚像素级别的概念,比如一个数的个位十位百位都确定了,要更加精细的去找这个数的小数点后的那个数据,就用插值来计算。

img

对检测到的极值点img进行二阶泰勒展开,以此来拟合三维二次函数。

 

 

  1. 当求出来的偏移量很大的时候,这时就表明精确的极值点已经完全偏离了离散比较得到的极值点,这时候就得删除它

  2. 当求出来的偏移量大于0.5,(只要xy,和σ任意一个量大于0.5)就表示这个插值点偏离了插值中心,这时候就应该改变插值中心,继续使用上述的泰勒展开进行拟合,一直到插值偏移量小于0.5,(指的是三个量的偏移都小于0.5。

  3. 第二个点中,它的解决办法是一个迭代的过程,当然它也有自己的迭代停止条件,但是如果要迭代很多次才能找到那个精确点,那说明这个点本身就有自己不稳定的成分,(与问题1类似)所以就要设置一个迭代次数的限制阈值,超过这个阈值,迭代停止!

4.低对比度筛选

上一步的检测中我们得到了精确点的位置了,也得到精确点的值了,但是精确点的值如果很小,那很大程度上是不稳定的点,于是这些精确点应该删除。

论文中T=0.04,n表示处于该组的第几层。

5.边缘效应消除

在高斯函数中,它存在比较强的边缘效应,而当特征点在边缘的时候,这些点就会很不稳定,(1是因为这些点比较难定位,他们具有定位的歧义性。2是因为这些点容易受到噪声的干扰而变得不稳定)所以应该删除这些边缘效应很强的点。高斯函数欠佳的峰值点附近,在横跨边缘的方向上有较大的主曲率,而在垂直于边缘的方向上具有比较小的主曲率,这个主曲率可以通过Hessian矩阵得到。

3.确定关键点主方向

图像中一个像素点往往是不具有说服力的,同样的一个特征点像素值它也不能代表着具有统计意义的图像特性。所以它的角度确定同样需要统计它周围的像素的一些特征,从而得到我们所需要的角度。每个特征点它有自己所在的高斯图像,也拥有自己的尺度信息,为了关联这些的特性,我们统计的是以该特征点为圆心,以该特征点所在的高斯图像的尺度的1.5倍为半径,该圆内所有的像素作为该特征点的角度的统计支持者。

4.构建关键点描述符

描述符是一个128维的向量,首先将关键点周围的区域旋转到主方向上(使其特征具有旋转不变性)。

 然后把关键点周围的区域划分为4x4个子区域,每个子区域内包含8个方向上梯度的幅值和幅度。

 特征点周围区域的范围:

论文中m取值为3,代表的是每个小区域的边长,d表示的横竖各有多少个小区域。

FLANN匹配

FLANN 使open CV实现的快速最近邻逼近搜索函数库,包含着随机k-d树算法、优先搜索k-means树算法、层次聚类树算法,可以自适应选取最快的算法完成匹配。

单应性矩阵

单应性矩阵不只是描述同一平面的像素点之间的关系,而是同一个平面在任意坐标系之间都可以建立单应性变换关系,比如影像坐标系与影像坐标系之间,世界坐标系和影像坐标系之间,如下图所示:

img

推理公式

假设两张图像中的对应点对齐次坐标为(x',y',1)和(x,y,1),单应矩阵H定义为:

则有:

矩阵展开后有3个等式,将第3个等式代入前两个等式中可得:

因为单应性矩阵的自由度为8,可以使用4个点来得到单应性矩阵。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值