OpenCV形态学处理

膨胀、腐蚀、开运算、闭运算

1、膨胀

膨胀就是求局部最大值的操作,膨胀的数学表达式:
dst ⁡ ( x , y ) = max ⁡ ( x ′ , y ′ ) : = 1 ement ⁡ ( x ′ , y ′ ) ≠ 0 src ⁡ ( x + x ′ , y + y ′ ) \operatorname{dst}(x, y)=\max _{\left(x^{\prime}, y^{\prime}\right):=1 \operatorname{ement}\left(x^{\prime}, y^{\prime}\right) \neq 0} \operatorname{src}\left(x+x^{\prime}, y+y^{\prime}\right) dst(x,y)=(x,y):=1ement(x,y)=0maxsrc(x+x,y+y)
核心代码:

//获取自定义核
cv::Mat element = cv::getStructuringElement(MORPH_RECT, Size(5, 5));
//进行膨胀操作
cv::dilate(image, out, element);

2、腐蚀

腐蚀就是求局部最小值的操作,腐蚀的数学表达式:
dst ⁡ ( x , y ) = min ⁡ ( x ′ , y ′ ) : = 1 ement ⁡ ( x ′ , y ′ ) ≠ 0 src ⁡ ( x + x ′ , y + y ′ ) \operatorname{dst}(x, y)=\min _{\left(x^{\prime}, y^{\prime}\right):=1 \operatorname{ement}\left(x^{\prime}, y^{\prime}\right) \neq 0} \operatorname{src}\left(x+x^{\prime}, y+y^{\prime}\right) dst(x,y)=(x,y):=1ement(x,y)=0minsrc(x+x,y+y)
核心代码:

//获取自定义核
cv::Mat element = cv::getStructuringElement(MORPH_RECT, Size(5, 5));
//进行腐蚀操作
cv::erode(image,out, element);

3、开/闭运算

  1. 开运算(Opening Operation),其实就是先腐蚀后膨胀的过程。其数学表达式如下:
     dst  = open ⁡ ( src ⁡ ,  element  ) = dilate ⁡ (  erode  ( src ⁡ ,  element  ) ] \text { dst }=\operatorname{open}(\operatorname{src}, \text { element })=\operatorname{dilate}(\text { erode }(\operatorname{src}, \text { element })]  dst =open(src, element )=dilate( erode (src, element )]
    开运算可以用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不明显改变其面积。
  2. 先膨胀后腐蚀的过程称为闭运算(Closing Operation),其数学表达式如下:
     dst  = close ⁡ ( src ⁡ ,  element  ) = erode ⁡ (  dilate ( src ⁡ ,  element  ) ] \text { dst }=\operatorname{close}(\operatorname{src}, \text { element })=\operatorname{erode}(\text { dilate}(\operatorname{src}, \text { element })]  dst =close(src, element )=erode( dilate(src, element )]
    闭运算能够排除小型黑洞(黑色区域)
  3. 闭运算核心代码:
cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT, Size(3, 3));
cv::Mat result;
cv::morphologyEx(test, result, cv::MORPH_CLOSE, element);
  1. 开运算核心代码:
cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT, Size(3, 3));
cv::Mat result;
cv::morphologyEx(test, result, cv::MORPH_OPEN, element);

4、示例

原始图像:
在这里插入图片描述
闭运算后:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值