连通区域检测

来源:互联网 发布:斑马打印机软件 编辑:程序博客网 时间:2024/04/28 01:27

连通区域检测是图像处理、模式识别中常用的一个基本方法。在目标分割,边缘检测,区域检测中有着广泛的应用。这里,我介绍一种连通区域的检测方法,参考文献是《基于递归的二值图像连通区域像素标记算法》,徐正光、鲍东来、张利欣,计算机工程,2006年。(该文章可以在这里下载:http://cvchina.net/forum.php?mod=viewthread&tid=852#lastpost)

这里,我把论文中提到的连通区域检测算法的关键部分,摘抄整理出来。

首先,连通区域是对二值图像进行处理的,即,该图像,只有黑(0)和白(255)两种颜色,这里,假设目标为白色,背景为黑色。标记算法首先对二值图像进行一次完整的扫描,标记所有目标像素点的同时,得到并记录等价标记对。等价标记对(以下简称等价对)的产生是由于扫描次序的不同,导致开始时认为是两个不同的连通区域,后来随着扫描的深入,又发现这两个区域是连通的。所以,需要记录等价对,以表明它们隶属于同一个连通区域,以便第一次扫描结束后进行修正。标记算法首先对二值图像的每一个像素进行8连通区域的标记,即:对任意一个像素的上、下、左、右、左上、右上、右下、左下,共8个相邻像素进行比较。由于不是每个像素都有8个相邻像素,对于一些特殊位置的像素点需要特殊考虑,其中包括:

(1)二值图像左上角的像素,由于是第一个要扫描的像素,无需进行8连通区域的检测,也无需考虑记录等价对的问题。

(2)二值图像第一行的像素,只需要考虑左边相邻像素的连通性,无需考虑记录等价对。

(3)二值图像第一列的像素,只需要考虑上和右上2个相邻像素的连通性。

(4)二值图像最后一列的像素,只需要考虑左、左上、上3个相邻像素的连通性。

除了以上4种情况,其它像素,都需要考虑其8个相邻像素的连通性,如果出现不同连通标记的相邻像素,还需要考虑记录等价对的问题。

连通算法中的二值图像扫描步骤归纳如下:

(1)标记图像左上角,即,第一行第一列的像素。如果其像素值为255,则标记该点的值为1,否则,开始扫描第一行第二列的像素。

(2)标记第一行的其它像素,此时,不会产生等价对的情况,不必考虑记录等价对。对该行的每一个像素,如果其值为255,检测左边像素是否为255,若是,则该点标记为左边像素点的标记;否则,该点的标记为前一个标记值加一;若该点的像素值为0,继续扫描下一个像素。

(3)对除了第一行以外的像素行进行标记,此时会出现等价对的情况,需要进行记录。

   (3.1)首先对第一列进行处理,若该点像素值为0,则扫描该行下一个像素,否则,检测上、右上两个像素位置的像素值。若上被标记过,该点标记为上像素点的标记值。这时,再看右上是否被标记过,若也被标记过,比较上和右上的标记值是否相等,如果不相等,则记录上和右上为一个等价对,并将其记录在等价对记录表中。若上没有被标记,而右上被标记了,则该点标记为右上的标记值。如果上和右上都没有被标记,该点的标记值为上一个标记值加一。

   (3.2)对中间列进行处理,若该像素的像素值为255,则检测左、左上、上、右上位置的像素值。若上述四个位置的像素值都为0,则该点的标记值为上一个标记值加一。如果上述四个位置中只有一个的像素值为255,则该点就标记为那个像素点的标记值。如果其中有mm大于1,小于等于4)个像素点的像素值为255,则按照左、左上、上、右上的优先顺序来确定该点的标记值,然后对这m个像素位置的标记值进行等价对的分析,并进行相应的记录。

   (3.3)对最后一列进行处理,步骤同上。

3.4)依次扫描,直到所有像素值都被扫描。

4)对等价记录表中的所有等价对进行处理,得到最终的连通区域标记。

原创粉丝点击