*本文学习资源来处OpenCV官网文档*
一、概念
数学形态学 是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。其基本的运算包括:腐蚀和膨胀、开运算和闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换等。
目标:不同的形态变化方式:Erosion,Dilation,Opening,Closing
腐蚀和膨胀是针对白色(高亮)部分而言,而不是针对黑色部分。
二、说明
1. Erosion 腐蚀
腐蚀的基本思想就像土壤侵蚀一样,它会侵蚀前景物体的边界(总是试图保持前景为白色)。
运算方式:内核在图像中滑动(如在2D卷积中),只有当内核下的像素都是1时,原始图像中的像素(1或0)才会被视为1,否则它将被侵蚀(变为零)。
其结果:边界附近的所有像素都将被丢弃,具体取决于内核的大小。因此,前景对象的厚度或大小减小,或者图像中的白色区域减小。
应用场景:消除噪声、分割出独立的图像元素,在图像中连接相邻的元素(将图像与背景连接更自然)、寻找图像中的明显的极大值区域或极小值区域、求出图像的梯度。
代码示例
import cv2import numpy as npimg = cv2.imread('test.jpg', cv2.IMREAD_UNCHANGED)# 设置卷积核kernel = np.ones((5, 5), np.uint8)# 图像腐蚀处理erosion = cv2.erode(img, kernel, iterations=1)cv2.imshow('img', img)cv2.imshow('eros