帮我看下matlab程序的问题

a=imread('ghoto.jpg');
bw2=im2bw(a,0.5);
bw2=edge(bw2,'sobel');
imshow(bw2)
bw=zeros(768,1024);
for ii=1:768
for jj=1:1024
if bw2(ii,jj)==1
bw(ii,jj)=1;
else bw(ii,jj)=0;
end
end
end
ayd=0;
A1=0;
A2=0;
A3=0;
A4=0;
for i=139:246
for j=267:377
if bw(i,j)==1
for ia=i:246
for ja=j:267
if bw(ia,ja)==1
ayd2=((i-ia)^2+(j-ja)^2)
i
j
ia
ja
end
end
end
end
end
end
end
for i2=139:246
for j2=267:377
if bw(i2,j2)==1&(i2-A1).^2+(j2-A2).^2==(i2-A3).^2+(j2-A4).^2
i2
j2
end
end
end
A1
A2
A3
A4
运行完了后,ja还是空的
程序中很多累赘,看的人辛苦了

08年建模A题吧,用我的程序,以相图中椭圆最长弦为圆心,程序如下:
I = imread('clip_image','jpg'); % 读入图片
J = edge(I,'prewitt'); % 边缘提取
K=bwlabel(J,8); %连同区域分区
%共5个园,可以分成五个区,各○边缘点数量为Xi
X1=find(K==1);
X2=find(K==2);
X3=find(K==3);
X4=find(K==4);
X5=find(K==5);
%各○边缘点坐标
%第2个点
for i=1:length(X1)
x1(i)=ceil(X1(i)/281); %横坐标
y1(i)=X1(i)-(x1(i)-1)*281; %纵坐标
end
R=0;
for i=1:length(X1)
for j=i+1:length(X1)
r=sqrt((x1(i)-x1(j))^2+(y1(i)-y1(j))^2);
if r>R
R=r;m=i;n=j; %记录坐标点
end
end
end
d1=[(x1(m)+x1(n))/2;(y1(m)+y1(n))/2] ; %%中心坐标

%第2个点
for i=1:length(X2)
x2(i)=ceil(X2(i)/281); %横坐标
y2(i)=X2(i)-(x2(i)-1)*281; %纵坐标
end
R=0;
for i=1:length(X2)
for j=i+1:length(X2)
r=sqrt((x2(i)-x2(j))^2+(y2(i)-y2(j))^2);
if r>R
R=r;m=i;n=j; %记录坐标点
end
end
end
d2=[(x2(m)+x2(n))/2;(y2(m)+y2(n))/2] ; %%中心坐标

%第3个点
for i=1:length(X3)
x3(i)=ceil(X3(i)/281); %横坐标
y3(i)=X3(i)-(x3(i)-1)*281; %纵坐标
end
R=0;
for i=1:length(X3)
for j=i+1:length(X3)
r=sqrt((x3(i)-x3(j))^2+(y3(i)-y3(j))^2);
if r>R
R=r;m=i;n=j; %记录坐标点
end
end
end
d3=[(x3(m)+x3(n))/2;(y3(m)+y3(n))/2] ; %%中心坐标

%第4个点
for i=1:length(X4)
x4(i)=ceil(X4(i)/281); %横坐标
y4(i)=X4(i)-(x4(i)-1)*281; %纵坐标
end
R=0;
for i=1:length(X4)
for j=i+1:length(X4)
r=sqrt((x4(i)-x4(j))^2+(y4(i)-y4(j))^2);
if r>R
R=r;m=i;n=j; %记录坐标点
end
end
end
R4=R;
d4=[(x4(m)+x4(n))/2;(y4(m)+y4(n))/2] ; %%中心坐标

%第5个点
for i=1:length(X5)
x5(i)=ceil(X5(i)/281); %横坐标
y5(i)=X5(i)-(x5(i)-1)*281; %纵坐标
end
R=0;
for i=1:length(X5)
for j=i+1:length(X5)
r=sqrt((x5(i)-x5(j))^2+(y5(i)-y5(j))^2);
if r>R
R=r;m=i;n=j; %记录坐标点
end
end
end
R5=R;
d5=[(x5(m)+x5(n))/2;(y5(m)+y5(n))/2] ; %%中心坐标

Di=[d1,d2,d3,d4,d5] %坐标中心在左上角
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-09-20
你确定你的程序能运行么?
edge的输入参数格式应该是:double, single, uint8, uint16, uint32, int8, int16, int32
但是你的bw2=im2bw(a,0.5); 返回的是Logical
相似回答