一. 前言
一般图像处理是针对图像做形状的改变,而形态学处理则是对图像进行结构性的改变,而常见的形态学处理就是使用结构元素对二值化图像(图像中的任何像素灰度值不是0就是255)进行处理,包括膨胀(Dilation
)、腐蚀(Erosion
)、开运算(先腐蚀再膨胀)、闭运算(先膨胀再腐蚀),所以在形态学处理前需要将图像二值化。如果对灰度图进行膨胀、腐蚀等,则会起到增强图像对比度的效果。
- 结构元的中心一般来说是放在其重心位置处,但原则上原点的选择是依赖于你要解决的问题的;
- 对图像操作时,我们要求结构元是矩形阵列。(在结构元的基础上添加较少的背景元素实现);
- 当结构元的中心位于原图像的边界时,要对原图像进行膨胀或腐蚀操作;
不管是膨胀还是腐蚀,本质都是使用一个结构元素
来逐个像素地扫描要被处理的二值化图像,并根据结构元素
和待处理的二值化图像关系来确定膨胀或腐蚀结果。
二. 理论
1、膨胀(dilation、dilation_rectangle1、dilation_circle)-增加像素:
把结构元素B
的中心元素(origin
)扫描图像的每一个像素,用结构元素与其覆盖的二值图像做平移并集
操作,即二值图像的与结构元素B
重合部分只要有黑色(0),则结构元素B
中心元素(origin
)所在的图像位置就置黑色(0);
如图所示:左边是需要被处理的二值图像,中间是结构元素B
,右边是膨胀处理之后的图像。膨胀的方法是:使用结构元素B
从左到右,从上到下滑动遍历图像,只要结构元素B
上的黑点与二值图像X
上的黑点有重合,则就将结构元素B
的中心点所在位置的图像像素值置为黑;右边是膨胀后的结果。
2、腐蚀(erosion、erosion_rectangle1、erosion_circle)-减少像素:
把结构元素B
的中心元素(origin
)扫描图像的每一个像素,用结构元素与其覆盖的二值图像做平移交集
操作,即结构元素与其覆盖的二值图像的重合部分全都为黑色(0),则结构元素的中心点所在的二值图像灰度值才为黑色(0);换而言之,两者重合部分只要有白色(1)则结构元素的中心点所在的二值图像灰度值就为白色(1)。
如图所示:左边是被处理的图像X(二值图像,我们针对的是黑点),中间是结构元素B
,那个标有origin
的点是中心点,即当前处理元素的位置。腐蚀的方法是:拿结构元素B
的中心点在X上从左到右,从上到下滑动,如果结构元素B
与二值图像X有空白交集,则将B
的中心点所在的二值图像黑点去掉(变为白—1)。