腐蚀和膨胀是形态学图像处理操作。OpenCV 形态学图像处理是一种修改图像几何结构的过程。在形态学中,我们找到对象的形状、大小或结构。这两个操作是为二进制图像定义的,但我们也可以在灰度图像上使用它们。它们广泛用于以下方式:

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

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

膨胀

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

结构元素

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

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

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

在下一步中,将核叠加到图像上以计算最大像素值。计算完成后,图像将用一个在中心的锚点替换。较亮的区域增加了大小,从而增加了图像大小。

16-1.png

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

通过使用cv2.dilate()方法执行膨胀操作。语法如下:

cv2.dilate(src, dst, kernel)  

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

  • src - 表示输入图像。
  • dst - 表示输出图像。
  • kernel - 表示核。

考虑以下示例:

import cv2  
import numpy as np  
img = cv2.imread(r'C:\Users\DEVANSH SHARMA\jtp_flower.jpg, 0)  
  
kernel = np.ones((5,5), np.uint8)  
img_erosion = cv2.erode(img, kernel, iterations=1)  
img_dilation = cv2.dilate(img, kernel, iterations=1)  
cv2.imshow('Input', img)  
cv2.imshow('Dilation', img_dilation)  
cv2.waitKey(0)  

输出

16-2.png

腐蚀

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

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

cv2.erode(src, dst, kernel)  

参数:

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

考虑以下示例:

import cv2  
import numpy as np  
img = cv2.imread(r'C:\Users\DEVANSH SHARMA\baloon.jpg', 1)  
kernel = np.ones((5,5), np.uint8)  
img_erosion = cv2.erode(img, kernel, iterations=1)  
img_dilation = cv2.dilate(img, kernel, iterations=1)  
cv2.imshow('Input', img)  
cv2.imshow('Erosion', img_erosion)  
cv2.waitKey(0)  

输出

上述程序将产生以下输出。我们可以看到两个图像之间的差异。

16-3.png

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

16-4.png

标签: OpenCV, OpenCV教程, OpenCV图像识别, OpenCV安装教程, OpenCV下载, OpenCV入门, OpenCV基础, OpenCV库, OpenCV学习, OpenCV指南, OpenCV教程中文版, OpenCV快速入门, OpenCV基础教程