《图像处理特征不变算子系列.docx》由会员分享,可在线阅读,更多相关《图像处理特征不变算子系列.docx(9页珍藏版)》请在第一文库网上搜索。
1、图像处理特征不变算子系列之DoG算子(五)时间 2022-09-12 00:24:07 CSDN 博客原文图像处理特征不变算子系列之DG算子(五)在前面分别介绍/ :图像处理特征不变算子系列之Moravec算子(一)、图像处理特征不变算子系列之Harris算子(二)、图像处理特征不变算子系列之SUSAN算子(三)和图像处理特征不变算子系列之FAST算子(四)o今日我们将介绍此外一个特征检测算子DoG算子,DoG算子是由Lowe D.G.提出的,对噪声、尺度、仿射变化和旋转等具有很强的鲁棒性,能够供应更丰富的局部特征信息,本文将对DoG算子进行具体地分析。在开头介绍DoG之前,有必要对尺度空间有
2、肯定的了解。尺度空间最早是由TonyLindeberg提出的,并不断的进展和完善。日常生活中,我们自觉或不自觉的在使用尺度的概念。举个我们个人自觉的经受,当我们读学校的时候,同学间相互询问来自哪个组;当我们读中学的时候,同学们相互询问自哪个村;当我们读高中的时候,同学们相互询问来自哪个镇;当读高校的时候,同学们相互询问来自哪个省?这里的组、村、镇、省就是我们不自觉使用的尺寸。还有一个例子,当我们打开google地图的时候,随着鼠标的滚动,地图会由五大洲渐渐定位到我国-省一市一区一街道办等,这也是尺度的表现。1)尺度空间在尺度空间中,尺度越大图像就越模糊,尺度空间中各尺度图像的模糊程度渐渐变大,
3、能够模拟目标由远及近人对目标的感知过程。那为什么要争论尺度空间呢?由于在用机器视觉系统分析未知场景时,机器并不知道图像中物体的尺度,只有通过对图像的多尺度描述,才能获得对物体感知的最佳尺度。假如在不同尺度匕对输入的图像都能检测到相同的关键点特征,那么在不同尺度下也可以实现关键点的匹配,从而实现关键点的尺度不变特性。尺度空间描述的就是图像在不同尺度下的描述,假如对尺度空间有爱好,请参考TonyLindeberg 的论文:Scale-Space02)金字塔多辨别率经常有人会将DoG与图像金字塔弄混,从而导致对SIFT算法第一步构造DoG不甚理解。这里首先介绍下金字塔多辨别率。金字塔是早起图像多尺度
4、的表示形式,图像金字塔一般包括2个步骤,分别是使用低通滤波平滑图像;对图像进行降采样(也即图像缩小为原来的1/4,长宽高缩小为1/2),从而得到一系列尺寸缩小的图像金字塔的构造如下所示:图像金字塔也正如其名,是以一个降采样的形式来表示图像的多辨别率,类似一个金字塔外形。3)高斯平滑滤波高斯核是唯一可以产生多尺度空间的核,细节分析可以参考: Scale-space theory: A basic tool for analysing structures at different scales。一个图像的尺度空间L(x,y,),定义为原始图像I(x,y)与一个可变尺度的2维高斯函数G(x,y,o
5、)卷积运算。二维空间高斯函数:-1 厂(工一不产+-必)”G】亏呻(三)尺度空间表示为:L(x5ys) = G(xz v)*Z(xsj)高斯模版是圆对称的,且卷积的结果使原始像素值有最大的权重,距离中心越远的相邻像素值权重也越小。高斯模糊另一个重要的性质就是线性可分,使用二维矩阵变换的高斯模糊可以通过在水平和竖直方向各进行一维高斯矩阵变换相加得到O4)多尺度与多辨别率尺度空间表达和金字塔多辨别率表达之间最大的不同是:(1)尺度空间表达是由不同高斯核平滑卷积得到,在全部尺度上有相同的辨别率;(2)金字塔多辨别率表达每层辨别率削减固定比率。所以,金字塔多辨别率生成较快,且占用存储空间少;而.多尺度
6、表达随着尺度参数的增加冗余信息也变多。多尺度表达的优点在于图像的局部特征可以用简洁的形式在不同尺度上描述;而金字塔表达没有理论基础,难以分析图像局部特征。5)拉普拉斯金字塔结合尺度空间表达和金字塔多辨别率表达,就是在使用尺度空间时使用金字塔表示,在计算机视觉中最出名莫过于拉普拉斯金字塔。对于拉普拉斯不清晰的可以参考:。这里简洁介绍下介绍下高斯拉普拉斯金字塔。拉普拉斯金字塔顾名思义就是通过对图像进行拉普拉斯操作,然后进行一个降采样的过程。具体来说就是:原始图像作为金字塔的底层,也即0层,称为g,对0层图像g进行进行拉普拉斯金操作,得到第一层图像gi;接着对第一层图像进行拉普拉斯操作,得到其次层图
7、像g2,依次类推,并进行一个降采样,如此构造高斯金字塔。这里只是做简洁的介绍,假如还要了解更多细节信息,请参考论文: The Laplacian pyramid as a compact image code。6) DoG金字塔DoG (Difference of Gaussian)其实是对高斯拉普拉斯LoG的近似,在某一尺度上的特征检测可以通过对两个相邻高斯尺度空间的图像相减,得到DoG的响应值图像D(x,y,)o具体来说:(1)分别对原图进行相邻尺度的高斯滤波对原图的高斯滤波表示如下:g(%y) = G.(y) *f(%y)9式工=G。,y) * f(jy)将上面滤波得到的两幅图像gi和g
8、2相减得到:g(z,y)-gz,y) = G%*(,y)-G%*f(r,y) = (G%-G%)* 工,y) = DoGtf(,y)假如将该公式进行简化写(SIFT中的写法),则变成如下:D(x9 yz ) = (G(x, y, k)- G(x, y ) 0 Z(x y)=L(x,y, k) -Z(x y, )为了得到DoG图像,首先要构造高斯金字塔,高斯金字塔在多辨别率金字塔的基础上加入了高斯滤波,也就是对金字塔每层图像采纳不同的参数sigma进行了高斯卷积,使得金字塔的每层有多张图片组成为一个Octave,每组有多张(也叫层interval)图像。在SIFT算子中,许多人对Octave和I
9、nterval不太了解,现在应当清晰了吧(每个Octave是由同一大小的图像,经过不同sigma高斯滤波得至J的,而Interval则表示的是同一个sigma高斯滤波的图像)。此外,降采样时,金字塔上边一组图像的第一张图像(最底层的一张)是由前一组(金字塔下面一组)图像的倒数第三张隔点采样得到,图像表示如下:void SIFT:buildGaussianPyramid( const Mat& base, vectorpyrj int nctaves ) constvector sig(nOctaveLayers + 3);pyrresize(nOctaves*(nOctaveLayers +
10、3);/ precompute Gaussian sigmas using the following formuLa:/ sigma_totaLA2 = sigma-i2 + sigma_i-l2sig0 = sigma;double k =pov( 2., 1. / nOctaveLayers );for( int i=1; i nOctaveLayers + 3; i+ )doublesig_prev = pow(k, (double)(i-l)*sigmajdoublesig_total = sig_prev*k;sigi = std:sqrt(sig_total*sig_total
11、- sig_prev*sig_prev);for( int o = 0; o nOctaves; o+ )for( int i = 0; i nOctaveLayers + 3; i+ )Mat& dst = pyro*(nOctaveLayers +3)+ i;if ( o = 0 & i = )dst = base;/ base of new octave is haLved image from end of previous octaveelse if( i = 0 )(const Mat& src = pyr(o-l)*(nOctaveLayers +3)+nOctaveLayers
12、;resize(src dst, Size(src.cols2j src.rovs2)j0, 0, INTER_NEAREST);)else(const Mat& src = pyro*(nOctaveLayers + 3) + i-1;GaussianBlur(src, dst, Size(), sigisigi);)高斯金字塔构造完成后,就可以求DoG,如图所示:4 lGaussianG3ussia (DOG)opencv中实现的DoG的代码为:void SIFT:buildDoGPyramid( const vector& gpyrj vector& dogpyr ) constint
13、nctaves = (int)gpyrsize()(OctaveLayers + 3);dogpyr.resize( Octaves*(nOctaveLayers + 2);for( int o = 0; o nOctaves; o+ )for( int i = 0;i nOctaveLayers + 2; i+ )const Mat& srcl = gpyro*(nOctaveLayers +3)+ i;const Mat& src2 = gpyro*(nOctaveLayers + 3) + i +1;Mat& dst = dogpyro*(nOctaveLayers + 2)+ i;subtract(src2j srcl, dstj noArray()j DataType:type);7)依据DoG求角点理论:三维图中的最大值和最小值点是角点,如图所示:X标记当前像素点,绿色的圈标记邻接像素点,用这个方式,最多检测相邻尺度的26个像素点。假如它是全部邻接像素点的最大值或最小值点,则X被标记为特征点,如此依次进行,则可以完成图像的特征点提取。更多信息请参考:1、DoG (Difference of Gaussian)角点检测:2、SIFT原理与源码分析:DoG尺度空间构造:作者:kezunhai出处:欢迎转载或共享,但请务必声明文章出处。