在了解图像特征匹配前,需要清楚,两张照片之所以能匹配得上,是因为其特征点的相似度较高。
“图像尺度空间”。
“看”一张照片时,会从不同的“尺度”去观测照片,尺度越大,图像越模糊。
“尺度”就是二维高斯函数当中的σ值,一张照片与二维高斯函数卷积后得到很多张不同σ值的高斯图像,这就好比你用人眼从不同距离去观测那张照片。所有不同尺度下的图像,构成单个原始图像的尺度空间“图像尺度空间表达”就是图像在所有尺度下的描述。
尺度是自然客观存在的,不是主观创造的。高斯卷积只是表现尺度空间的一种形式。
2.
――高斯卷积
高斯核是唯一可以产生多尺度空间的核。在低通滤波中,高斯平滑滤波无论是时域还是频域都十分有效。我们都知道,高斯函数具有五个重要性质:
(1)二维高斯具有旋转对称性;
(4)()
L(x,y,σ) ,I(x,y)2G(x,y,σ)
表达式
“尺度空间表达”,它们有什么关系呢?
“尺度空间表达”指的是不同高斯核所平滑后的图片的不同表达“看”上去的样子就不一样了。高斯核越大,图片“看”上去就越模糊。
那么,图片的模糊与找特征点有关系吗?
计算机没有主观意识去识别哪里是特征点,它能做的,只是分辨出变化率最快的点RGB0~255
――降采样
这个比较好理解,若对一张图片进行降采样,其像素点就会减少,图片尺寸也会随之变小。那么给人的感觉就好比一个金字塔。
所谓图像金字塔化:就是先进行图像平滑,再进行降采样,根据降采样率不同,所得到一系列尺寸逐渐减小的图像。
两种表达的不同之处在于:
“尺度空间表达”在所有尺度上具有相同分辨率,而“图像金字塔化”在每层的表达上分辨率都会减少固定比率。
“图像金字塔化”处理速度快,占用存储空间小,而“尺度空间表达”刚好相反。
3.LOGLaplassian of Gaussian
前面提出的那种表达,各有各的优势:
1
2
LOG其步骤是:先将照片降采样,得到了不同分辨率下的图像金字塔。再对每层图像进行高斯卷积。这样一来,原本的图像金字塔每层只有一张图像,而卷积后,每层又增加了多张不同模糊程度下的照片。
LOGLOGDOG
4.DOGDifference of Gaussian
DOG
LOGDOG
5.DOG
寻找极值点
DOGDOG
899
极值点精确定位
而我们找的的极值点是在高斯差分之后所确定下来的,那么其是属于离散空间上的点,不一定是真正意义上的极值点。
我们需用用到一条曲线来进行拟合。
去除边缘影响
“误以为”是特征值。
仔细分析,边缘区域在纵向上灰度值突变很大,但是横向上的变化就很小了。好比你用黑笔在白纸上水平画一条线段。垂直方向看,黑色线与白色区域的突变很大。但是水平方向看时,黑色线上某一点的水平临近点仍然是黑点,突变程度非常小。
Hessian矩阵,海塞矩阵是用来求曲率的,可以以函数的二阶偏导为元素,构成一个2x2的矩阵H:
Harris角点检测算法。
6.
经过Harris角点检测算法之后,基本上得到了我们想要的精确特征点了。接下来我们就要求它们的方向。
DOG 31.5幅角和幅值,得到:
458
取幅值最高的方向为主方向。有的时候,会出现第二峰值,因为有较多的关键点是多方向的。如果直接把它忽略掉不加以考虑的话,最后对匹配精度的影响还是蛮大的。
80辅方向。
7.
确定描述子采样区域
SIFT
接下来的要做的是:关键点的描述,即用一组向量将关键点描述出来。
SIFI h(x, y,胃)
生成描述子
为了(m(Bp+ 1)√2 x mσ(Bp+ 1)√2)θx同的方向。
旋转公式如下:
在特征点附近邻域图像梯度的位置和方向旋转后,mσBp x mσBpBp X Bpmσ
到这里,有人会问:旋转过程中,中图和右图为什么每个像素点的方向不一样?其实,你要明确一点,你所选的小区域,是关键点旋转后的小区域,右图的区域跟旋转前的区域不一样了,右图是重新选取得区域,但是区域大小没变。
接下来就是生成特征匹配点。
80掳~36084584X4Bp X Bp4X4X8=128128SIFTmσBp/2较小的权重,以防止错误的匹配。
在最后,对特征向量进行归一化处理,去除光照变化的影响。
8.
OpencvFeatureDetector
SIFT