《形态学滤波的奇幻》

我们为什么要用形态学滤波

  • 消除噪声
  • 分割(isolate)出独立的图像元素,在图像中连接(join)相邻的元素。
  • 寻找图像中的明显的极大值区域或极小值区域
  • 求出图像的梯度

原图:jike158
图片来源网络,如有侵权及时告知删改。

膨胀,腐蚀

首先,膨胀和腐蚀是形态学处理图像的基本操作。
膨胀:(dilate)
是针对高光区域进行膨胀,类似与领域扩张,效果图拥有比原图更大的高光区域。
原理:
膨胀就是求局部最大值的操作,卷积核与图形卷积,即计算核覆盖的区域的像素点的最大值,并把这个最大值赋值给参考点指定的像素。这样就会使图像中的高亮区域逐渐增长
效果图:
jike158
不难看到与原图相比高光区域扩张了。
API函数使用:

dilate(g_srcImage, g_dstImage, element);

这里第三个参数是利用了getStructuringElement函数作为参数返回。其中,getStructuringElement函数的第一个参数表示内核的形状,我们可以选择如下三种形状之一:

  • 矩形: MORPH_RECT
  • 交叉形: MORPH_CROSS
  • 椭圆形: MORPH_ELLIPSE

而getStructuringElement函数的第二和第三个参数分别是内核的尺寸以及锚点的位置。
使用如下:

Mat element = getStructuringElement(MORPH_RECT,
	Size(2*g_nStructElementSize+1,2*g_nStructElementSize+1),
	Point( g_nStructElementSize, g_nStructElementSize ));

腐蚀:(erode)
原图像的亮部区域被腐蚀,类似领域蚕食,与原图相比亮部区域会减少。

原理:与膨胀相反,除求的是最小值,其他基本相同。

效果图:
jike158
可以看见暗部扩张了。
API函数使用:(这里的element与上面相同)

erode(g_srcImage, g_dstImage, element);

开运算、闭运算

开运算:
先腐蚀后膨胀。开运算可以用来消除小物体在纤细点处分离物体平滑较大物体的边界的同时并不明显改变其面积

效果图:
在这里插入图片描述
可以看见,橙子皮上小颗粒被消除了,但是由于是先腐蚀导致暗部变大在膨胀来调节导致效果图会偏暗。不过边界被很好保存,没改变面积。
使用:

morphologyEx(g_srcImage, g_dstImage, MORPH_OPEN, element);

morphologyEx这个是个函数这里就不介绍。

闭运算:
先膨胀后腐蚀的过程称为闭运算(Closing Operation),闭运算能够排除小型黑洞(黑色区域)
效果图:
在这里插入图片描述
可以发现小型黑色区域被消除,这是因为先膨胀调大高亮区域,再腐蚀调和。
使用:

morphologyEx(g_srcImage, g_dstImage, MORPH_CLOSE, element);

顶帽、黑帽

顶帽:
原图像与上文刚刚介绍的“开运算“的结果图之,因为开运算带来的结果是放大了裂缝或者局部低亮度的区域,因此,从原图中减去开运算后的图,得到的效果图突出了比原图轮廓周围的区域更明亮的区域

效果图:
在这里插入图片描述
黑帽:
黑帽(Black Hat)运算为”闭运算“的结果图与原图像之差,黑帽运算后的效果图突出了比原图轮廓周围的区域更暗的区域。
在这里插入图片描述
注意比较顶帽和黑帽突出的区域。再看原图,看轮廓周围的区域在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值