OpenCV3 5.2 用形态学滤波器腐蚀和膨胀图像

数学形态学(Mathematical morphology)

OpenCV中常用数学形态学分析处理离散图像,用预先定义的结构元素探测图像,从而实现图像的转换,结构元素与像素邻域的相交方式决定了运算的结果。

用形态学滤波器腐蚀和膨胀图像

结构元素即为像素的组合(常用正方形,圆形等),把某个像素设为结构元素的原点后,结构元素和图像重叠部分的像素集就是形态学运算的应用对象。

因为形态学滤波器通常作用于二值图像,所以我们通常用cv::threshold函数先创建二值图,要说明的是,在形态学中,我们习惯用白色表示前景物体,黑色表示背景物体。

注:腐蚀和膨胀滤波器也能应用在灰度图像甚至彩色图像中,定义是相同的。

原图

在这里插入图片描述

腐蚀图像

腐蚀就是把当前像素替换成所定义像素集合中最小像素值。这里默认结构元素是3*3矩阵,原点为中心点。
在这里插入图片描述
腐蚀时,如果结构元素放到某个像素位置时碰到了背景(即交集中有一个像素是黑色的),那么这个像素就变为背景。

图像腐蚀后物体尺寸会缩小。在腐蚀图像中,有些面积较小的物体(背景中的噪声像素)会彻底消失。

//腐蚀图像
cv::Mat eroded;
cv::erode(binary, eroded, cv::Mat());
cv::imshow("eroded", eroded);

在这里插入图片描述

函数签名

CV_EXPORTS_W void erode( InputArray src, OutputArray dst, InputArray kernel,
                         Point anchor = Point(-1,-1), int iterations = 1,
                         int borderType = BORDER_CONSTANT,
                         const Scalar& borderValue = morphologyDefaultBorderValue() );

参数分别为:输入矩阵,输出矩阵,自定义内核(结构元素),原点坐标,迭代次数,后面默认即可。

膨胀图像

膨胀就是把当前像素替换成所定义像素集合中最大像素值
这里默认结构元素是3x3矩阵,原点为中心点。
在这里插入图片描述

腐蚀时,如果结构元素放到某个像素位置时碰到了前景(即交集中有一个像素是白色的),那么这个像素就变为前景。

图像膨胀后物体尺寸会扩大。在膨胀图像中,物体中的一些“空隙”被填满。

//膨胀图像
cv::Mat dilated;
cv::dilate(binary, dilated, cv::Mat());
cv::imshow("dilated", dilated);

在这里插入图片描述

函数签名

CV_EXPORTS_W void dilate( InputArray src, OutputArray dst, InputArray kernel,
                          Point anchor = Point(-1,-1), int iterations = 1,
                          int borderType = BORDER_CONSTANT,
                          const Scalar& borderValue = morphologyDefaultBorderValue() );

函数用法同上,参数分别为:输入矩阵,输出矩阵,自定义内核(结构元素),原点坐标,迭代次数,后面默认即可。

腐蚀和膨胀运算的基本性质

  • 腐蚀图像相当于对其反色图像膨胀后再去反色。
  • 膨胀图像相当于对其反色图像腐蚀后再去反色。
  • 建议理解:腐蚀:黑多白少,消噪声;膨胀:黑少白多,填空隙。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值