我编了一个简单的小程序,不过点击run后软件没有任何反应,就跟没点run一样,然后再打开其他正确的m文件也一样没反应,谁知道这是为什么吗?

这是个简单的拼接程序,从第二幅图中选取一个特征窗口,然后跟第一幅图比较计算,最后拼接在一起。

a1=imread('he1.bmp');

a2=imread('he2.bmp');%读两幅需要拼接的图

[n1,m1]=size(a1);

[n2,m2]=size(a2);

size_y=min(n1,n2);

size_x=min(m1,m2);%对图进行裁剪

tic;%计时

x=a2(1:100,1:100);%选取了特征窗口

[x1,x2]=size(x);

i=1;

j=1;

min=2^32;

while(j<=size_y-x1)

while(i<=size_x-x2)

y=a1(j:j+x1-1,i:i+x2-1);

sub=x-y;

s=sum(sum(sub.*sub));

if(s

min=s;

aim_y=j;

aim_x=i;

end

i=i+x2;

end

i=1;

j=j+x1;

end

xx1=round(x1/2);

xx2=round(x2/2);

while(xx1>=1&xx2>=1)

for j=-1:1

for i=-1:1

try_x=aim_x+i*xx2;

try_y=aim_y+j*xx1;

if(try_x>0&try_x<=size_x-x2&try_y>0&try_y<=size_y-x1)

y=a1(try_y:try_y+x1-1,try_x:try_x+x2-1);

sub=x-y;

s=sum(sum(sub.*sub));

if(s

min=s;

aim_y=try_y;

aim_x=try_x;

end

end

end

end

xx1=round(xx1/2);

xx2=round(xx2/2);

end

width=size_x+aim_x;

high=size_y+aim_y;

z=ones(width,high)*255;

for(i=1:width)

for(j=1:high)

if(j<=aim_y&i<=size_x)

z(i,j)=a1(i,j);

end

if(j>aim_y&j<=size_y)

if(i<=size_x)

z(i,j)=a1(i,j);

else

z(i,j)=a2(i-aim_x,j-aim_y);

end

end

if(j>size_x&i>=aim_x)

z(i,j)=a2(i-aim_x,j-aim_y);

end

end

end

toc;%计时结束

imshow(z);

[本帖最后由 小小妖妖 于 2009-12-10 20:48 编辑]

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐