- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
地极值点提供了最稳定地特征
的极值点提供了最稳定的特征 去除边界响应原理 SIFT算法分析 第一步 构建高斯金字塔以及高斯差分金字塔 说明: 原始图像的尺度sigma_pre可以认为是0.5,如果原始图像在构建高斯金字塔之前它的尺寸加倍,则加倍后的原始图像的尺度为2*0.5。加倍的方式采用的是立方插值法。 高斯金字塔第0组第0层的尺度为sigma=1.6,它是由原始图像经过高斯模糊后得到的,高斯模糊函数的高斯核sigma_diff*sigma_diff=sigma*sigma-sigma_pre*sigma_pre.依照这个原理可以计算出产生其它几层图像所需要的高斯核函数。 金字塔的组数由下面的式子确定:octvs=log(min(长,宽))/log(2)-2. 下一组高斯金字塔的第0层图像由前一组高斯金字塔中尺度为2sigma的图像经过最邻近插值得到。采用的是降采样。 高斯差分金字塔由高斯金字塔上的相邻两幅图像直接相减得到。 说明:极值点寻找的范围: 差分金字塔中的第0层和最上面的一层排除 中间的差分图像中,像素的横坐标或者纵坐标中任一个值与图像边界值之间的差值小于5的点排除 步骤1:进行像素的预筛选 凡是像素值的绝对值小于(0.5 * contr_thr / intvls)的点排除,程序中contr_thr=0.04, intvls=3. 步骤2:定位极值点的坐标和所在的尺度 每一个采样点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。如上图所示,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。 步骤3:对极值点进行泰勒展开,将它的坐标和尺度进行精确定位 假设极值点的坐标为X=(x,y,intvl),此时这三个方向上的坐标都为整数 根据泰勒公式可以计算出以极值点为原点相对于极值点在行,列以及层数上的偏移量 ,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没有进入预先排除的区域则对这个点进行泰勒展开(否则该点被放弃,然后分析下一个极值点),直到找到一个点的偏移满足在三个方向上都小于0.5为止,然后记下点X_N及其偏移值,此时极值点为X_N。但是这个重新确定极值点并重新定位的操作只能循环5次。若超过5次仍无法满足1)的要求,这该极值点被放弃,然后分析下一个点。 利用公式 确定精确定位后的极值点的像素值,进行对比度的检测。若像素值满足大于contr_thr / intvls(程序中为0.04/3),则该点才能最终确定为极值点。 步骤4:去除边界影响点 计算极值点处的Hessian矩阵H 。 如果点满足 则该点保留,否则该点将会被排除。 为最大特征值, 为最小的特征值 ,在程序中r=10. 计算公式:scl_octv = sigma * pow( 2.0, intvl / intvls ),式中: scl_octv 为关键点的尺度, intvl为关键点在高斯差分金字塔中所处于的层数,程序中sigma=1.6,intvls=3 第四步 计算关键点的主方向 步骤1:计算梯度方向直方图 计算梯度方向直方图的范围为以关键点为原点,偏移为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内的所有点的加权后的梯度相加。 程
文档评论(0)