python opencv 图像切割_Python 图像处理 OpenCV (9):图像处理形态学开运算、闭运算以及梯度运算...

5e2a9051d91891828c2eb4bc390d42f0.png

引言

前面介绍了图像形态学的两种基础算法,图像腐蚀和图像膨胀,本篇接着介绍图像形态学中的开运算、闭运算以及梯度运算。

由于内容的连贯性,请先阅读前文「Python 图像处理 OpenCV (8):图像腐蚀与图像膨胀」,了解清楚图像的腐蚀与膨胀基础原理。

不然真的没办法理解开运算和闭运算。

第一件事情还是给图像增加噪声,思路沿用之前加噪声的思路,使用 Numpy 给图片添加黑白两种噪声点,代码如下:

import cv2 
f2eba9e4617c9f5f946ac28bb939b035.png

形态学开运算

图像开运算实际上是一个组合运算,开运算是图像先进行腐蚀,再进行膨胀的运算。

图像被腐蚀后,去除了噪声,但是也压缩了图像;接着对腐蚀过的图像进行膨胀处理,使得刚才在腐蚀过程中被压缩的图像得以恢复原状。

下面是一个图像开运算的流程图:

5da6325d834389690c2d67f3aef82271.png

开运算的一些特性:

  • 开运算能够除去孤立的小点,毛刺和小桥,而总的位置和形状不便。
  • 开运算是一个基于几何运算的滤波器。
  • 结构元素大小的不同将导致滤波效果的不同。
  • 不同的结构元素的选择导致了不同的分割,即提取出不同的特征。

我们先不管开运算 OpenCV 为我们提供的函数是什么,先使用前面介绍过的图像腐蚀与膨胀处理看下结果:

import cv2 
dd0160aa4df3f8dfec0b659ef2331ccd.png

可以看到降噪的效果还是不错的。

接着看 OpenCV 为开运算提供的函数。

图像开运算主要使用到的函数是 morphologyEx() 它是形态学扩展的一组函数,而其中的 cv.MORPH_OPEN 对应的是开运算。

使用时语法如下:

dst = cv.morphologyEx(src, cv.MORPH_OPEN, kernel)
  • src:原图形
  • cv2.MORPH_OPEN:表示开运算
  • kernel:卷积核

我们再使用 morphologyEx() 函数去重新实现下刚才的图像开运算,看下和之前的结果有啥区别:

import cv2 
03dc8ea5fe0f67ed119a7057273113b7.png

至少从肉眼的角度上看不出来和之前的方式有啥区别,实际上也没啥区别。

形态学闭运算

与开运算相反的是闭运算,闭运算是图像先膨胀,后腐蚀,它有助于关闭前景物体内部的小孔,或物体上的小黑点。

先看下图像闭运算的流程图:

4823e094bae4f701a96a31b7809f871f.png

闭运算的一些特性:

  • 闭运算能够填平小湖(即小孔),弥合小裂缝,而总的位置和形状不变。
  • 闭运算是通过填充图像的凹角来滤波图像的。
  • 结构元素大小的不同将导致滤波效果的不同。
  • 不同结构元素的选择导致了不同的分割。

首先还是用 dilate()erode() 函数实现一下图像闭运算,代码如下:

import cv2 
3c602b1a8b12f2146a532409bdecd14a.png

如果想要使用形态学扩展的函数 morphologyEx() 则需要把里面的参数换成 MORPH_CLOSE ,同样,既然是形态学扩展函数,那么图像腐蚀和图像膨胀也有对应的参数:

  • 图像腐蚀:MORPH_ERODE
  • 图像膨胀:MORPH_DILATE

接着还是使用 MORPH_CLOSE 参数来实现下图像的闭运算:

import cv2 
c0e58113bd7df43f8ae4e768f6f2dacd.png

形态学梯度运算

图像形态学的梯度运算和前面的开运算闭运算是一样的,都是组合函数。

梯度运算实际上是图像膨胀减去图像腐蚀后的结果,最终我们得到的是一个类似于图像轮廓的图形。

6f683ac3a549c5bd8f9b43b8c612dab3.png

梯度运算在 morphologyEx()  函数中的参数是 MORPH_GRADIENT ,示例代码如下:

import cv2 
7ae989cde16a82e458d03ab9a65f6eb8.png

示例代码

如果有需要获取源码的同学可以在公众号回复「OpenCV」进行获取。

参考

http://www.woshicver.com/

https://blog.csdn.net/Eastmount/article/details/83651172

https://blog.csdn.net/hanshanbuleng/article/details/80657148

感谢阅读 9a5ae9380322207ec6f2f1106a6d3f08.png

45dbc25332073ab4f97497c98708534a.gif

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值