opencv形态学滤波:开运算、闭运算、形态学梯度、顶帽、黑帽-morphologyEx函数

形态学的高级形态,往往都是建立在腐蚀和膨胀的过程这两个基本操作之上的。而关于腐蚀和膨胀操作得出来的效果出是怎么样的,请参考这篇文章:
opencv形态学滤波:腐蚀与膨胀

开运算:先腐蚀后膨胀的过程

开运算可以用来消除小物体,在纤细点处分离物体,并且在平滑较大物体的边界的同时不明显改变其面积
在这里插入图片描述

闭运算:先膨胀后腐蚀的过程

闭运算能够排除小型黑洞(黑色区域)
在这里插入图片描述

形态学梯度:膨胀图与腐蚀图之差

对二值图进行这一操作可以将团块的边缘突出出来,可以用形态学梯度来保留物体边缘轮廓
在这里插入图片描述

顶帽:原图像与上文刚刚介绍的“开运算”的结果图之差

顶帽运算往往用来分离比邻近点亮一些的斑块

因为开运算带来的结果是放大了裂缝或者局部低亮度区域。因此,从原图中减去开运算后的图,得到的效果图突出了比原图轮廓周围的区域更明亮的区域,且这一操作与选择的核的大小相关。

在一幅图像具有大幅的背景,而微小物品比较有规律的情况下,可以使用钉帽进行背景提取
在这里插入图片描述

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

黑帽运算用来分离比邻近点暗一些的斑块

黑帽运算后的效果图突出了比原图轮廓周围区域更暗的区域,且这一操作与选择的核的大小有关。
在这里插入图片描述

代码如下:

#include<opencv2/core.hpp>
#include<opencv2/highgui.hpp>
#include<opencv2/imgproc.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main()
{
    Mat src=imread("1.png");
    Mat dst;
    imshow("原图",src);

    Mat element=getStructuringElement(MORPH_RECT,Size(15,15));
    morphologyEx(src,dst,MORPH_BLACKHAT,element);

    imshow("效果图",dst);
    waitKey(0);

    return 0;
}

想要实现不同的运算,只需更改morphologyEx(src,dst,MORPH_BLACKHAT,element)中的MORPH_BLACKHAT参数,该参数的列举如下:

标识符功能
MORPH_OPEN开运算
MORPH_CLOSE闭运算
MORPH_GRADIENT形态学梯度
MORPH_TOPHAT“顶帽”
MORPH_BLACKHAT“黑帽”

对于getStructuringElement函数的解析,请查看此文章:
opencv形态学滤波:腐蚀与膨胀

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值