基础概念
图像形态学转换是数字图像处理中应用最为广泛的技术之一。传统图像处理方法一般直接在图像空间域中进行,或者在图像的变换域进行,如傅里叶空间,在变换域处理完之后,变换为原空间。而形态学处理是从集合的角度来刻画和分析图像。根据图像的像素值不同又可以分为二值图像形态学运算和灰度图像形态学运算。基本形态学运算包括腐蚀,膨胀,开和闭,在二值图像和灰度图像中这些操作各有特点。图像形态学可以用来解决滤除噪声,特征提取,边缘检测,图像分割,形态骨架提取等图像处理问题。
二值图像形态学运算:
膨胀:把图像周围背景点合并到物体中,如果两个物体比较近如果两个物体之间距离较近,那么膨胀运算可能会使这两个物体连通在一起,所以膨胀对填补图像分割后物体中的空洞很有用。
腐蚀:腐蚀的作用是消除物体边界点,它可以把小于结构元素的点去除,如果两个物体之间有细小的连通,当结构元素的选取足够大时,通过腐蚀可以将两个物体分开。
开运算:先腐蚀,再膨胀,开运算具有消除细小物体,在纤细处分离物体和平滑较大物体边界的作用。
闭运算:先膨胀,再腐蚀,闭运算具有填充物体内细小空洞,连接临近物体和平滑边界的作用。、
灰度图像形态学运算:
膨胀:灰度图像膨胀采用极大运算,提升图像的整体亮度,增强图像的亮细节,消除暗细节。
腐蚀:灰度图像腐蚀采用极小运算,图像的整体亮度变暗,增强图像的暗细节,削弱了亮细节。
开运算:滤出了较小的明亮细节
闭运算:滤除了较暗的细节部分
在opencv中,膨胀和腐蚀可以用cv2.dilate, cv2.erode;开闭运算, 礼帽(tophat) 黑帽(blackhat)和形态学梯度可以用cv2.morphologyEx()
实际应用
1. 边缘检测
膨胀后的图像减去原图得到外边界,原图减去腐蚀后的图像得到内边界,膨胀后的图像减去腐蚀后的图像得到形态学梯度边界。
2.噪声滤除
对于二值图像,开运算可以消除目标周围的噪声块,闭运算可以将目标内部的噪声孔消除。
对于灰度图像,开运算消除与结构元素相比较小的亮细节而保持图像的整体灰度值和大的亮区域基本不变。闭运算消除与结构运算相比尺寸较小的暗细节,而保持图像的整体灰度值和大的暗区域基本不变。
上图分别是加入椒盐噪声,开运算,闭运算, 闭运算之后再开运算,开运算之后再闭运算。
3. 图像分割
4. 形态骨架提取
寻找二值图像的骨架,是图像处理的一个基本问题。在图像识别或数据压缩时经常要用到这样的骨架结构,例如在识别字符前要对字符做骨架抽取处理。
自己在使用深度学习进行semantic segmentation的时候,得到预测mask有时候显得不是很完美,有噪声,使用形态学操作处理之后可以得到视觉上更加美观的mask.