这个程序就是使用opencv提供的cv::erode
与cv::dilate
函数对一幅图像进行腐蚀与膨胀操作,这是两种应用广泛的形态学操作。
形态学操作:就是基于形状进行的图像处理操作。然后输入一个图像,输出一个进行了形态学操作的图像,原图未改变。
最基础的两种形态学操作就是腐蚀与膨胀,很多其他的形态学上的处理都是以这两个原始操作为基础的。它们作用如下:
- 去噪
- 分离元素与连接元素
- 在图像中发现强度起伏与空洞
膨胀操作做法如下:
- 使用一个卷积核对图像进行卷积操作,卷积核形状大小可以自行选择;
- 在每个卷积核中定义一个锚定点(一般为中心),卷积核的作用是提取图像中卷积核覆盖范围最大的像素值。将图像中锚定点的像素替换成这个最大的值。
分析,由上述描述我们可以发现,膨胀操作可以使得图像中白色(浅色)的区域范围增长;黑色(深色)的区域缩小。
腐蚀操作做法如下:
- 使用一个卷积核对图像进行卷积操作,卷积核形状大小可以自行选择;
- 在每个卷积核中定义一个锚定点(一般为中心),卷积核的作用是提取图像中卷积核覆盖范围最小的像素值。将图像中锚定点的像素替换成这个最小的值。
分析,我们可以发现腐蚀操作与膨胀操作是一对双生姐妹花操作。腐蚀操作是使得图像中白色(浅色)的区域缩小,黑色(深色)的区域增长。
腐蚀与膨胀操作的名字都是对于白色的区域,腐蚀的是白色,膨胀的也是白色。
这个程序为我们展示使用三种不同的形状的窗口分别以不同尺寸进行腐蚀膨胀的效果。
-
使用函数
cv::getStructuringElement
获得指定形状大小的卷积核 -
cv::erode
腐蚀操作 -
cv::dilate
膨胀操作 `