声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2098|回复: 3

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

[复制链接]
发表于 2007-5-24 13:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
这是一个图像拼接的程序,用相位相关的方法作的。但是结果出来不是已经哦拼接好的图像,是一个三维的曲线图,不知道这个过程中哪一步错了?哪位高手帮忙看一下指正一下,非常感谢啦。
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));  %求最大值
[m,n]=find(c==c_max);  %求最大值处的位置
figure,mesh(abs(c))                 %创建拼接图,绘二维网线
[heighth,width]=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
回复
分享到:

使用道具 举报

发表于 2007-5-24 14:45 | 显示全部楼层
原帖由 wangwangla 于 2007-5-24 13:27 发表
这是一个图像拼接的程序,用相位相关的方法作的。但是结果出来不是已经哦拼接好的图像,是一个三维的曲线图,不知道这个过程中哪一步错了?哪位高手帮忙看一下指正一下,非常感谢啦。
a3=imread('a.jpg');%读入 ...


请先看看 置顶贴:聚宝盆
 楼主| 发表于 2007-5-29 16:48 | 显示全部楼层
我看过了,这是第二次发了,帮我看一下哈
发表于 2007-5-29 16:50 | 显示全部楼层
原帖由 wangwangla 于 2007-5-29 16:48 发表
我看过了,这是第二次发了,帮我看一下哈


如果这是你看过的结果,我建议你就以下问题再仔细看看:

1. 你不提供出错信息,如何得知你程序哪里出错了?
2. 你不提供数据文件,别人如何帮你测试?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-12 11:01 , Processed in 0.054605 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表