在Python中使用 OpenCV 对图像进行侵蚀和膨胀
形态学操作是一组基于形状处理图像的操作。他们将结构元素应用于输入图像并生成输出图像。
最基本的形态学操作有两种:腐蚀和膨胀
侵蚀的基础:
- 侵蚀前景物体的边界
- 用于减少图像的特征。
侵蚀作用:
- 一个内核(一个奇数大小的矩阵(3,5,7)与图像卷积。
- 只有当内核下的所有像素都为 1 时,原始图像中的一个像素(1 或 0)才会被视为 1,否则,它会被侵蚀(变为 0)。
- 因此,边界附近的所有像素都将根据内核的大小被丢弃。
- 因此,前景物体的厚度或大小会减小,或者只是图像中的白色区域会减小。
膨胀的基础:
- 增加对象面积
- 用于突出特征
扩张的工作:
- 一个内核(一个奇数大小的矩阵(3,5,7)与图像卷积
- 如果内核下至少有一个像素为“1”,则原始图像中的像素元素为“1”。
- 它增加了图像中的白色区域或前景对象的大小增加
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)
第二幅图像是原始图像的侵蚀形式,第三幅图像是膨胀形式。
腐蚀和膨胀的用途:
- 侵蚀:
- 它对于去除小的白噪声很有用。
- 用于分离两个连接的对象等。
- 扩张:
- 在像噪声去除这样的情况下,腐蚀之后是膨胀。因为,侵蚀消除了白噪声,但它也缩小了我们的对象。所以我们扩张它。由于噪音消失了,它们不会回来,但我们的对象面积增加了。
- 它也可用于连接对象的损坏部分。