的极值点提供了最稳的特征_第1页
的极值点提供了最稳的特征_第2页
的极值点提供了最稳的特征_第3页
的极值点提供了最稳的特征_第4页
的极值点提供了最稳的特征_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 的极值点提供了最稳定的特征 ),(),(),(yxiyxgyxl22( , ,)( ( , ,)( , ,)( , )( , ,)( , ,)(1)d x yg x y kg x yi x yl x y kl x ykg22()g返回高斯金字塔的原理解析高斯金字塔的原理解析2)(22/21),(22yxeyxg角点:在任何方向上像素值的变化很大的点角点的确定方法(moravec 算子):0:将要判断的点置于一个3*3或5*5的图像块的中心,如下图用红色的线环绕的图像块。1:将红色的框朝8个方向移动一格,得到蓝色的框(下图为向右上角移动)。2:将红色的框和蓝色的框的相同坐标值的点的像素值相减,

2、并求平方和,可以得到8个值。3:将8个值中的最小的值作为角点像素的变化值。角点像素值表:求出每一个像素点的角点像素变化值,在局部图像块中,该值最大的点为角点。边界上未被噪声影响边界上被噪声影响harris 算子将moravec 算子做了两个推广:1:用像素的变化梯度代替像素值相减并引入高斯窗函数。2:推广出了一个公式这样可以计算任意方向上的像素值变化,而不在是8个固定的方向。22,( , )2:u vvx yaucuvbvuuv mva cwhere mcb 由于像素点的变化值与矩阵m有关,因此可以用矩阵m的特征值来判断某个点是否是角点。221 212( , )det()(trace()det

3、()trace()constantc x ymkmmabcmabkk =( 0.04 , 0.06 )之间的数返回sift算法分析第一步 构建高斯金字塔以及高斯差分金字塔 doubles for the next octavek=2(1/intvls), intlvs+3 images for each octave2k22k2k2k22k2k2k2k2k2k高斯金字塔的原理解析说明:原始图像的尺度sigma_pre可以认为是0.5,如果原始图像在构建高斯金字塔之前它的尺寸加倍,则加倍后的原始图像的尺度为2*0.5。加倍的方式采用的是立方插值法。高斯金字塔第0组第0层的尺度为sigma=1.6

4、,它是由原始图像经过高斯模糊后得到的,高斯模糊函数的高斯核sigma_diff*sigma_diff=sigma*sigma-sigma_pre*sigma_pre.依照这个原理可以计算出产生其它几层图像所需要的高斯核函数。金字塔的组数由下面的式子确定:octvs=log(min(长,宽)/log(2)-2.下一组高斯金字塔的第0层图像由前一组高斯金字塔中尺度为2sigma的图像经过最邻近插值得到。采用的是降采样。高斯差分金字塔由高斯金字塔上的相邻两幅图像直接相减得到。第二步 寻找差分金字塔上的极值点说明:极值点寻找的范围:差分金字塔中的第0层和最上面的一层排除中间的差分图像中,像素的横坐标或

5、者纵坐标中任一个值与图像边界值之间的差值小于5的点排除返回步骤1:进行像素的预筛选凡是像素值的绝对值小于(0.5 * contr_thr / intvls)的点排除,程序中contr_thr=0.04, intvls=3.步骤2:定位极值点的坐标和所在的尺度每一个采样点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。如上图所示,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的92个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。 步骤3:对极值点进行泰勒展开,将它的坐标和尺度进行精确定位假设极值点的坐标为x=(x,y,intvl),此时这三个方向上的

6、坐标都为整数根据泰勒公式可以计算出以极值点为原点相对于极值点在行,列以及层数上的偏移量 ,x_p=(x_p,y_p,intvl_p).定位准则:1)如果三个方向上的偏移量都小于0.5,则认为该点就是极值点。此时可以结束对这个极值点的分析,保存该点的偏移信息,然后分析该极值点的像素值是否满足要求。2)如果某一方向上的偏移量大于等于0.5,如假设x_p=0.5,则采取下述方式进行处理:先将x_p四舍五入得到一个整数intx,然后将intx与x相加得到一个新的极值点x_n=(x+intx,y,intvl),如果点x_n没有进入预先排除的区域则对这个点进行泰勒展开(否则该点被放弃,然后分析下一个极值点

7、),直到找到一个点的偏移满足在三个方向上都小于0.5为止,然后记下点x_n及其偏移值,此时极值点为x_n。但是这个重新确定极值点并重新定位的操作只能循环5次。若超过5次仍无法满足1)的要求,这该极值点被放弃,然后分析下一个点。利用公式 确定精确定位后的极值点的像素值,进行对比度的检测。若像素值满足大于contr_thr / intvls(程序中为0.04/3),则该点才能最终确定为极值点。212_ddp 1(_)_2tddpdxp步骤4:去除边界影响点 计算极值点处的hessian矩阵h 。如果点满足则该点保留,否则该点将会被排除。 为最大特征值, 为最小的特征值 ,在程序中r=10.xxxy

8、xyyyddhdd没有进行任何处理的关键点去除了低对比度之后的点去除边界相应的点第三步 计算关键的尺度计算公式:scl_octv = sigma * pow( 2.0, intvl / intvls ),式中: scl_octv 为关键点的尺度, intvl为关键点在高斯差分金字塔中所处于的层数,程序中sigma=1.6,intvls=32k22k2k2k22k2k2k2k2k2k doubles for the next octavek=2(1/intvls), intlvs+3 images for each octave第四步 计算关键点的主方向步骤1:计算梯度方向直方图计算梯度方向直方

9、图的范围为以关键点为原点,偏移为rad的正方形区域,rad=四舍五入(3*1.5* scl_octv )梯度加权系数w的确定: w = exp( -( i*i + j*j )/exp_denom ),i,j为像素点在以关键点为原点的坐标系中所处的坐标值,范围为(-rad,rad); exp_denom=2.0 * (1.5* scl_octv ) * (1.5* scl_octv )每个像素点的梯度值都必须乘以该点所对应的高斯权,这样才能得到最终的梯度值。然后根据计算出的梯度方向确定该点处于梯度方向直方图的哪个bin,并将处于该bin内的所有点的加权后的梯度相加。程序中bin为8个。步骤2:对

10、得到的梯度方向直方图进行高斯平滑程序中使用的高斯平滑矩阵为(0.25,0.5,0.25)步骤3:找出梯度方向直方图的8个bin的峰值max步骤4:确定关键点的主方向用插值的方法确定主方向在8个bin中所处的亚位置bin_f。bin_f=i + interp_hist_peak( histl, histi, histr ),histl, histi, histr 为在8个bin中处于位置l,i,r的直方图的高度。 histl, histi, histr 必须满足式子histi histl & histi histr & histi = 0.8*max,而且这三个直方图必须挨在一起

11、才有能求主方向。插值算法:#define interp_hist_peak( l, c, r ) ( 0.5 * (l)-(r) / (l) - 2.0*(c) + (r) )利用插值算出主方向在8个bin中所处的亚位置bin_f,就可以算出主方向了同一个点可以有多个主方向,此时相当于在这个位置有多个关键点第五步 计算描述字步骤1:确定每一组梯度方向直方图占据的图像宽度,以及描述字计算所需要的图像宽度每一组梯度方向直方图占据的图像宽度hist_width = 1.5 * scl_octv描述字计算所需要的图像宽度 radius = hist_width * sqrt(2) * ( d + 1.

12、0 ) * 0.5 + 0.5步骤2:确定哪一些点在旋转关键点的梯度方向后处于描述字计算的范围 并计算其梯度建立以关键点为原点的坐标系对横纵坐标都处于(- radius , radius )范围内的点计算它们在旋转关键点的梯度方向后的坐标,计算式子为:c_rot = ( j * cos_t - i * sin_t ) r_rot = ( j * sin_t + i * cos_t )利用式子c_rot = c_rot / hist_width; r_rot = r_rot / hist_width;来计算该像素点在梯度方向直方图数组中的坐标(仍将关键点作为原点)利用式子rbin = r_rot

13、 + d / 2 - 0.5; cbin = c_rot + d / 2 - 0.5;进行坐标变换,将梯度方向直方图数组的左上角定为原点,重新计算该像素点在梯度方向直方图数组中的坐标若rbin -1.0 & rbin -1.0 & cbin d;成立,则说明该点在描述字计算的范围内,对于旋转以后处于描述字计算范围内的点,以它在旋转以前的图像中的坐标来计算其梯度,但是,高斯权是以旋转以后在梯度方向直方图数组中的的坐标来计算的: w = exp( -(c_rot * c_rot + r_rot * r_rot) / exp_denom ); exp_denom = d * d * 0.5;在程序中d=4,表示有4*4个梯度方向直方图对于梯度的方向要减去旋转的方向,然后计算出在梯度方向直方图中的bin值obin 。最终可以得到该梯度的坐标为histrbin cbin obin步骤3:利用插值法将一个点的梯度分配到多组梯度方向直方图中的多个bin,即分配到histrbin cbin obin对梯度方向直方图组的列进行插值得到对梯度方向直方图组的列进行插值得到对梯度方向直方图组的行进行插值步骤4:对得到的128个梯度值进行处理将用三位数组存储的梯度转换为用一维数组存储,程序中的一维数组的大小为128对128

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论