📜  OpenCV侵蚀和膨胀

📅  最后修改于: 2021-01-07 06:43:59             🧑  作者: Mango

OpenCV侵蚀和膨胀

侵蚀和膨胀是形态图像处理操作。 OpenCV形态图像处理是用于修改图像中几何结构的过程。在态射中,我们发现物体的形状,大小或结构。两种操作都是针对二进制图像定义的,但是我们也可以在灰度图像上使用它们。这些以以下方式被广泛使用:

  • 消除噪音
  • 识别照片中的强度凸起或孔洞。
  • 分离单个元素并将图像中的不同元素结合在一起。

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

扩张

扩张是一种扩展图像的技术。它将像素数添加到图像中对象的边界。结构元素控制它。结构元素是1和0的矩阵。

结构元素

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

它是1和0的矩阵。图像的中心像素称为原点。

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

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

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

使用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)

输出量

侵蚀

侵蚀与膨胀非常相似。不同之处在于,像素值计算得出的最小值最小而不是最大值。图像将在锚点下替换为计算出的最小像素。不太可能膨胀,深色阴影区域增加。减少白色阴影或较亮的一面。

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

cv2.erode(src, dst, kernel)

参数:

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

考虑以下示例:

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)

输出量

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

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