📜  在Python中使用 OpenCV 对图像进行侵蚀和膨胀

📅  最后修改于: 2022-05-13 01:55:02.189000             🧑  作者: Mango

在Python中使用 OpenCV 对图像进行侵蚀和膨胀

形态学操作是一组基于形状处理图像的操作。他们将结构元素应用于输入图像并生成输出图像。
最基本的形态学操作有两种:腐蚀和膨胀
侵蚀的基础:

  • 侵蚀前景物体的边界
  • 用于减少图像的特征。

侵蚀作用:

  1. 一个内核(一个奇数大小的矩阵(3,5,7)与图像卷积。
  2. 只有当内核下的所有像素都为 1 时,原始图像中的一个像素(1 或 0)才会被视为 1,否则,它会被侵蚀(变为 0)。
  3. 因此,边界附近的所有像素都将根据内核的大小被丢弃。
  4. 因此,前景物体的厚度或大小会减小,或者只是图像中的白色区域会减小。

膨胀的基础:

  • 增加对象面积
  • 用于突出特征

扩张的工作:

  1. 一个内核(一个奇数大小的矩阵(3,5,7)与图像卷积
  2. 如果内核下至少有一个像素为“1”,则原始图像中的像素元素为“1”。
  3. 它增加了图像中的白色区域或前景对象的大小增加

Python
# Python program to demonstrate erosion and
# dilation of images.
import cv2
import numpy as np
 
# Reading the input image
img = cv2.imread('input.png', 0)
 
# Taking a matrix of size 5 as the kernel
kernel = np.ones((5,5), np.uint8)
 
# The first parameter is the original image,
# kernel is the matrix with which image is
# convolved and third parameter is the number
# of iterations, which will determine how much
# you want to erode/dilate a given image.
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.imshow('Dilation', img_dilation)
 
cv2.waitKey(0)


第二幅图像是原始图像的侵蚀形式,第三幅图像是膨胀形式。

腐蚀和膨胀的用途:

  1. 侵蚀:
    • 它对于去除小的白噪声很有用。
    • 用于分离两个连接的对象等。
  2. 扩张:
    • 在像噪声去除这样的情况下,腐蚀之后是膨胀。因为,侵蚀消除了白噪声,但它也缩小了我们的对象。所以我们扩张它。由于噪音消失了,它们不会回来,但我们的对象面积增加了。
    • 它也可用于连接对象的损坏部分。