sift算法—C实现

sift算法—C实现

ID:40576704

大小:1.90 MB

页数:51页

时间:2019-08-04

sift算法—C实现_第1页
sift算法—C实现_第2页
sift算法—C实现_第3页
sift算法—C实现_第4页
sift算法—C实现_第5页
资源描述:

《sift算法—C实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、引言:   在我写的关于sift算法的前倆篇文章里头,已经对sift算法有了初步的介绍:九、图像特征提取与匹配之SIFT算法,而后在:九(续)、sift算法的编译与实现里,我也简单记录下了如何利用opencv,gsl等库编译运行sift程序。   但据一朋友表示,是否能用c语言实现sift算法,同时,尽量不用到opencv,gsl等第三方库之类的东西。而且,RobHess维护的sift库,也不好懂,有的人根本搞不懂是怎么一回事。   那么本文,就教你如何利用c语言一步一步实现sift算法,同时,你也就能真正明白sift算法到底是怎么一回事了。   ok,先看一下,

2、本程序最终运行的效果图,sift算法分为五个步骤(下文详述),对应以下第二--第六幅图: sift算法的步骤   要实现一个算法,首先要完全理解这个算法的原理或思想。咱们先来简单了解下,什么叫sift算法:   sift,尺度不变特征转换,是一种电脑视觉的算法用来侦测与描述影像中的局部性特征,它在空间尺度中寻找极值点,并提取出其位置、尺度、旋转不变量,此算法由DavidLowe在1999年所发表,2004年完善总结。   所谓,Sift算法就是用不同尺度(标准差)的高斯函数对图像进行平滑,然后比较平滑后图像的差别,差别大的像素就是特征明显的点。   以下是sift

3、算法的五个步骤:   一、建立图像尺度空间(或高斯金字塔),并检测极值点   首先建立尺度空间,要使得图像具有尺度空间不变形,就要建立尺度空间,sift算法采用了高斯函数来建立尺度空间,高斯函数公式为:       G(x,y,e)=[1/2*pi*e^2]*exp[-(x^2+y^2)/2e^2]   上述公式G(x,y,e),即为尺度可变高斯函数。   而,一个图像的尺度空间L(x,y,e),定义为原始图像I(x,y)与上述的一个可变尺度的2维高斯函数G(x,y,e)卷积运算。   即,原始影像I(x,y)在不同的尺度e下,与高斯函数G(x,y,e)进行卷积,

4、得到L(x,y,e),如下:       L(x,y,e)=G(x,y,e)*I(x,y)   以上的(x,y)是空间坐标,e,是尺度坐标,或尺度空间因子,e的大小决定平滑程度,大尺度对应图像的概貌特征,小尺度对应图像的细节特征。大的e值对应粗糙尺度(低分辨率),反之,对应精细尺度(高分辨率)。   尺度,受e这个参数控制的表示。而不同的L(x,y,e)就构成了尺度空间,具体计算的时候,即使连续的高斯函数,都被离散为(一般为奇数大小)(2*k+1)*(2*k+1)矩阵,来和数字图像进行卷积运算。   随着e的变化,建立起不同的尺度空间,或称之为建立起图像的高斯金字

5、塔。   但,像上述L(x,y,e)=G(x,y,e)*I(x,y)的操作,在进行高斯卷积时,整个图像就要遍历所有的像素进行卷积(边界点除外),于此,就造成了时间和空间上的很大浪费。   为了更有效的在尺度空间检测到稳定的关键点,也为了缩小时间和空间复杂度,对上述的操作作了一个改建:即,提出了高斯差分尺度空间(DOGscale-space)。利用不同尺度的高斯差分与原始图像I(x,y)相乘,卷积生成。       D(x,y,e)=((G(x,y,ke)-G(x,y,e))*I(x,y)                             =L(x,y,ke)

6、-L(x,y,e)   DOG算子计算简单,是尺度归一化的LOG算子的近似。   ok,耐心点,咱们再来总结一下上述内容:   1、高斯卷积   在组建一组尺度空间后,再组建下一组尺度空间,对上一组尺度空间的最后一幅图像进行二分之一采样,得到下一组尺度空间的第一幅图像,然后进行像建立第一组尺度空间那样的操作,得到第二组尺度空间,公式定义为        L(x,y,e)=G(x,y,e)*I(x,y)   图像金字塔的构建:图像金字塔共O组,每组有S层,下一组的图像由上一组图像降采样得到,效果图,图A如下(左为上一组,右为下一组):   2、高斯差分   在尺度空

7、间建立完毕后,为了能够找到稳定的关键点,采用高斯差分的方法来检测那些在局部位置的极值点,即采用俩个相邻的尺度中的图像相减,即公式定义为:       D(x,y,e)=((G(x,y,ke)-G(x,y,e))*I(x,y)                =L(x,y,ke)-L(x,y,e)   效果图,图B:   SIFT的精妙之处在于采用图像金字塔的方法解决这一问题,我们可以把两幅图像想象成是连续的,分别以它们作为底面作四棱锥,就像金字塔,那么每一个截面与原图像相似,那么两个金字塔中必然会有包含大小一致的物体的无穷个截面,但应用只能是离散的,所以我们只能构造

8、有限层,层

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。