【图像处理】腐蚀(erode)和膨胀(dilate)

您所在的位置:网站首页 二值腐蚀的原理 【图像处理】腐蚀(erode)和膨胀(dilate)

【图像处理】腐蚀(erode)和膨胀(dilate)

2024-07-11 10:22| 来源: 网络整理| 查看: 265

【图像处理】腐蚀(erode)和膨胀(dilate) 原理腐蚀(erode)膨胀(dilate) OpenCV实现C++实现python实现 开运算(Opening Operation)闭运算(Closing Operation)形态学梯度(Morphological Gradient)顶帽运算(Top Hat)黑帽运算(Black Hat)结语

原理

二值图像的处理方法,虽然基础,但在消除孔洞等任务中的效果非常好

腐蚀(erode)

腐蚀操作会把高亮(即值为255)的边界腐蚀掉。设定卷积核尺寸,卷积核沿着图像滑动,如果与卷积核对应的原图像的所有像素值都是1,那么中心元素就保持原来的像素值,否则就变为0。 在这里插入图片描述

膨胀(dilate)

膨胀操作会把高亮(即值为255)的边界膨胀开。设定卷积核尺寸,卷积核沿着图像滑动,与卷积核对应的原图像的像素值中只要有一个是1,中心元素的像素值就是1。 在这里插入图片描述

OpenCV实现

某些场景下,先用腐蚀再用膨胀可以达到去除噪声的效果

C++实现

腐蚀:

Mat element = getStructuringElement(MORPH_RECT, Size(10, 10)); erode(src, dst, element)

膨胀:

Mat element = getStructuringElement(MORPH_RECT, Size(10, 10)); dilate(src, dst, element) getStructuringElement:返回指定形状和尺寸的结构元素src:输入图像dst:腐蚀或膨胀操作后输出图像element:自定义卷积核

关于函数getStructuringElement:

第一个参数:矩形——MORPH_RECT,交叉形——MORPH_CROSS,椭圆形——MORPH_ELLIPSE第二个参数:卷积核的尺寸第三个参数:锚点的位置,默认值Point(-1, -1),表示锚点位于中心点 python实现

腐蚀:

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3)) dst = cv2.erode(src, kernel)

膨胀:

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3)) dst = cv2.dilate(src, kernel) 开运算(Opening Operation)

先腐蚀后膨胀

开运算可以用来消除小物体,在纤细点出分离物体,平滑较大物体的边界同时并不明显改变其面积

闭运算(Closing Operation)

先膨胀后腐蚀

闭运算能够消除小型黑洞

形态学梯度(Morphological Gradient)

膨胀图与腐蚀图之差

对二值图像进行这一操作可以将团块(blob)的边缘突出来,可以用来保留物体的边缘轮廓

顶帽运算(Top Hat)

原图像与开运算的结果图之差

黑帽运算(Black Hat)

闭运算的结果图与原图像之差

结语

如果您有修改意见或问题,欢迎留言或者通过邮箱和我联系。 如果我的文章对您有帮助,转载请注明出处。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3