连通域标记算法(二) 基于深度优先搜索的连通域标记算法(opencv C++实现)

本文介绍了一种基于深度优先搜索的C++实现连通域标记算法,通过遍历图像像素并以找到的0值像素为种子点,不断寻找与其相连通的像素点,形成连通域。该方法适用于二值图像,通过堆栈存储和遍历像素邻域,最终标记所有连通成分。
摘要由CSDN通过智能技术生成

        上一篇我们讲到了MATLAB中的bwlabel连通域标记算法的C++实现https://blog.csdn.net/Dhane/article/details/81633723,今天我来讲一讲另一种相对比较容易想到的连通域标记算法。简单点说就是每次以一个需要标记的像素点为种子,然后不断向其周围扩散,找出其他的与其相连通的可标记的像素点,这样就能标记出一个连通域,然后再以另一个连通域中的某一个需要标记的点为种子点,如此不断循环,直到把整幅图都遍历一遍,所有连通域也就都标记出来了。

        可能因为我的语言表达能力有限,所以上面的简单描述一些同学还是没能够太明白,不要着急,下面我们再来把这个过程分析一遍。

        还是先上一张老图,这样说起来更清晰一点:

        

上图中,共有1,2,3三个连通成分,我们需要找出这张图中的所有连通成分,那么至少需要把图像中的每一个像素都遍历一遍,并且遍历的时候还有判定该像素点的值是否在集合V中。我们可以大概分为以下几步来实现:

  1. 从左到右,从上到下遍历每一个像素点,然后判断该像素的值是否在集合V中(这里是一张二值图,我们假设黑色的值为0)。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值