wangwangla 发表于 2007-5-18 15:13

请教:这是一个图像拼接的程序,用相位相关的方法作的。

这是一个图像拼接的程序,用相位相关的方法作的。但是结果不对,不知道哪里错了?那位高手帮忙看一下。
a3=imread('a.jpg');%读入图像
a4=imread('b.jpg');
a1=a3(1:178,1:178);
a2=a4(51:228,51:228);
subplot(2,2,1),imshow(a1)
subplot(2,2,2),imshow(a2) %显示规定大小的图像
b1=a1(:,:,1); %取R分量
b2=a2(:,:,1);
g1=fft2(b1);%求FFT变换
g2=fft2(b2);
g2=conj(g2);
c=ifft2(g1.*g2/norm(g1.*g2));%求户功率谱,求平移量
c=abs(c);%求绝对值
c_max=max(max(c));%求最大值
=find(c==c_max);%求最大值处的位置
figure,mesh(abs(c))               %创建拼接图,绘二维网线
=size(a1);
mos_height=height+m-1;
mos_width=width+n-1;
a=uint8(255*ones(mos_height,mos_width))%全1数组
k=1;
for i=1:width               %融合
for j=1:heighth
    if a1(i,j)==a2(i+m,j+n)
         if i<k
             k=i;
       a(i,j)=0.5a1(i,j)+a2(i+m,j+n) %显示重叠部分
             l=j;
end
end
for i=1:width                     
for j=1:height                              
    if i>k and j<l
      a(i,j)=a1(i,j) %显示属于a1的部分
end
end
for i=1:width
for j=1:heighth
    if i<(k+m )and j>l
   a(i+m,j+n)=a2(i,j) %显示属于a2的部分
end
end
subplot(2,2,3),imshow(a)
toc

[ 本帖最后由 wangwangla 于 2007-5-18 15:15 编辑 ]

eight 发表于 2007-5-18 18:43

原帖由 wangwangla 于 2007-5-18 15:13 发表 http://www.chinavib.com/forum/images/common/back.gif
这是一个图像拼接的程序,用相位相关的方法作的。但是结果不对,不知道哪里错了?那位高手帮忙看一下。
a3=imread('a.jpg');%读入图像
a4=imread('b.jpg');
a1=a3(1:178,1:178);
a2=a4(51:228,51:228);
s ...


请参考 置顶贴:聚宝盆 把你的问题叙述清楚
页: [1]
查看完整版本: 请教:这是一个图像拼接的程序,用相位相关的方法作的。