链码 百科内容来自于: 百度百科

常用的链码按照中心像素点邻接方向个数的不同,分为4连通链码和8连通链码。4连通链码的邻接点有4个,分别在中心点的上、下、左和右。8连通链码比4连通链码增加了4个斜方向,因为任意一个像素周围均有8个邻接点,而8连通链码正好与像素点的实际情况相符,能够准确地描述中心像素点与其邻接点的信息。因此,8连通链码的使用相对较多。
算法:
·给每一个线段边界一个方向编码。
·有4-链码和8-链码两种编码方法。
·从起点开始,沿边界编码,至起点被重新碰到,结束一个对象的编码。
应用:
·用链码后,对象只要用1)起点坐标,2)周长(边界点数)3)链码,4)对象编号,就可以描述。
·链码一般用于一幅图像中有多个对象的情况,对单个对象不适用。
8连通边界的链码生成程序:
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=min(find(imx==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));
end
d=min(find(tt==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;
在Matlab图像处理工具箱中,提供了专门的bwlabel( )函数,对二值图像的进行连通分支标记(非链码)。 其调用格式如下:
L = bwlabel(BW,n)
该函数返回一个和输入的二值图像BW大小相同的L矩阵,包含了标记了BW中每个连通区域的类别标签,这些标签的值为1、2、num(连通区域的个数)。n的值为4或8,表示是按4连通寻找区域还是8连通寻找,如果参数省略,则默认为8。
$firstVoiceSent
- 来自原声例句
小调查
请问您想要如何调整此模块?

感谢您的反馈,我们会尽快进行适当修改!
进来说说原因吧 确定
小调查
请问您想要如何调整此模块?

感谢您的反馈,我们会尽快进行适当修改!
进来说说原因吧 确定