1.连通域
对于一幅图像来说,它的基本组成单元是像素,每一个像素又对应一个灰度值.
联通区域标记针对的是二值图像,二值图像顾名思义就是它的灰度值只存在两种值---0或255的图像,一个连通区域指的是图像中那些位置相邻,灰度值相同的像素集合所组成的区域.
像素和像素之间的邻域关系有4邻域和8邻域,4邻域指的是当前像素的上下左右位置处的像素,8邻域是指上下左右和对角线位置处的像素.
如右图所示,分别对应的是像素的4邻域和8邻域位置关系
(x,y-1) | ||
(x-1,y) | (x,y) | (x+1,y) |
(x,y+1) |
4邻域
(x-1,y-1) | (x,y-1) | (x+1,y-1) |
(x-1,y) | (x,y) | (x+1,y) |
(x-1,y+1) | (x,y+1) | (x+1,y+1) |
8邻域
2.连通区域标记方法
1)基于行程的标记
a.逐行扫描图像,将一行中连续的白色像素组成的序列成为一个团,并记下它的起点和终点,以及它所在的行号.
b.对于除了第一行外的所有行里的团,如果它与前一行的所有团都没有重叠的区域,则给它标记一个新的标号;如果它仅与上一行的一个团有重叠,则将上一行那个团的标号赋给它;如果它与上一行的两个以上的团有重叠,则将几个团中最小的那个标号赋给它,并将这几个标号写入等价对中,说明它们属于同一个区域.
c.将等价对转换为等价序列,且每一序列需要给予同一个标号,因为它们均是等价的.从1开始,给每一个等价序列一个标号.
d.遍历开始团的标记,查找等价序列,赋予它们新的标号.
e.将每一个团的标记填入图像中
f.结束
结合上面图像对行程扫描算法进行说明
第一行,得到两个团[2,6]和[10,13],同时给它们标记1和2.
第二行,得到两个团[6,7]和[9,10],它们和上一行的两个团均有重叠,所以,用上一行的团号进行标记为1和2.
第三行,两个团[2,4]和[7,8],[2,4]和上一行没有重叠,所以,赋予它一个新的标号3,[7,8]和上一行中的两个团均有重叠,所以,赋予它两个团号中较小的那个,即为1,同时,将[1,2]写入等价对.
全部图像遍历完毕之后,我们得到很多个团的起始坐标,结束坐标以及它们所在的行和标号.同时,我们还得到了一个等价对列表.
原文:http://www.cnblogs.com/linlin-myblog/p/4230692.html