Python从0到1丨图像增强及运算:形态学开运算、闭运算和梯度运算

图像梯度运算的实现代码如下所示。图像梯度运算处理的结果如图7所示,左边为原始图像,右边为处理后的效果图。四.总结 本文主要介绍图像形态学处理,详细讲解了图像开运算、闭运算和梯度运算。数学形态学是一种应用于图像处理和模式识别领域的新方法,其基本思想是用具有一定形态的结构元素去量度和提取图像中...
Python从0到1丨图像增强及运算:形态学开运算、闭运算和梯度运算
本文主要介绍图像形态学处理,详细讲解了图像开运算、闭运算和梯度运算。数学形态学是一种应用于图像处理和模式识别领域的新方法,其基本思想是用具有一定形态的结构元素去量度和提取图像中对应形状以达到对图像分析和识别目的。

本文分享自华为云社区《 [Python从零到壹] 四十八.图像增强及运算篇之形态学开运算、闭运算和梯度运算》,作者: eastmount 。

本文主要介绍图像形态学处理,详细讲解了图像开运算、闭运算和梯度运算。数学形态学是一种应用于图像处理和模式识别领域的新方法,其基本思想是用具有一定形态的结构元素去量度和提取图像中对应形状以达到对图像分析和识别目的。

一.图像开运算

开运算一般能平滑图像的轮廓,削弱狭窄部分,去掉较细的突出。闭运算也是平滑图像的轮廓,与开运算相反,它一般熔合窄的缺口和细长的弯口,去掉小洞,填补轮廓上的缝隙。图像开运算是图像依次经过腐蚀、膨胀处理的过程,图像被腐蚀后将去除噪声,但同时也压缩了图像,接着对腐蚀过的图像进行膨胀处理,可以在保留原有图像的基础上去除噪声。其原理如图1所示。

设A是原始图像,B是结构元素图像,则集合A被结构元素B做开运算,记为A◦B,其定义为:

换句话说,A被B开运算就是A被B腐蚀后的结果再被B膨胀。图像开运算在OpenCV中主要使用函数morphologyEx(),它是形态学扩展的一组函数,其函数原型如下:

dst = cv2.morphologyEx(src, cv2.MORPH_OPEN, kernel)

图像开运算的代码如下所示:

输出结果如图2所示,左边为原始图像,右边为处理后的图像,可以看到原始图形中的噪声点被去除了部分。

但处理后的图像中仍然有部分噪声,如果想更彻底地去除,可以将卷积设置为10×10的模板,代码如下所示:

运行结果如图3所示:

二.图像闭运算

图像闭运算是图像依次经过膨胀、腐蚀处理的过程,先膨胀后腐蚀有助于过滤前景物体内部的小孔或物体上的小黑点。其原理如图4所示:

设A是原始图像,B是结构元素图像,则集合A被结构元素B做开运算,记为A·B,其定义为:

换句话说,A被B闭运算就是A被B膨胀后的结果再被B腐蚀。图像开运算在OpenCV中主要使用函数morphologyEx(),其函数原型如下:

dst = cv2.morphologyEx(src, cv2.MORPH_CLOSE, kernel)

图像开运算的代码如下所示:

输出结果如图5所示,它有效地去除了图像中间的小黑点(噪声)。

三.图像梯度运算

图像梯度运算是图像膨胀处理减去图像腐蚀处理后的结果,从而得到图像的轮廓,其原理如图6所示,(a)表示原始图像,(b)表示膨胀处理后的图像,(c)表示腐蚀处理后的图像,(d)表示图像梯度运算的效果图。

在Python中,图像梯度运算主要调用morphologyEx()实现,其中参数cv2.MORPH_GRADIENT表示梯度处理,函数原型如下:

dst = cv2.morphologyEx(src, cv2.MORPH_GRADIENT, kernel)

图像梯度运算的实现代码如下所示。

图像梯度运算处理的结果如图7所示,左边为原始图像,右边为处理后的效果图。

四.总结

本文主要介绍图像形态学处理,详细讲解了图像开运算、闭运算和梯度运算。数学形态学是一种应用于图像处理和模式识别领域的新方法,其基本思想是用具有一定形态的结构元素去量度和提取图像中对应形状以达到对图像分析和识别目的。2024-10-23
mengvlog 阅读 34 次 更新于 2025-09-11 02:07:18 我来答关注问题0
  •  翡希信息咨询 Python从0到1丨图像增强及运算:形态学开运算、闭运算和梯度运算

    定义:图像开运算是图像依次经过腐蚀、膨胀处理的过程。作用:平滑图像的轮廓,削弱狭窄部分,去掉较细的突出,同时去除噪声。实现:在OpenCV中使用morphologyEx函数,参数为cv2.MORPH_OPEN和定义好的结构元素。图像闭运算:定义:图像闭运算是图像依次经过膨胀、腐蚀处理的过程。作用:平滑图像的轮廓,熔合窄的...

  •  深空见闻 用python实现rag

    首先需要下载并安装ollama,然后在命令行中运行相关命令以确认安装成功。安装成功后,可以直接使用ollama提供的API或模块来调用模型,实现RAG应用。这种方法相对简单,适合快速搭建RAG应用。从0到1搭建企业级RAG问答系统:需要深入了解RAG的原理和实现方法,可以参考相关的Python教程。教程通常会涵盖模型选择、数...

  •  蓝韵生活馆 从0到1用ai赚钱

    首先,要明确“从0到1”意味着你需要从零基础开始,逐步积累知识与经验,并最终将这些转化为实际价值。对于初学者来说,最重要的是选择一个具体的切入点。AI的应用范围非常广泛,包括自然语言处理(NLP)、计算机视觉、推荐系统、数据分析等。每一种技术都有其特定的应用场景和市场需求。例如,如果你对文...

  •  深空见闻 range函数的三种用法

    range(m)生成从0到m-1的整数序列。range(m, n)生成从m到n-1的整数序列,需要m小于n。range(m, n, k)生成从m开始,每次增加k,直到小于n的整数序列,提供了步长控制。这些用法使得range函数在Python编程中非常灵活和强大,可以用于循环迭代、生成数列等多种场景。

  •  翡希信息咨询 从0到1学习Python爬虫-使用Chrome浏览器进行抓包!

    从0到1学习Python爬虫,使用Chrome浏览器进行抓包的步骤如下:打开Chrome浏览器并进入开发者工具:打开Chrome浏览器,输入你想要抓包的网站地址。按下F12键,即可打开Chrome的开发者工具。定位到Network面板:在开发者工具中,有多个面板可供选择。为了进行抓包,你需要定位到Network面板。Network面板用于显示请求...

檬味博客在线解答立即免费咨询

Python相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部