matlab实现图像的拼接,MATLAB实现图像拼接算法(求助)

毕设要用到MATLAB实现一个图像拼接算法,看了老师给的一个例子,对里面的很多代码的作用、用法、意义等都不懂,希望各位高手给点建议或者提供点资料~

下面是其中一个  .m  文件的代码~

A=imread('view1.bmp');

figure,imshow(A)

title('源图像A')

B=imread('view2.bmp');

[high,wid]=size(A);             %求出第一幅图像的长和宽(size 数组维数 )

A1=double(A);

B1=double(B);

B2=B1;

A2=A1;

sub_A=A1(high/2-39:high/2,3*wid/4:3*wid/4+39);

sub_A=A1(high/2-39:high/2,end-39:end);

sub_B1=B1(11:50,11:50);

mod1=sub_A-sub_B1;              %求出第一幅图像的固定两列的象素差值

mat1=sum(sum(mod1.*mod1));      %求出第一幅图像的两列的取出的所有象素的差的平方和

mat_best=mat1;

for x1=1:40:wid-20              %在水平方向上搜索间隔距离相等的两列的象素求其象素差值

for y1=1:40:high-40

sub_B=B1(y1:y1+39,x1:x1+39);

mod=sub_A-sub_B;

mat=sum(sum(mod.*mod));

if  mat<=mat_best

mat_best=mat;

xx=x1;               %定位到该搜索方向上最佳匹配所在的位置

yy=y1;

end

end

end

x=xx;

y=yy;

for x2=xx-30:xx+40              %在垂直方向上搜索间隔距离相等的两列的象素,求其象素差值

for y2=yy-20:yy+80

sub_B2=B1(y2:y2+39,x2:x2+39);

mod2=sub_A-sub_B2;

mat2=sum(sum(mod2.*mod2));

if mat2<=mat_best

mat_best=mat2;

x=x2;                %定位到该搜索方向上最佳匹配所在的位置

y=y2;

end

end

end

x=140;

[high2,wid2]=size(A2);

a1=A2(1:high2,wid-x+1:wid);

b1=B2(1:high2,1:x);

a=double(a1);

b=double(b1);

d1O=linspace(1,0,x);         %在1和0之间产生x行向量

d=1:high2;

d1=d1O';

[X1,y1]=meshgrid(d1,d);     %meshgrid   为三维图形生成XY矩阵

im1=a.*X1;

d20=linspace(0,1,x);

d2=d20';

[X2,y2]=meshgrid(d2,d);

im2=b.*X2;

im11=uint8(im1);

im22=uint8(im2);

im3=imadd(im11,im22);

a_b=imadd(im11,im22);

aa=A2(1:high2,1:wid-x);

bb=B2(1:high2,x:wid);

D2=[aa a_b bb];

D2=[aa(:,1:wid2-x) a_b bb];

imwrite(D2,'6.bmp');

[本帖最后由 mooni 于 2009-4-21 18:16 编辑]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值