上一篇我们讲到了MATLAB中的bwlabel连通域标记算法的C++实现https://blog.csdn.net/Dhane/article/details/81633723,今天我来讲一讲另一种相对比较容易想到的连通域标记算法。简单点说就是每次以一个需要标记的像素点为种子,然后不断向其周围扩散,找出其他的与其相连通的可标记的像素点,这样就能标记出一个连通域,然后再以另一个连通域中的某一个需要标记的点为种子点,如此不断循环,直到把整幅图都遍历一遍,所有连通域也就都标记出来了。
可能因为我的语言表达能力有限,所以上面的简单描述一些同学还是没能够太明白,不要着急,下面我们再来把这个过程分析一遍。
还是先上一张老图,这样说起来更清晰一点:
上图中,共有1,2,3三个连通成分,我们需要找出这张图中的所有连通成分,那么至少需要把图像中的每一个像素都遍历一遍,并且遍历的时候还有判定该像素点的值是否在集合V中。我们可以大概分为以下几步来实现:
- 从左到右,从上到下遍历每一个像素点,然后判断该像素的值是否在集合V中(这里是一张二值图,我们假设黑色的值为0)。