【数字图像处理】LeetCode与图像处理(连通域的计算)

本文深入探讨了数字图像处理中的连通域概念,详细介绍了如何使用OpenCV和skimage库进行连通域分析,包括计算连通域的属性和质心。并通过LeetCode上的岛屿数量问题,展示了连通域分析在实际问题解决中的应用。
摘要由CSDN通过智能技术生成

基本概念

在数字图像处理中,有个连通域的概念

连通区域(Connected Component)一般是指图像中具有相同像素值且位置相邻的前景像素点组成的图像区域(Region,Blob)。

在图像中,最小的单位是像素,每个像素周围有 8 个邻接像素,常见的邻接关系有 2 种:4 邻接与 8 邻接。4 邻接一共 4 个点,即上下左右、8 邻接的点一共有 8 个,包括了对角线位置的点,如下图所示

二值图(图上的值只有 0 和 1,或者 0 和 255)是非常常用的一种图像,我们可以用它来寻找目标的轮廓,形状识别等操作,同时,我们也利用二值图来寻找一个图像的连通域。如下图,就是一个很直观的连通域图,图中总共有 6 个连通域。

寻找连通域的方法

OpenCV 库

在 OpenCV 中,提供了一个函数 cv2.connectedComponentsWithStats 可以帮助我们计算连通域的一些信息,其接口说明如下:

connectedComponentsWithStats(image[, labels[, stats[, centroids[, connectivity[, ltype]]]]]) -> retval, labels, stats, centroids
  • image:输入的图像,必须是单通道 8-bit 的图像

  • labels:一张和输入图像大小一样的掩膜(mask),对于相同的连通域,使用同一个标号进行标记,背景标记为 0

  • stats:记录了连通域的一些信息

  • centroids 连通域的质心

  • connectivity:4 或者 8, 使用 4 连通域还是 8 连通域

  • ltype:输入 labels 的数据类型,CV_32S 或者 CV_16U

下图是一个图像得到的连通域掩膜,即上面提到的 labels 输出

为了方便起见,我们构建一张图来测试我们的程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器视觉CV

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值