让我们来深化前边学习的内容
- 前言
- 一、图像形态学是什么?
- 二、侵蚀和扩张的原理
- 2.1 图像的侵蚀
- 2.1.1 概念
- 2.1.2 原理解释
- 2.2 图像的扩张
- 2.2.1 概念
- 2.2.2 原理解释
相关链接:【C++的OpenCV】第六课-OpenCV图像常用操作(三):OpenCV的图像的侵蚀和扩张
前言
本章节将围绕上章节内容进行深化学习,主要目的是基本理解图像形态学中关于侵蚀和扩张的基本原理,目得是方便读者理解后期更为复杂的图像处理中的图像形态学原理(例如:图像降噪、图像的边界检测等)。
一、图像形态学是什么?
图像形态学是一组图像处理操作,其基于预定义的结构单元图像也称为内核的结构元素来处理图像。输出图像中的每个像素的值基于输入图像中的每个元素和内核结构元素的比较得出的像素值。通过选择内核的大小和形状,可以构建对输入图像的特定形状敏感的形态操作。
二、侵蚀和扩张的原理
- 备注:图像的扩张也称为扩散或者膨胀,图像的侵蚀也称为腐蚀,都是一个意思。
- 无论是侵蚀还是扩张,都是对图像高亮或者白色区域进行的操作。
- 为了让大家更好的理解,我们在一下的举例中,均以二进制图像为例。
- 具体更深层次会涉及到图像的卷积处理(滤波),实际操作中不一定需要这部分内容,作为了解大家可以参考。图像卷积处理的本质:针对图像对应的矩阵使用一个参考矩阵(卷积核)在图像矩阵中从左到右、从上到下的进行移动,移动到指定位置时,卷积核中心元素对应的图像矩阵元素取值等于卷积核所有元素值与图像矩阵和卷积核重合范围内的对应元素相乘后相加得到的值。
- 同样,我们这里以内核中心作为锚点,去遍历图像的每个像素点(高亮或者白色的像素点,这里通过遍历过程中的条件去设置阈值可以限制其只对高亮和白色像素点进行侵蚀或者扩张),从而得到每个像素点的相邻区域(这个区域的形状即为内核形状)。
- 解释:
所以,绿色部分在源图像上所盖住的部分就是需要处理的高亮像素点的相邻区域及这个高亮像素点本身(处理的是锚点所对应的像素,其余地方为相邻区域):
那么,接下来就是内核像素和原图像像素及相邻区域的卷积运算了。
2.1 图像的侵蚀
2.1.1 概念
侵蚀类似于“领域被蚕食”,将图像中的高亮区域或白色部分进行缩减细化,其运行结果图比原图的高亮区域更小。
2.1.2 原理解释
往下看,和扩张原理相同,只是取“内核覆盖的原始图像区域中的像素最大值”而已。
2.2 图像的扩张
2.2.1 概念
扩张类似于“领域扩张”,将图像中的高亮区域或白色部分进行扩张,其运行结果图比原图的高亮区域更大
2.2.2 原理解释
例如,使用线性三元素内核对图像进行处理。
然后就很简单了,取蓝色区域(即内核的形状)中所有元素的最大值,即1。这个最大值就是目标图像对应src图像(原图像)同一位置像素点的值。