• 大小: 166KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-07
  • 语言: Matlab
  • 标签: 图像拼接  

资源简介

参考《图像拼接的改进算法_方贤勇》论文及《最佳缝合线算法(图像融合)》博客整理出的缝合线拼图算法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


评论

共有 条评论