图像的腐蚀和膨胀运算,图像处理腐蚀和膨胀例题
本文将详细讲解图像形态学的知识,主要介绍图像腐蚀处理和膨胀处理。本文中的示例代码简单易懂,所以请跟随边肖学习它。
00-1010前言1。形态学理论知识2。形象腐蚀3。图像扩展4。摘要
目录
本文将详细讲解图像形态学的知识,主要介绍图像腐蚀处理和膨胀处理。数学形态学是应用于图像处理和模式识别领域的一种新方法。数学(也称为图像代数)是指基于形态学分析图像的数学工具。其基本思想是利用具有一定形态的结构元素来度量和提取图像中相应的形状,从而达到图像分析和识别的目的。
前言
形态学的应用可以简化图像数据,保持其基本的形状特征,并去除不相关的结构。数学算法有并行实现的天然结构,主要针对二值图像(0或1)。在图像处理中,二值形态学常用于图像分割、细化、骨架提取、边缘提取、形状分析、角点检测、分水岭算法等。由于其算法简单,可并行操作,所以常应用于硬件[1-2]。
常见的图像形态学操作包括:
膨胀打开操作、关闭操作、梯度操作、顶盖操作、底盖操作。这些操作主要通过OpenCV中的MorphologyEx()函数来实现。它可以使用基本的扩展和腐蚀技术进行更高级的形态变换,如开闭操作、形态渐变、顶帽、黑帽等。并且还可以实现最基本的图像扩展和腐蚀。其功能原型如下:
dst=cv2.morphologyEx(src,模型,内核)
src表示原始图像。
模型表示图像经过形态学处理,包括:
(1)cv2。MORPH_OPEN:打开操作
(2)cv2。MORPH_CLOSE:关闭操作
(3)cv2。形态渐变:形态渐变
(4)cv2。MORPH_TOPHAT:礼帽。
(5)cv2。MORPH_BLACKHAT:黑帽操作。
Kernel代表卷积核,可以用numpy.ones()函数构建。
一.形态学理论知识
图像的腐蚀和膨胀是两种基本的形态学操作,主要用于寻找图像中的最小和最大区域。图像腐蚀类似于“域被侵蚀”,对图像的高亮区域或白色部分进行缩小和细化,其运行结果比原图像小。
设A,B为一集合,A被B腐蚀,标为A-B,定义为:
公式表示图像A被卷积模板B腐蚀,通过模板B和图像A的卷积计算,得到B覆盖区域的最小像素值,用这个最小值代替参考点的像素值。如图1所示,左边的原始图像A被蚀刻成了右边的效果图A-B.
图像腐蚀主要包括两个输入对象:二值图像和卷积核。卷积核是腐蚀中的关键数组,可以由Numpy库生成。卷积核的中心点逐像素扫描原始图像,当卷积核的对应元素值都为1时,扫描的原始图像的像素值仅为1,否则,其像素值修改为0。在Python中,主要调用OpenCV的erode()函数来实现图像腐蚀。
其功能原型如下:
dst=cv2.erode(src,内核,迭代)
src表示原始图像。
kernel表示卷积核。
iterations表示迭代的次数,默认值为1,表示执行一次腐蚀操作。
您可以使用函数numpy.ones((5,5),numpy.uint8)创建一个55卷积核,如下所示:
图像蚀刻操作的代码如下:
# -*-编码: utf-8 -*-
# By:伊斯特蒙特
导入cv2
重要
t numpy as np
#读取图片
src = cv2.imread(test01.jpg, cv2.IMREAD_UNCHANGED)
#设置卷积核
kernel = np.ones((5,5), np.uint8)
#图像腐蚀处理
erosion = cv2.erode(src, kernel)
#显示图像
cv2.imshow("src", src)
cv2.imshow("result", erosion)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果如图2所示,左边表示原图,右边是腐蚀处理后的图像,可以发现图像中的干扰细线(噪声)被清洗干净。
如果腐蚀之后的图像仍然存在噪声,可以设置迭代次数进行多次腐蚀操作。比如进行9次腐蚀操作的核心代码如下:
erosion = cv2.erode(src, kernel,iterations=9)
最终经过9次腐蚀处理的输出图像如图3所示。
三.图像膨胀
图像膨胀是腐蚀操作的逆操作,类似于领域扩张,它将图像中的高亮区域或白色部分进行扩张,其运行结果比原图的高亮区域更大。
设A,B为集合,∅为空集,A被B的膨胀,记为A⊕B,其中⊕为膨胀算子,膨胀定义为:
该公式表示用B来对图像A进行膨胀处理,其中B是一个卷积模板,其形状可以为正方形或圆形,通过模板B与图像A进行卷积计算,扫描图像中的每一个像素点,用模板元素与二值图像元素做与运算,如果都为0,那么目标像素点为0,否则为1。从而计算B覆盖区域的像素点最大值,并用该值替换参考点的像素值实现图像膨胀。图4是将左边的原始图像A膨胀处理为右边的效果图A⊕B。
图像被腐蚀处理后,它将去除噪声,但同时会压缩图像,而图像膨胀操作可以去除噪声并保持原有形状,如图5所示。
在Python中,主要调用OpenCV的dilate()函数实现图像腐蚀。函数原型如下:
dst = cv2.dilate(src, kernel, iterations)
– src表示原始图像
– kernel表示卷积核,可以用numpy.ones()函数构建
– iterations表示迭代次数,默认值为1,表示进行一次膨胀操作
图像膨胀操作的代码如下所示:
# -*- coding: utf-8 -*-# By:Eastmount
import cv2
import numpy as np
#读取图片
src = cv2.imread(zhiwen.png, cv2.IMREAD_UNCHANGED)
#设置卷积核
kernel = np.ones((5,5), np.uint8)
#图像膨胀处理
erosion = cv2.dilate(src, kernel)
#显示图像
cv2.imshow("src", src)
cv2.imshow("result", erosion)
#等待显示
cv2.waitKey(0)
cv2.destroyAllWindows()
输出结果如图6所示:
四.总结
本文主要介绍图像形态学处理,详细讲解了图像腐蚀处理和膨胀处理。数学形态学是一种应用于图像处理和模式识别领域的新方法,其基本思想是用具有一定形态的结构元素去量度和提取图像中对应形状以达到对图像分析和识别目的。
到此这篇关于Python图像运算之腐蚀与膨胀详解的文章就介绍到这了,更多相关Python图像腐蚀 膨胀内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。