概述
本例程主要实现:两张有重叠部分的PNG格式文件,通过灰度化、角点检测、特征点提取、NCC算法匹配和RANSAC算法滤除误匹配完成两张图像的拼接并保存拼接图像,最后并将拼接后的图像平均大小裁剪成两部分。
本例程完整源码和素材下载
目录
主函数
效果一
效果二
主函数:
clc;
clear all;
close all
% img1 = imread('projection_a.png');%读取拼接图1
% img2 = imread('projection_b.png');%读取拼接图2
img1 = imread('GDUT_left.png');%读取拼接图1
img2 = imread('GDUT_right.png');%读取拼接图2
img1Dup=rgb2gray(img1);%拼接图1灰度化
figure,imshow(img1Dup);%显示灰度化的拼接图1
title('Input gray image1');
img1Dup=double(img1Dup);%转化为double数据类型
img2Dup=rgb2gray(img2);%拼接图2灰度化
figure,imshow(img2Dup);%显示灰度化的拼接图2
title('Input gray image2');
img2Dup=double(img2Dup);%转化为double数据类型
%使用Harris角点检测进行特征点提取
[locs1] = Harris(img1Dup);%locs1存储拼接图1检测到的角点坐标
[locs2] = Harris(img2Dup);%locs2存储拼接图2检测到的角点坐标
%利用NCC匹配算法去寻找两幅图像之间的对应关系(相似程度),匹配好的特征点用红色线进行连接
%NCC(Normalized cross correlation)--归一化的交叉相关性
%matchLoc1存储拼接图1进行NCC匹配好的角点坐标
%matchLoc2存储拼接图2进行NCC匹配好的角点坐标
[matchLoc1 matchLoc2] =
findCorr(img1Dup,img2Dup,locs1, locs2);
%使用RANSAC算法滤除误匹配,寻找一个最佳单应矩阵H,RANSAC滤除匹配后特征点用蓝色线进行连接
%单应矩阵:同一平面下的点,从一个图像到另一个图像的投影映射
%RANSAC(RANdom SAmple Consensus)--随机抽样一致
%inlierIdx为RANSAC算法滤除误匹配后留下的特征点索引
[H inlierIdx] = estHomography(img1Dup,img2Dup,matchLoc2',matchLoc1');
%打印单应矩阵H
H
%拼接图1和拼接图2进行拼接,得到拼接后图像imgout
[imgout]=warpTheImage(H,img1,img2);
%显示拼接后的图像
figure,imshow(uint8(imgout));
title('final mosaicing image');
%保存拼接后的图片
imwrite(uint8(imgout), 'projection_mosaicing.jpg', 'jpg');
%拼接图像裁剪为两部分
imgout_gray = rgb2gray(imgout);
[m,n]=size(imgout_gray);
X1 = imcrop(imgout,[0,0,n/2,m]);
X2 = imcrop(imgout,[n/2,0,n/2,m]);
figure,imshow(X1);%显示裁剪图1
figure,imshow(X2);%显示裁剪图2
效果一:
输入的两张png图像(注:jpgbmp等格式图像本例程也适用):
拼接图1(GDUT_left.png) 拼接图2(GDUT_right.png)
NCC匹配算法去寻找两幅图像之间的对应关系(相似程度):
使用RANSAC算法滤除误匹配,寻找一个最佳单应矩阵H,RANSAC滤除匹配后特征点用蓝色线进行连接:
拼接图1和拼接图2进行拼接后图像:
拼接后图像裁剪为大小相同的两部分:
效果二:
换一份图像进行测试:
输入的两张png图像(注:jpgbmp等格式图像本例程也适用):
拼接图1(HAUT_left.png) 拼接图2(HAUT_right.png)
NCC匹配算法去寻找两幅图像之间的对应关系(相似程度):
使用RANSAC算法滤除误匹配,寻找一个最佳单应矩阵H,RANSAC滤除匹配后特征点用蓝色线进行连接:
拼接图1和拼接图2进行拼接后图像:
拼接后图像裁剪为大小相同的两部分:
最后
以上就是不安大炮为你收集整理的基于Matlab的图像拼接与拼接后平均剪切实现的全部内容,希望文章能够帮你解决基于Matlab的图像拼接与拼接后平均剪切实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复