Part11. 图像的连通域以及连通域分析
在该系列第六篇文章中,曾经介绍过连通的概念,下面再来回顾一下。
连通:若 S 是图像中的一个像素子集,对于任意的 、。如果存在一条由 S 中像素组成的从 p 到 q 的通路,则称 p 在像素集 S 中与 q 连通。
连通域是指具有相同属性的连通集合。例如,在一个二值图像中,具有相同像素值的区域构成一个连通域。
所以,连通和连通域是两个不同的概念,连通域是连通的子集。连通域具有以下特性:
一个连通域中的所有像素都具有相同的性质。
一个连通域中的任意两个像素都可以通过连续的路径连接起来。
一个连通域可以是单连通的,也可以是多连通的。
连通域分析是指在图像中查找和标记连通域的算法。这是一种常用的图像处理技术,可以用于目标检测、图像分割和形状识别等等。本文是基于二值图像进行连通域的分析。
Part22. 连通域分析的算法
连通域分析的算法可以分为以下几类:
基于标记的算法:该类算法首先将每个像素分配一个唯一的标记,然后使用某种策略将具有相同标记的像素连接起来。基于标记的算法包括两遍扫描法、种子填充法和快速连通域查找法。
基于邻域查找的算法:该类算法从图像中的一个起始像素开始,逐个检查其邻域像素,如果邻域像素具有相同像素值,则将其加入到当前连通域中。基于邻域查找的算法包括深度优先搜索(DFS)和广度优先搜索(BFS)。
基于分割的算法:该类算法将图像分割成多个区域,每个区域都具有相同的像素值。基于分割的算法包括图论方法和区域生长法。
其中,基于标记的算法是比较常用的连通域分析的算法。
12.1 两遍扫描法
两遍扫描算法的步骤如下
第一遍扫描
从左到右,从上到下遍历图像。
将每个有效像素赋予一个唯一的标记。
第二遍扫描
再次从左到右,从上到下遍历图像。
检查两个相邻像素是否具有相同的标记。
如果两个相邻像素具有相同的标记,则将它们连接起来。
22.2 种子填充法
种子填充算法的步骤如下:
初始化:将图像