如何理解二值图连通域快速标记算法快速连通物体检测Fast-Connected-Component教程附带python代码实现

如何快速在一张二值化了的图片检测那些像素是属于一个物体块?

注意快速连通物体检测算法只能识别二值化了的图片中哪些像素是相互连接的一个整体。换句话说就是这个算法可以检测到哪些像素是相互连通的。它其实就是可以看作是计算机算法中的连通子图问题。
连通物体检测算法有哪些用?1. OCR文字识别中可以用连通物体检测算法识别哪些像素是属于一个汉字。然后对这个汉字识别 2. 物体检测。
直接看下图就懂了
在这里插入图片描述

我对上面这幅图来描述一下增强你对它的理解。连通域快速标记算法一共需要遍历两遍。

第1遍:前面提到了连通域标记算法处理的是 二值化了的图,这意味着这些像素非0即1,而且物体的像素值是1. 如果你还不懂二值化可以参考本项目中的这篇教程Otsu二值化图像算法.现在从上到下从左到右遍历所有像素点,只要遇到像素值是1,则判断它周围是否有像素被标记了。如果周围没有像素被标记那就标签值+1(假设目前最大标签值是2,现在当前像素点周围没有被标记过的像素,那当前像素点就被标记为3)。
现在问题来了什么叫做某个像素点“周围”?请看下面这张图。右两种规则找周围像素点,分别是4邻接和8邻接。标红的圆圈○就是中心像素点的“周围”。4邻接和8邻接就是两种不同的判断“周围”像素的规则。

在这里插入图片描述

如果遇到周围有多个像素点被标记那就讲最小的那个标签值赋值给当前像素点。并且创建一个树将较大的那些像素点的标签值加入到最小的那个像素值的子节点。存储树的结构是用一个数组来存储。数组的值是父节点的下标。比如{2,0,4…}表示序号是0那个元素的父节点序号是2,序号是1那个元素的父节点序号是0,序号是2那个元素的父节点序号是4.

第2遍:使用并查集算法将同一颗树下的所有元素都标记为根节点那个标签值。并查集算法有什么用?答:根据第1遍所创建的那个数组来找树的根节点。

参考文献:
https://blog.csdn.net/hemeinvyiqiluoben/article/details/39854315

Python编程实践二值图连通域快速标记算法fast labeling algorithm

import numpy as np
img_mat = np.array([[0, 0, 1, 0, 0, 1, 0],
                    [
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值