找回密码
 注册
Simdroid-非首页
查看: 61|回复: 0

八方向链码程序chaincode8求讲解

[复制链接]
发表于 2014-6-5 09:41:21 | 显示全部楼层 |阅读模式 来自 福建福州
function out=chaincode8(image)
%功能:实现8连通链码
%输入: 二值图像
%输出:链码的结果
n=[0 1;-1 1;-1 0;-1 -1;0 -1;1 -1;1 0;1 1];
%设置标志
flag=1;
%初始输出的链码串为空
cc=[];
%找到起始点
[x y]=find(image==1);
x=min(x);
imx=image(x,:);
y=find(imx==1, 1 );
first=[x y];
dir=7;
while flag==1
          tt=zeros(1,8);
         newdir=mod(dir+7-mod(dir,2),8);
          for i=0:7
              j=mod(newdir+i,8)+1;
              tt(i+1)=image(x+n(j,1),y+n(j,2)); % tt是什么
          end

    d=find(tt==1, 1 );
          dir=mod(newdir+d-1,8);
          %找到下一个像素点的方向码
    cc=[cc,dir];
    x=x+n(dir+1,1);y=y+n(dir+1,2);
    %判别链码的结束标志
    if x==first(1)&&y==first(2)
        flag=0;
    end
end
out=cc;

红色部分的程序是怎么实现找到下一个像素的?



我尝试用image=[0 0 0 0 0 0;0 1 0 0 0 0;0 1 1 0 0 0;0 0 1 0 0 0;0 0 0 1 0 0;0 0 0 0 0 0];进行调试输出的链码out有误
out =

     6     7     7     3     2     3
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-7-3 06:51 , Processed in 0.025216 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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