程序255 发表于 2007-4-29 13:51

轮廓跟踪问题

=size(yy);   
U=zeros(m,n);
   
for i=1:m
    for j=1:n
      if yy(i,j)==255
         U(i,j)=yy(i,j);
            break;
            
      end;
    end;
end;
figure,imshow(U);
=size(yy);   
V=zeros(m,n);
   
for i=1:m
    for j=n:-1:1
      if yy(i,j)==255
         V(i,j)=yy(i,j);
            break;
            
      end;
    end;
end;
figure,imshow(V);
=size(yy);   
X=zeros(m,n);
   
for j=1:n
    for i=1:m
      if yy(i,j)==255
         X(i,j)=yy(i,j);
            break;
            
      end;
    end;
end;
figure,imshow(X);
=size(yy);   
Y=zeros(m,n);
for j=1:n
    for i=m:-1:1
      if yy(i,j)==255
         Y(i,j)=yy(i,j);
            break;
            
      end;
    end;
end;
figure,imshow(Y);
=size(R);   
ZZ=zeros(m,n);
ZZ=U+V+X+Y;
figure,imshow(ZZ);




这个程序提取用CCD 拍的图片的车辆轮廓很好以上是用数码相机拍的 比较大 可也应该能提取出轮廓线来啊

[ 本帖最后由 eight 于 2007-4-29 13:59 编辑 ]

eight 发表于 2007-4-29 13:59

原帖由 程序255 于 2007-4-29 13:51 发表 http://forum.vibunion.com/forum/images/common/back.gif
=size(yy);   
U=zeros(m,n);
   
for i=1:m
    for j=1:n
      if yy(i,j)==255
         U(i,j)=yy(i,j);
            break;
            
      end;
    end;
end;
figure,imsh ...


没看懂你的程序,建议以后发帖时叙述清楚你的问题。另外,程序运行的结果是不会错的,出错的话肯定是程序没有编写好,所以不要在标题上误导大家。

如果你想轮廓跟踪,则对于二值图象,直接用 bwboundaries 或者 bwtraceboundary 试试。实在不行就用内轮廓跟踪算法

[ 本帖最后由 eight 于 2007-4-29 14:02 编辑 ]

eight 发表于 2007-4-30 10:24

先在windows自带工具“画图”中把你的图片转换为二值(单色)图象,然后用以下语句:
>> A = imread('yy1.jpg');
>> B = bwboundaries(A);
>> C = B{1,1};
>> plot(C(:,2),C(:,1))
>> set(gca,'YDir','reverse')这是得到的结果:

程序255 发表于 2007-4-30 12:34

程序没有问题 是分辨率的问题

单相素边缘 我的电脑有的显示不出来 但是放大后 卡年相素值 轮廓就很完整
页: [1]
查看完整版本: 轮廓跟踪问题