编程学习
🖼️C++OpenCV(8):图像的连通性分析
00 分钟
2023-7-28
2023-11-23
type
status
date
slug
summary
tags
category
icon
password
Email
💡
水寒江静,满目青山,载月明归。——黄庭坚《诉衷情》
🔆
文章首发于我的个人博客:欢迎大佬们来逛逛

opencv图像连通区域分析

图像的连通域是指图像中具有相同像素值并且位置相邻的像素组成的区域,连通域分析是指在图像中寻找出彼此互相独立的连通域并将其标记出来
需要注意的是,一个连通域内通常只包含一个像素值,因此为了防止像素值波动对提取不同连通域的影响,连通域分析常处理的是二值化后的图像

图像连通区域的寻找依赖于图像的邻域
邻域即相邻的区域,通常包含以下两种形式:
  • 4邻域:又叫四联通,包含上下左右四个区块。
notion image
  • 8邻域:又叫八连通,类似于九宫格。
notion image

图像邻域分析法

两遍扫描法

两遍扫描法会遍历两次图像,第一次遍历图像时会给每一个非0像素赋予一个数字标签,当某个像素的上方和左侧邻域内的像素已经有数字标签时,取两者中的最小值作为当前像素的标签,否则赋予当前像素一个新的数字标签。

种子填充法

像是DFS搜索方式的填充,首先将所有非0像素放到一个集合中,之后在集合中随机选出一个像素作为种子像素,根据邻域关系不断扩充种子像素所在的连通域,并在集合中删除掉扩充出的像素,直到种子像素所在的连通域无法扩充,之后再从集合中随机选取一个像素作为新的种子像素,重复上述过程直到集合中没有像素

连通区域操作

不带统计信息的API

带有统计信息的API


案例

需要注意的点:
  1. 首先要把图片加载为单通道灰度图像,即一通道图,是为了之后进行图像的阈值化。
  1. 然后进行图像的阈值化操作,为了使得转换为二进制图像,进行连通域分析。
  1. 调用函数来获取连通性分析后的图像。
  1. 然后进行转换,把对连通性分析后得到的图像再转换为三通道的带颜色的图片,因为我们对连通性分析后得到的图片是二进制灰度图,无法直接输出,因此需要转换为三通道RGB图。
  1. 注意转换时是如何操作的:如何将单通道图转换为三通道? 如何上色等等。
notion image

 

评论
  • Twikoo
  • Valine