1.形态学操作
图像形态学操作:基于形状的一系列图像处理操作的合集,主要是基于集合论基础上的形态学数学。
形态学有四个基本操作:膨胀、腐蚀、开、闭。
2.膨胀与腐蚀
2.1.膨胀
跟卷积操作类似,假设有图像A和结构元素B,结构元素B在A上面移动,其中B定义其中心为锚点,计算B覆盖下A的最大像素值用来替换锚点的像素,其中B作为结构体可以是任意形状。

(左图为原图,右图为膨胀操作之后的输出图像。)
2.2.腐蚀
腐蚀跟膨胀操作的过程类似,唯一不同的是以最小值替换锚点重叠下图像的像素值。

(左图为原图,右图为腐蚀操作之后的输出图像。)
2.3.相关API
2.3.1.getStructuringElement
getStructuringElement函数会返回指定形状和尺寸的结构元素。
| |
- 参数
int shape表示内核的形状,有三种形状可以选择:- 矩形
MORPH_RECT - 十字形
MORPH_CROSS - 椭圆
MORPH_ELLIPSE
- 矩形
- 参数
Size ksize表示内核的大小(必须为正奇数)。 - 参数
Point anchor表示内核的锚点,默认位置在中心。
三种内核形状的说明,以5*5大小的内核为例:
| |
2.3.2.膨胀
| |
2.3.3.腐蚀
腐蚀操作的API参数基本和膨胀相同,不再赘述。
| |
3.其他形态学操作
3.1.开操作与闭操作
3.1.1.开操作
开操作:先腐蚀后膨胀。

上图左为原图,右为执行开操作之后的图。
3.1.2.闭操作
闭操作:先膨胀后腐蚀。

上图左为原图,右为执行闭操作之后的图。
3.2.形态学梯度
形态学梯度:膨胀减去腐蚀。

上图左为原图,右为执行形态学梯度之后的图。
很明显,该操作可用于提取边缘。
3.3.顶帽与黑帽
3.3.1.顶帽
顶帽:原图像与开操作之间的差值图像(对应像素值差的绝对值)。
以3.1.1部分的原图作为例子,顶帽操作得到的图像见下:

3.3.2.黑帽
黑帽:原图像与闭操作之间的差值图像。
以3.1.2部分的原图作为例子,黑帽操作得到的图像见下:

3.4.相关API
| |
其中,参数int op有以下几种选择:
MORPH_ERODE=0:腐蚀MORPH_DILATE=1:膨胀MORPH_OPEN=2:开操作MORPH_CLOSE=3:闭操作MORPH_GRADIENT=4:形态学梯度MORPH_TOPHAT=5:顶帽操作MORPH_BLACKHAT=6:黑帽操作MORPH_HITMISS=7

















