图像特征提取之DoG算子

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Aoulun/article/details/79379609

DoGDifference of Gaussian)算法主要用于角点的检测,在SIFT算法中,也要用到DoG算法。所以,DoG可以是一个基本的算法。受限于专业特点,知识结构,以及实际应用场合,本文并不会去详细的推导DoG算法的合理性,更多的偏重于算法的实现过程。本文也不会贴代码,因为算法的过程说明白了,按照算法的过程逻辑一步一步的编写代码是很容易的事情(并不要求去优化等等)。


1、合理性

高斯滤波的作用就是把一些细节给过滤掉(低通),而角点又是一些比较显而易见的点,一般角点处的对比度都跟其周围的像素点有明显的区别。通过高斯滤波,使得图像变得平滑,但是角点处,由于其对比度明显,并不能很好的被平滑点,从而被保留下来。但是呢,数字图像在成像时,并能使得角点处只有一个像素,有可能是几个像素,而大多数的时候,我们只需要在这个很小的领域内的一个角点,那么找到领域的极值来代表角点,也就显得合理了。(既然在高斯平滑滤波时,这些点都保留了下来,那么说明都可以作为角点,但是,最具代表性的是谁呢?显然,极值点是可以的。)

2、实现过程

1)读取原始图像img

2)对原始图像img在相同核大小,不同标准差下做高斯滤波,例如分别为sigma1,sigma2,sigma3,sigma4做高斯滤波得到图像G1,G2,G3,G4;

3)对相邻的滤波后的图像做差值,得到差值图像D1=G2-G1,D2=G3-G2,D3=G4-G3

4)对于中间的一副差值图像D2,遍历图中所有的点,对于每一点D2(i,j)做如下的操作

4-1)在图D2中这个点D2ij一定的领域内,例如3*3的范围内,以及D1D3中这个点D2ij)对应的相同位置处的点D1ij)和 D3ij)的相同领域内,求点D2ij)是否为极值点(极大值或极小值),如果为极值点,则标记为角点。如下图所示。

4-2)至于高斯核的选择,优点麻烦,选不好就把很多不是角点的点也搞成角点了。一般都是经验值。





猜你喜欢

转载自blog.csdn.net/Aoulun/article/details/79379609
今日推荐