Python实例解析图像形态学运算技术

 更新时间:2022年03月16日 16:01:20   作者:Mr.Winter`  
形态学处理方法是基于对二进制图像进行处理的,卷积核决定图像处理后的效果。本文将为大家详细介绍一下OpenCV中的图像形态学,感兴趣的可以了解一下

1 图像形态学运算

Python OpenCV图像处理之图像滤波特效详解中我们将图像滤波进行了以下分类:

邻域滤波

  • 线性滤波
  • 非线性滤波

频域滤波

  • 低通滤波
  • 高通滤波

在非线性滤波中,之前只介绍了中值滤波,事实上,还有一类非常常用的非线性滤波方法,称为图像形态学运算(Morphological operations)。

图像形态学运算是一类基于图像形状运算的非线性滤波技术,其基本思想是利用一些特殊的结构元来测量或提取图像中相应的形状和特征,以便进一步进行图像分析和处理。这里结构元素就相当于我们在滤波中所涉及到的模板——一个给定像素的矩阵,这个矩阵形状可以任意,但一般是正方形。

接下来,我们分析一下几种经典的图像形态学运算算法,再编程测试一下~

2 腐蚀

腐蚀就是用局部灰度最小值代替目标像素值实现对高亮区域的腐蚀。

举个例子,有这样一张图像和这样一个结构元素,其中结构元素的蓝色方块表示的是模板原点。

下面我们开始遍历这张图像,到下图这个位置的时候,模板内灰度最小值是灰色方格的像素,因此替换掉模板原点中蓝色方格处的像素为灰色(原本为白色,被腐蚀了)

就这样遍历完这张图像得到

3 膨胀

膨胀就是用局部灰度最大值代替目标像素值实现对高亮区域的膨胀。

和腐蚀类似,遍历这张图像,到下图这个位置的时候,模板内灰度最大值是白色方格的像素,因此替换掉模板原点中蓝色方格处的像素为白色(原本为灰色,膨胀了)

就这样遍历完这张图像得到膨胀的最终结果为

上个实物图感受下腐蚀和膨胀的效果

4 开运算与闭运算

理解了图像腐蚀与膨胀,那么开闭运算就很容易了

  • 开运算(Opening):先腐蚀再膨胀
  • 闭运算(Closing):先膨胀再腐蚀

开运算能够除有效去除孤立点、毛刺和小桥;闭运算能够填平小孔,弥合缝隙。

上图假设灰色区域为高亮。

5 顶帽运算与底帽运算

顶帽运算与底帽运算是用于表征开闭运算与原图像间差异的运算,类似边缘检测的梯度差

  • 图像顶帽运算:表征原图像与开运算得到的图像之间的区别
  • 图像底帽运算:表征原图像与闭运算得到的图像之间的区别

6 恶魔与天使

先看看原图,一对可爱的猫咪

进行腐蚀操作,首先创建结构元

int eSize = 3;  //结构元尺寸
int s = eSize * 2 + 1;
Mat structureElement = getStructuringElement(MORPH_RECT, Size(s, s), Point(-1, -1)); 

接着用结构元遍历原图,OpenCV有封装好的API,直接调用即可

erode(src, dst, structureElement);
imshow("腐蚀操作后:", dst);

得到腐蚀后的图像如下所示,眼睛空洞洞的,有点恐怖片内味了,这还是原来那两只猫吗?

膨胀操作类似于腐蚀,也有OpenCV封装好的API

dilate(srcImg, dstImg, structureElement, Point(-1, -1), 1);
imshow("膨胀操作后:", dstImg);

膨胀出来的小猫就显得轻松很多,感觉升华了。

今后要是想有一张照片创造光与影正与邪天使与恶魔两种反差,可以考虑采用图像腐蚀和膨胀操作。

到此这篇关于Python实例解析图像形态学运算技术的文章就介绍到这了,更多相关Python 图像形态学运算内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • Python zip()函数用法实例分析

    Python zip()函数用法实例分析

    这篇文章主要介绍了Python zip()函数用法,结合实例形式较为详细的分析了Python zip()函数的功能、使用方法及相关操作注意事项,需要的朋友可以参考下
    2018-03-03
  • python 上下文管理器使用方法小结

    python 上下文管理器使用方法小结

    本文介绍了Python中的上下文管理器,以及如何结合with语句来使用上下文管理器,并且总结了一下with 语句的执行流程。在很多情况下,with语句可以简化代码,并增加代码的健壮性。
    2017-10-10
  • 30行Python代码打造一款简单的人工语音对话

    30行Python代码打造一款简单的人工语音对话

    使用gtts和speech_recognition实现简单的人工语音对话,通过将语音变成文本,然后文本变成语音,仅用30行代码,超级简单,对Python人工语音对话的实现过程及完整代码感兴趣的朋友一起看看吧
    2021-05-05
  • python免杀技术shellcode的加载与执行

    python免杀技术shellcode的加载与执行

    本文主要介绍了python免杀技术shellcode的加载与执行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • python通过Matplotlib绘制常见的几种图形(推荐)

    python通过Matplotlib绘制常见的几种图形(推荐)

    这篇文章主要介绍了使用matplotlib对几种常见的图形进行绘制方法的相关资料,需要的朋友可以参考下
    2021-08-08
  • python实现逢七拍腿小游戏的思路详解

    python实现逢七拍腿小游戏的思路详解

    这篇文章主要介绍了python实现逢七拍腿小游戏的思路,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • 有趣的python小程序分享

    有趣的python小程序分享

    这篇文章主要介绍了有趣的python小程序分享,具有一定参考价值,需要的朋友可以了解下。
    2017-12-12
  • Python实现线性搜索算法的示例代码

    Python实现线性搜索算法的示例代码

    线性搜索算法,也称为顺序搜索算法,是一种简单但常用的搜索技术,在本文中,将深入研究线性搜索算法,并演示如何在 Python 中实现它,需要的可以参考下
    2024-02-02
  • Python使用字典的嵌套功能详解

    Python使用字典的嵌套功能详解

    今天小编就为大家分享一篇关于Python使用字典的嵌套功能详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • 详解pandas库pd.read_excel操作读取excel文件参数整理与实例

    详解pandas库pd.read_excel操作读取excel文件参数整理与实例

    这篇文章主要介绍了pandas库pd.read_excel操作读取excel文件参数整理与实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02

最新评论