复习一下以前学过的图像处理知识点,简单记录一下腐蚀与膨胀,开运算与闭运算的知识,本文处理均针对二值化图像。opencv二值化函数为threshold()。
一、腐蚀
1、定义与原理
腐蚀是一种消除连通域的边界点,使边界向内收缩的处理,如下图所示:
其实现原理是:首先设计一个结构元素,原点定位在待处理的目标像素上,通过判断是否覆盖,来确定是否该点被腐蚀掉
opencv 腐蚀处理接口: erode()
2、腐蚀算法步骤
1)扫描原图,找到第一个像素值为1的目标点
2)将预设好形状及原点位置的结构元素的原点移到该点
3)判断该结构元素所覆盖的像素值是否全部为1
是: 腐蚀后图像中相同位置上像素值为1
否: 腐蚀后图像中相同位置上像素值为0
4)重复2和3,直到所有原图中像素处理完成
3、作用
从上图可以看出,腐蚀运算可以将粘连在一起的不同目标物分离,并可将小的颗粒噪声去除
二、膨胀
1、定义与原理
膨胀是将与目标区域的背景点合并到该目标物中,使目标物边界向外部扩张的处理。
设计一个结构元素,结构元素的原点定位在背景像素上,判断是否覆盖有目标点,来确定是否该点被膨胀为目标点。
opencv 膨胀处理接口: dilate()
2、膨胀算法步骤
1)扫描原图,找到第一个像素值为0的背景点;
2)将预先设定好形状以及原点位置的结构元素的原点移到该点;
3)判断该结构元素所覆盖的像素值是否存在为1的目标点:
是:膨胀后图像中的相同位置上的像素值为1;
否:膨胀后图像中的相同位置上的像素值为0;
4)重复2)和3),直到所有原图中像素处理完成。
可以看出膨胀算法与腐蚀算法仅第一步有所不同,它们是一对逆运算
3、作用
容易看出,膨胀处理可以将断裂开的目标物进行合并,便于对其整体的提取。
三、开运算与闭运算
前面介绍的膨胀与腐蚀运算,对目标物的后处理有着非常好的作用。但是,腐蚀和膨胀运算改变了原目标物的大小。为保持目标物大小,考虑到腐蚀与膨胀是一对逆运算,将膨胀与腐蚀运算同时进行。就有了开运算与闭运算。
1、开运算
开运算是对原图先进行腐蚀处理,后再进行膨胀的处理,不仅可去除孤立的小点,毛刺和小桥,还可以在分离粘连目标物的同时,基本保持原目标物的大小。如下图:
2、闭运算
闭运算是对原图先进行膨胀处理,后再进行腐蚀的处理,不仅可弥合小孔,缝隙,还可以在合并断裂目标物的同时,基本保持原目标物的大小。
3、特殊处理
如果当按照常规的开运算不能分离粘连,或者是闭运算不能合并断裂:
对于开运算可以先进行N次腐蚀,再进行N次膨胀;
对于闭运算可以先进行N次膨胀,再进行N次腐蚀。
如下图所示
标签:原图,运算,目标,腐蚀,膨胀,像素 From: https://blog.csdn.net/well_fly/article/details/142023465