OpenCV 腐蚀和膨胀

2025年3月17日 | 阅读 3 分钟

腐蚀和膨胀是形态学图像处理操作。 OpenCV 形态学图像处理是一种修改图像几何结构的程序。 在形态学中,我们找到物体的形状和大小或结构。 这两种操作都定义用于二值图像,但我们也可以将它们用于灰度图像。 它们被广泛用于以下方式

  • 去除噪声
  • 识别图片中的强度凸起或孔洞。
  • 分离图像中的各个元素并连接不同的元素。

在本教程中,我们将简要解释腐蚀和膨胀。

膨胀

膨胀是一种我们扩展图像的技术。 它将像素数添加到图像中对象的边界。 结构元素控制它。 结构元素是一个由 1 和 0 组成的矩阵。

结构元素

结构元素的大小和形状定义了应该从图像中的对象添加或删除多少个像素。

它是一个由 1 和 0 组成的矩阵。 图像的中心像素称为原点。

它包含一个图像 A,其中包含一些内核 (B),内核可以具有任何形状或大小,通常是正方形或圆形。 这里内核 B 具有定义的锚点。 它是内核的中心。

在下一步中,将内核叠加在图像上以计算最大像素值。 当计算完成后,图像将替换为中心的锚点。 较亮的区域会增大尺寸,从而使图像尺寸增加。

OpenCV Erosion and Dilation

例如,对象的尺寸以白色阴影增加; 另一方面,黑色阴影中对象的尺寸会自动减小。

膨胀操作是使用 cv2.dilate() 方法执行的。 语法如下

参数: dilate() 函数接受以下参数

  • src - 它代表输入图像。
  • dst - 它代表输出图像。
  • kernel - 它代表内核。

请看以下示例

输出

OpenCV Erosion and Dilation

腐蚀

腐蚀与膨胀非常相似。 区别在于像素值计算的是最小值而不是膨胀中的最大值。 图像在锚点下替换为计算出的最小像素。 与膨胀不同,较暗阴影的区域会增加。 而它在白色阴影或较亮的一侧减少。

OpenCV 提供了 cv2.erode() 函数来执行此操作。 该函数的语法如下

参数

  • src - 它表示源(输入)图像。
  • dst - 它表示目标(输出)图像。
  • kernel - 它代表内核。

请看以下示例

输出

上述程序将给出以下输出。 我们可以看到两张图像之间的区别。

OpenCV Erosion and Dilation

腐蚀操作应用于输入图像。

OpenCV Erosion and Dilation