基于surf的图像拼接

step1:特征点检测
利用detectSURFFeatures函数检测SURF特征点,再利用extractFeatures函数提取特征点

%%%step1:特征点检测
img_1=rgb2gray(I1);%变成灰度图
img_2=rgb2gray(I2);%变成灰度图
imageSize=size(img_1);%求图像的大小
p1=detectSURFFeatures(img_1);%检测SURF特征点
p2=detectSURFFeatures(img_2);%检测SURF特征点
[img_1_Features, p1] = extractFeatures(img_1, p1);%使用64维向量表示特征描述子,特征点个数为行,每个都有64个特征
%第一个返回的参数即为每个特征点对应的特征描述子,第二个参数是特征点
[img_2_Features, p2] = extractFeatures(img_2, p2);

step2:提取两幅图像中相互匹配的特征点并将错误的点删除

boxPairs = matchFeatures(img_1_Features, img_2_Features);%特征描述子匹配,寻找相匹配的特征点
matchedimg1Points = p1(boxPairs(:, 1));%第二个参数:可以不加,因为其为n行1列的结构体数组
matchedimg2Points = p2(boxPairs(:, 2));
[tform, inlierimg2Points, inlierimg1Points] =estimateGeometricTransform(matchedimg2Points, matchedimg1Points, 'projective');%射影变换,tfrom映射点对1内点到点对2内点
%该函数使用随机样本一致性(RANSAC)算法的变体MSAC算法实现,去除误匹配点
%tform为变换矩阵
 figure;imshow(img_show);%并排显示两幅待拼接图像
showMatchedFeatures(I1, I2, inlierimg1Points, inlierimg2Points, 'montage');
title('显示特征匹配点');

%%%step3:创建来联系两幅图像的坐标转换矩阵,建立世界坐标系

Rfixed = imref2d(size(I1));%创建世界坐标系
[registered2, Rregistered] = imwarp(I2, tform);%根据转换矩阵将第2张图映射到I1的世界坐标中
% figure;imshow(registered2);
%[registered1, Rregistered1] = imwarp(I1, tform);
figure;
imshowpair(I1,Rfixed,registered2,Rregistered,'blend');%显示重复覆盖的图像以及差异
title('图像差异');
[xlim, ylim] = outputLimits(tform, [1 imageSize(2)], [1 imageSize(1)]);%输出坐标范围,由于两幅图像的坐标不一样,需要找到两幅图像的最大最小值
% 找到输出空间限制的最大最小值
xMin = min([1; xlim(:)]);%
xMax = max([imageSize(2); xlim(:)]);%
yMin = min([1; ylim(:)]);%
yMax = max([imageSize(1); ylim(:)]);%
% 计算拼接后图像的宽高
width  = round(xMax - xMin);
height = round(yMax - yMin);
%创建2D空间参考对象定义全景图尺寸
xLimits = [xMin xMax];
yLimits = [yMin yMax];
panoramaView = imref2d([height width ], xLimits, yLimits);%空间转换参数

step4:拼接融合图像,以创建的全景图作为容器,将第一幅和第二幅图分别放进去,并利用渐入渐出融合合并图像

在这里插入图片描述
在这里插入图片描述
代码加386114318述

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值