
本节学习使用图像处理中,两个形态学操作函数:腐蚀(cv::erode)和膨胀(cv::dilate)。
形态学变换
简单的说,就是一些基于形状的图像处理方法。用一个结构元素来处理输入图像,然后得到输出图像。(Learning OpenCV by Bradski and Kaehler)
最常见的形态学变换是腐蚀和膨胀。他们的作用是:
- 用于移除噪声
- 用于独立元素的分离,不同元素的连接
- 用于寻找图像中灰度变换剧烈的位置或者孔洞。
接下来以下面图像为例,简要解释膨胀和腐蚀。

膨胀
该运算是图像A与结构元素(核)B的卷积。B可以是任意形状或大小,通常使用正方形或圆形。
核B中定义一个anchor点,通常是核的中心。
随着核B遍历整幅图像,计算B覆盖图像区域的最大像素值,并用该值替换处于anchor点的像素值。可以推断出,这个操作会使图像中亮区域增长(因此称为膨胀)。膨胀运算公式为:
上面的图像膨胀后,可以看到字符区域的扩大,如下所示:

腐蚀
腐蚀跟膨胀正好相反。它得到的是核区域中的最小值。
同样,用核遍历图像,核覆盖区域中,图像的最小值作为核中心点对应像素值。因此图像中的亮区域会变小,如同被腐蚀掉。腐蚀运算公式:
腐蚀后的图像如下所示,字符区域变小,暗区域变大:

代码及注释
// @tutorials imgproc module 4
结果

拖动上面滚动条可以选择不同的结构元素,拖动下面滚动条可以设置结构元素的大小。下面是选择不同类型结构元素,大小都设置为3时的对比。


