基于SIFT特征的全景图像拼接

本文介绍了基于SIFT特征的全景图像拼接步骤,包括图像的SIFT特征提取、利用k-d tree和BBF进行特征匹配、RANSAC算法筛选匹配点并计算变换矩阵,以及图像融合过程。通过SIFT特征和RANSAC算法,可以有效地处理图像拼接中的匹配和变换问题,实现无缝拼接。
摘要由CSDN通过智能技术生成
               

基于SIFT特征的全景图像拼接

分类: 计算机视觉/OpenCV   91人阅读  评论(0)  收藏  举报

主要分为以下几个步骤:

(1) 读入两张图片并分别提取SIFT特征

(2) 利用k-d tree和BBF算法进行特征匹配查找

(3) 利用RANSAC算法筛选匹配点并计算变换矩阵

(3) 图像融合


SIFT算法以及RANSAC算法都是利用的RobHess的SIFT源码,前三个步骤RobHess的源码中都有自带的示例。


(1) SIFT特征提取

直接调用RobHess源码中的sift_features()函数进行默认参数的SIFT特征提取,主要代码如下:

[cpp]  view plain copy
  1. img1_Feat = cvCloneImage(img1);//复制图1,深拷贝,用来画特征点  
  2. img2_Feat = cvCloneImage(img2);//复制图2,深拷贝,用来画特征点  
  3.   
  4. //默认提取的是LOWE格式的SIFT特征点  
  5. //提取并显示第1幅图片上的特征点  
  6. n1 = sift_features( img1, &feat1 );//检测图1中的SIFT特征点,n1是图1的特征点个数  
  7. export_features("feature1.txt",feat1,n1);//将特征向量数据写入到文件  
  8. draw_features( img1_Feat, feat1, n1 );//画出特征点  
  9. cvNamedWindow(IMG1_FEAT);//创建窗口  
  10. cvShowImage(IMG1_FEAT,img1_Feat);//显示  
  11.   
  12. //提取并显示第2幅图片上的特征点  
  13. n2 = sift_features( img2, &feat2 );//检测图2中的SIFT特征点,n2是图2的特征点个数  
  14. export_features("feature2.txt",feat2,n2);//将特征向量数据写入到文件  
  15. draw_features( img2_Feat, feat2, n2 );//画出特征点  
  16. cvNamedWindow(IMG2_FEAT);//创建窗口  
  17. cvShowImage(IMG2_FEAT,img2_Feat);//显示  
检测出的SIFT特征点如下:

                 


(2) 利用k-d tree和BBF算法进行特征匹配查找,并根据最近邻和次近邻距离比值进行初步筛选

也是调用RobHess源码中的函数,加上之后的一些筛选处理,主要代码如下:

[cpp]  view plain copy
  1. //根据图1的特征点集
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值