SIFT实现步骤,以及算法程序

简要笔记


1、创建高斯金字塔第-1组

1.1、将源图片转成灰度图

1.2、进行上采样

1.3、求该层σ(sigma)

1.4、进行高斯模糊


计算金字塔层数(根据图像长、宽中最小的那个)


2、创建高斯金字塔

2.1、高斯模糊卷积

2.2、降采样


3、求高斯差分金字塔(用DoG)

两个高斯金字塔层相减生成一个差分金字塔。G(x, y, σ)已由上面算出

G(x, y, σ1)- G(x, y, σ2)


4、极值点检测

4.1、排除阈值小的点

4.2、判断是否是极值

4.3、修正极值点,删除不稳定的点


5、计算尺度,图像特征缩放


6、关键点方向分配

6.1、计算梯度直方图

6.2、对直方图做两次高斯平滑

6.3、求直方图中的主方向

6.4、使求出的主方向更加精确


7、关键点描述

7.1、确定描述子所需的邻域区域

7.2、(依据6求出的方向)旋转坐标轴,使具有旋转不变性

7.3、将邻域内采样点分配到旋转后的对应子区域,确认种子点

7.4、计算种子点的8个方向的梯度信息

7.5、将8个方向的梯度变为特征向量

7.6、归一化消除光照影响

7.7、描述子门限,再次归一化


C++实现代码参照:http://blog.csdn.net/maweifei/article/details/58227605#

c实现代码(未验证):http://biancheng.dnbcw.net/c/329596.html

具体原理讲解:http://blog.csdn.net/sinat_28537111/article/details/55212261?fps=1&locationNum=3



  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SIFT(尺度不变特征变换)算法是一种用于图像特征提取和匹配的经典算法。VS(Visual Studio)是一种常用的集成开发环境。 要在VS中实现SIFT算法,我们需要按照以下步骤进行: 1. 创建一个新的项目:在VS中新建一个项目,选择合适的项目类型和模板。 2. 导入图像处理库:SIFT算法需要进行图像处理和特征提取,因此需要导入相关的图像处理库,如OpenCV。 3. 加载图像:使用图像处理库中的函数加载待处理的图像。 4. 运行SIFT算法:调用图像处理库中的SIFT函数,对加载的图像进行特征提取。 5. 提取特征点:从SIFT算法的输出中提取关键点和特征描述。这些特征点具有尺度不变性和旋转不变性。 6. 可视化特征点:使用图像处理库的绘图函数将提取的特征点可视化在原始图像上。 7. 匹配特征点:使用特征匹配算法,如最近邻算法,对不同图像中的特征点进行匹配。 8. 输出匹配结果:通过图像处理库的绘图函数将匹配的特征点可视化在两张图像上,以显示匹配的结果。 9. 运行和调试:运行程序并检查结果,如果需要,进行调试和优化。 10. 导出结果:将匹配结果导出为文件或在界面上展示。 总结而言,通过在VS中创建项目、导入图像处理库、加载图像、运行SIFT算法、提取特征点、可视化、匹配、输出结果以及运行和调试等步骤,我们可以在VS中实现SIFT算法,并获得图像的特征点和匹配结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值