资源简介
参考《图像拼接的改进算法_方贤勇》论文及《最佳缝合线算法(图像融合)》博客整理出的缝合线拼图算法Matlab源代码,内含论文、源代码、测试图像及博客地址,调试可用,需自行修改其中文件路径
代码片段和文件信息
clear;clc;
% 水平(左右)拼接
% dataA=imread(‘D:\YlinkSample\IDT\testpicture\test2\1003.JPG‘);
% dataB=imread(‘D:\YlinkSample\IDT\testpicture\test2\1002.JPG‘);
% rdata1 = -26; %重合区域宽度
dataA=imread(‘D:\YlinkSample\IDT\testpicture\1.JPG‘);
dataB=imread(‘D:\YlinkSample\IDT\testpicture\2.JPG‘);
rdata1 = -76; %重合区域宽度
A=rgb2gray(dataA);
B=rgb2gray(dataB);
%《图像拼接的改进算法》最佳缝合线算法 图像融合
%先根据之前得到的H矩阵计算重叠区域Rect
[HW~]=size(A);
L = W+1+rdata1;
R = W;
n = -rdata1;
%最终融合图的大小
Y=2*W+rdata1+1; %融合后图像宽度
D=zeros(HY-13); %融合后的图像
path=zeros(Hn);%放路径的矩阵,存放列数序号(1-n)
%放强度值 每条路径的强度值strength=color^2+geometry
color=zeros(1n);
geometry=zeros(1n);
strength1=zeros(1n);
strength2=zeros(1n);
Axdao = 0;
Aydao = 0;
Bxdao = 0;
Bydao = 0;
%计算第一行即初始化的强度值
i = 1;
for j=L:R
y=j-L+1; %对应B图的列数
color(y)=A(ij)-B(iy); %灰度值之差
if(j==L)
Bxdao=B(iy+1)+2*B(i+1y+1);
Bydao=B(i+1y)+2*B(i+1y+1);
Axdao=A(ij+1)+2*A(i+1j+1)-A(ij-1)-2*A(i+1j-1);
Aydao=2*A(i+1j-1)+A(i+1j)+2*A(i+1j+1);
elseif(j==R)
Axdao= -A(ij-1)-2*A(i+1j-1);
Aydao=2*A(i+1j-1)+A(i+1j);
Bxdao=B(iy+1)+2*B(i+1y+1)-B(iy-1)-2*B(i+1y-1);
Bydao=2*B(i+1y-1)+B(i+1y)+2*B(i+1y+1);
else
Axdao=A(ij+1)+2*A(i+1j+1)-A(ij-1)-2*A(i+1j-1);
Bxdao=B(iy+1)+2*B(i+1y+1)-B(iy-1)-2*B(i+1y-1);
Aydao=2*A(i+1j-1)+A(i+1j)+2*A(i+1j+1);
Bydao=2*B(i+1y-1)+B(i+1y)+2*B(i+1y+1);
end
geometry(y)=(Axdao-Bxdao)*(Aydao-Bydao);
strength1(y)=color(y)^2+geometry(y);
path(1y)=y;
end
color = color .* 0;
geometry = geometry .* 0;
%开始扩展 向下一行 从第二行到倒数第二行 最后一行单独拿出来 像第一行一样 因为它的结构差值geometry不好算
for i=2:H-1
%先把下一行的强度值全部计算出来 到时候需要比较哪三个就拿出哪三个
for j=L:R
x = i;
y = j-L+1;
color(y) = A(ij) - B(xy);
if(j==L)
Axdao=2*A(i-1j+1)+A(ij+1)+2*A(i+1j+1)-2*A(i-1j-1)-A(ij-1)-2*A(i+1j-1);
Bxdao=2*B(x-1y+1)+B(xy+1)+2*B(x+1y+1);
Aydao=-2*A(i-1j-1)-A(i-1j)-2*A(i-1j+1)+2*A(i+1j-1)+A(i+1j)+2*A(i+1j+1);
Bydao=-B(x-1y)-2*B(x-1y+1)+B(x+1y)+2*B(x+1y+1);
elseif(j==R)
Axdao=-2*A(i-1j-1)-A(ij-1)-2*A(i+1j-1);
Bxdao=2*B(x-1y+1)+B(xy+1)+2*B(x+1y+1)-2*B(x-1y-1)-B(xy-1)-2*B(x+1y-1);
Aydao=-2*A(i-1j-1)-A(i-1j)+2*A(i+1j-1)+A(i+1j);
Bydao=-2*B(x-1y-1)-B(x-1y)-2*B(x-1y+1)+2*B(x+1y-1)+B(x+1y)+2*B(x+1y+1);
else
Axdao=2*A(i-1j+1)+A(ij+1)+2*A(i+1j+1)-2*A(i-1j-1)-A(ij-1)-2*A(i+1j-1);
Bxdao=2*B(x-1y+1)+B(xy+1)+2*B(x+1y+1)-2*B(x-1y-1)-B(xy-1)-2*B(x+1y-1);
Aydao=-2*A(i-1j-1)-A(i-1j)-2*A(i-1j+1)+2*A(i+1j-1)+A(i+1j)+2*A(i+1j+1);
Bydao=-2*B(x-1y-1)-B(x-1y)-2*B(x-1y+1)+2*B(x+1y-1)+B(x+1y)+2*B(x+1y+1);
end
geometry(y)=(Axdao-Bxdao)*(Aydao-Bydao);
strength2(y)=color(y)^2+geometry(y);
e
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 18509 2018-04-08 14:29 图像最佳缝合线拼接算法\1.jpg
文件 5045 2018-04-08 14:29 图像最佳缝合线拼接算法\2.jpg
文件 8723 2018-04-13 13:48 图像最佳缝合线拼接算法\bestlinefusionhorizontal.m
文件 59 2018-04-13 13:50 图像最佳缝合线拼接算法\参考博客.txt
文件 189438 2018-03-28 15:59 图像最佳缝合线拼接算法\图像拼接的改进算法_方贤勇.caj
目录 0 2018-04-13 13:50 图像最佳缝合线拼接算法
----------- --------- ---------- ----- ----
221774 6
- 上一篇:基于小波变换的多尺度图像边缘检测
- 下一篇:曲线及其包络线的画法 matlab
相关资源
- sift+ransac图像拼接matlab代码
- 基于sift算法的图像拼接
- SIFT算法的图像拼接
- 图像SURF特征提取(SURF extraction)
- sift 图像拼接
- sift幅图像拼接的程序
- matlab实现多幅图像拼接
- imgmosaic
- imageMosaic 基于Harris角点检测的图像拼
- Sequence-cylindrical-stitching 图像序列柱面
- mosaic 国外网站上找到的一个图像拼接
- harris-match harris角点检测
- computer_vision_work 自动图像拼接
- imMosaic 基于sift的图像拼接算法
- vlfeat-0.9.9
- Wavelet-transform 本程序利用小波变换的
- sift-match MATLAB工具sift实现图像拼接
- immosaic-by--sift 基于sift的图像特征点提
-
image-stitch-ba
sed-sift 经过测试的基于 - image-stitching--matlab 改进的图像拼接算
- 图像拼接matlab程序
- 基于图像融合的图像拼接
- 用matlab实现图像拼接
评论
共有 条评论