查看原文
其他

基于SURF算法相似图像相对位置的寻找

By: 刘攀华 智能算法 2021-09-10


例如以下两个相似证件的模板,若以其中一幅图像为模板,并给出相应的位置,可以给出其他相似图像进行定位相对应的位置,如下图所示,其中除了标题和样式一样,内容确是不同的,这个时候就可以利用SURF进行特征点匹配。


先说说SURF算法:

一、积分图像

积分图像的概念是由Viola和Jones提出的。积分图像中任意一点(i,j)的值为原图像左上角到任意点(i,j)相应的对焦区域的灰度值的总和,其数学公式如下图所示:


那么,当我们想要计算图片一个区域的积分,就只需计算这个区域的四个顶点在积分图像里的值,便可以通过2步加法和2步减法计算得出,其数学公式如下:



二、Hession矩阵探测器

1、斑点检测

斑点:与周围有着颜色和灰度差别的区域。

在一个一维信号中,让它和高斯二阶导数进行卷积,也就是拉普拉斯变换,那么在信号的边缘处就会出现过零点,如下图所示:


高斯拉普拉斯Log探测器的响应值就是在衡量图像的相似性,如下图是一个图像的高斯拉普拉斯变换的三维图和灰度图显示,在图像中的斑点尺寸与高斯拉普拉斯函数的形状趋于一致时,图像的拉普拉斯响应抵达最大。


Hession矩阵就是利用二阶微分来进行斑点检测,其矩阵如下:


2、Hession矩阵与盒子滤波器

在图像中的Hession矩阵如下:

它们的三维图和灰度图如下所示:


由此,我们把模板(图像中的区域)与图像的卷积运算转化为盒子滤波器的运算,如下图:

3、hession矩阵行列式的简化

当我们用sigma = 1.2.的高斯二阶微分滤波,模板尺寸为9X9最小的尺度空间值对图像进行滤波和斑点检测,最终简化式如下,这是SURF论文里面Hession响应值计算公式:


另外,响应值还要根据滤波器大小进行归一化处理,以保证任意大小滤波器的F范数是统一的。0.9^2是滤波器响应的相关权重w是为了平衡Hessian行列式的表示式。这是为了保持高斯核与近似高斯核的一致性。理论上来说对于不同的σ的值和对应尺寸的模板尺寸,w值是不同的,但为了简化起见,可以认为它是同一个常数。 使用近似的Hessian矩阵行列式来表示图像中某一点x处的斑点响应值,遍历图像中所有的像元点,便形成了在某一尺度下琉璃点检测的响应图像。使用不同的模板尺寸,便形成了多尺度斑点响应的金字塔图像,利用这一金字塔图像,就可以进行斑点响应极值点的搜索。

三、3D非极大值抑制

1、尺度金字塔构造

在SURF中,采用不断增大盒子滤波器模板尺寸与积分图像求取Hession矩阵响应,然后在响应图像上采用3D非极大值抑制,求取各种不同尺度的斑点,以下是两种不同的金字塔,SURF的金字塔属于第二种:


SURF中采用9X9尺寸的滤波器作为起始滤波器,之后的滤波器尺寸可由以下公式计算得出:

octave、interval在公式中都是从1开始,也就是当第0组第0层时,在公式中octave= 1, interval = 1。

2、为了在图像及不同尺寸中定位兴趣点,我们用了3×3×3邻域非最大值抑制:

所有小于预设极值的取值都被丢弃,增加极值使检测到的特征点数量减少,最终只有几个特征最强点会被检测出来。检测过程中使用与该尺度层图像解析度相对应大小的滤波器进行检测,以3×3的滤波器为例,该尺度层图像中9个像素点之一图2检测特征点与自身尺度层中其余8个点和在其之上及之下的两个尺度层9个点进行比较,共26个点,图中标记‘x’的像素点的特征值若大于周围像素则可确定该点为该区域的特征点。

3、局部极大值精确定位

采用3维线性插值法得到亚像素级的特征点,同时也去掉那些值小于一定阈值的点。

四、特征点描述符

1、特征点方向分配

以特征点为中心,计算半径为6s(S为特征点所在的尺度值)的邻域内的点在x、y方向的Haar小波(Haar小波边长取4s)响应,Harr小波

模板如图所示:


计算出图像在哈尔小波的x和y方向上的响应值之后,对两个值进行因子为2S的高斯加权,加权后的值分别表示在水平和垂直方向上的方向分量。

Harr特征值反应了图像灰度变化的情况,那么这个主方向就是描述那些灰度变化特别剧烈的区域方向。

接着,以特征点为中心,张角为π/3的扇形滑动,计算窗口内的Harr小波响应值dx、dy的累加:

扇形窗口的滑动如图所示:


2、特征点特征矢量的生成

以特征点为中心,沿主方向将20SX20S的图像划分为4X4个子块,每个子块用尺寸2S的Harr模板进行响应值计算,并统计每个子块中
这样就有4X4X4=64维的特征数据。如下图所示:


在计算这个矩形区域时并不是先把它旋转到主方向,而是先计算出每一个点的Harr响应值dx、dy并高斯加权处理后,把dx、dy进行旋转变换,计算公式如下:

在OpenSURF的实现源码中采用的是另外一种方式,通过点旋转公式,把点旋转到主方向上并进行最近邻插值的对应点,公式如下:


五、匹配

对其中64维数据进行欧式距离运算,在这里我们对两个相似图像进行前80个最接近特征点匹配,如下图所示,可以看出,一部分的匹配点是正确的,但是仍然有一部分的特征点是匹配错误的,这里需要进行特征点筛选。


这里筛选采用两个特征值,如下图所示,每两两特征点之间有个向量,向量与向量的夹角作为一个特征值,向量与向量之间的模比值作为另一个特征值,就可以进行聚类筛选:


筛选结果如下所示:


 



免责声明:本文系网络转载。版权归原作者所有。如涉及版权,请联系删除!




: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存