首页IT科技python 拉伸图片(Python从0到1丨图像增强及运算:形态学开运算、闭运算和梯度运算)

python 拉伸图片(Python从0到1丨图像增强及运算:形态学开运算、闭运算和梯度运算)

时间2025-08-05 07:52:43分类IT科技浏览5133
导读:摘要:本文主要介绍图像形态学处理,详细讲解了图像开运算、闭运算和梯度运算。数学形态学是一种应用于图像处理和模式识别领域的新方法,其基本思想是用具有一定形态的结构元素去量度和提取图像中对应形状以达到对图像分析和识别目的。...

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

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

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

一.图像开运算

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

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

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

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

src表示原始图像 cv2.MORPH_OPEN表示图像进行开运算处理 kernel表示卷积核        ,可以用numpy.ones()函数构建

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

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

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

# -*- coding: utf-8 -*- # By:Eastmount import cv2 import numpy as np #读取图片 src = cv2.imread(test01.png, cv2.IMREAD_UNCHANGED) #设置卷积核 kernel = np.ones((10,10), np.uint8) #图像开运算 result = cv2.morphologyEx(src, cv2.MORPH_OPEN, kernel) #显示图像 cv2.imshow("src", src) cv2.imshow("result", result) #等待显示 cv2.waitKey(0) cv2.destroyAllWindows()

运行结果如图3所示:

二.图像闭运算

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

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

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

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

src表示原始图像 cv2.MORPH_CLOSE表示图像进行闭运算处理 kernel表示卷积核                   ,可以用numpy.ones()函数构建

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

# -*- coding: utf-8 -*- # By:Eastmount import cv2 import numpy as np #读取图片 src = cv2.imread(test02.png, cv2.IMREAD_UNCHANGED) #设置卷积核 kernel = np.ones((10,10), np.uint8) #图像闭运算 result = cv2.morphologyEx(src, cv2.MORPH_CLOSE, kernel) #显示图像 cv2.imshow("src", src) cv2.imshow("result", result) #等待显示 cv2.waitKey(0) cv2.destroyAllWindows()

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

三.图像梯度运算

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

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

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

src表示原始图像 cv2.MORPH_GRADIENT表示图像进行梯度运算处理 kernel表示卷积核    ,可以用numpy.ones()函数构建

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

# -*- coding: utf-8 -*- import cv2 import numpy as np #读取图片 src = cv2.imread(test03.png, cv2.IMREAD_UNCHANGED) #设置卷积核 kernel = np.ones((10,10), np.uint8) #图像梯度运算 result = cv2.morphologyEx(src, cv2.MORPH_GRADIENT, kernel) #显示图像 cv2.imshow("src", src) cv2.imshow("result", result) #等待显示 cv2.waitKey(0) cv2.destroyAllWindows()

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

四.总结

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

参考文献:

[1]冈萨雷斯著                   ,阮秋琦译. 数字图像处理(第3版)[M]. 北京:电子工业出版社          ,2013. [2]阮秋琦. 数字图像处理学(第3版)[M]. 北京:电子工业出版社        ,2008. [3]毛星云                    ,冷雪飞. OpenCV3编程入门[M]. 北京:电子工业出版社             ,2015. [4]Eastmount. [Python图像处理] 八.图像腐蚀与图像膨胀[EB/OL]. (2018-10-31). https://blog.csdn.net/Eastmount/article/details/83581277.

点击关注    ,第一时间了解华为云新鲜技术~

声明:本站所有文章                     ,如无特殊说明或标注                ,均为本站原创发布            。任何个人或组织,在未征得本站同意时                  ,禁止复制      、盗用                     、采集              、发布本站内容到任何网站   、书籍等各类媒体平台                   。如若本站内容侵犯了原著者的合法权益                   ,可联系我们进行处理          。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
织梦手机自适应模板(织梦手机站内容页图片自适应去除style样式标签)