OpenCV 腐蚀和膨胀

OpenCV 腐蚀和膨胀

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

  • 消除噪声
  • 识别图像中的亮度突起或孔洞。
  • 分离独立元素并连接图像中不连续的元素。

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

膨胀

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

结构元素

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

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

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

在下一步中,内核被叠加在图像上以计算最大像素值。当计算完成后,图像被替换为中心处的锚点。明亮区域的增加导致图像尺寸增加。

OpenCV 腐蚀和膨胀

例如,对象在白色阴影中的尺寸增加;而在黑色阴影中,对象的尺寸自动减小。

膨胀操作使用 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 腐蚀和膨胀

侵蚀

侵蚀与膨胀非常相似。不同之处在于侵蚀计算的是最小像素值,而不是膨胀的最大值。图像在锚点下的像素被计算的最小像素值所替换。与膨胀不同的是,较暗阴影的区域增加了,而白色或较明亮的区域减少了。

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)

输出

上述程序将给出以下输出。我们可以看到两个图像之间的不同之处。

OpenCV 腐蚀和膨胀

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

OpenCV 腐蚀和膨胀

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程