这两个操作应该是形态学在图像处理上使用最多最广泛的两个操作了,它们常常被用于图像分割、边缘提取、特征提取、图像增强与复原等方面。从查到的资料来看,貌似对于灰度图和二值图的腐蚀膨胀实现稍微有些小差别:
灰度图:
腐蚀
定义一个结构元素模板,比如3*3:
``` c
1 1 1
X= 1 1 1
1 1 1
```
在目标待图片上逐像素点位移,寻找模板内的最小值并赋给中心像素点,如图:
膨胀
膨胀与腐蚀正好相反,是寻找模板内的最大值并赋给中心像素点,如图:
PS:另一些文章里定义的灰度图腐蚀与膨胀算法是对应像素点的灰度值与模板值相减求差,求得模板内差值得最大或最小值赋给中心像素点。
二值图:
腐蚀:
假设结构元素模板为S,X为待处理图像,则二值图的腐蚀计算公式为:
计算步骤:(0)定义结构元素S。
对于X的每个像素点:(1)将S的中心对齐X的目标像素点。(2)用结构元素与其覆盖的X的二值区域做与运算。(3)如果结果都为1,则S中心对应的X处像素置1,否则置0。
膨胀:
计算步骤:(0)定义结构元素S。
对于X的每个像素点:(1)将S的中心对齐X的目标像素点。(2)用结构元素与其覆盖的X的二值区域做与运算。(3)如果结果都为0,则S重心对应的X处像素值置0,否则置1。
示意图: