图像处理基础:图像膨胀、腐蚀、开闭运算及梯度运算的Python实现 |
您所在的位置:网站首页 › 图形图像制作是什么专业类别的 › 图像处理基础:图像膨胀、腐蚀、开闭运算及梯度运算的Python实现 |
目录 一、为什么要进行图像处理? 二、图像形态学的四种基本操作 1、图像膨胀 1.1、基本概念 1.2、膨胀函数代码展示 2、图像腐蚀 2.1、基本概念 2.2、腐蚀函数代码展示 3、图像开运算 3.1、基本概念 3.2、开运算函数代码展示 4、图像闭运算 4.1、基本概念 4.2、闭运算函数代码展示 5、图像梯度运算 5.1、基本概念 5.2、梯度运算函数代码展示 三、总结 一、为什么要进行图像处理?图像处理可以通过增强、复原、几何变换、代数运算、滤波处理等技术,对受到污染、干扰等因素影响产生的低清晰度、变形等图像质量问题进行有效的改善,以达到人眼主观满意或较满意的效果。而且图像处理可以通过边缘检测、图像分割、纹理分析等技术,提取图像中目标的某些特征,以便于计算机分析或机器人识别。 二、图像形态学的四种基本操作 1、图像膨胀 1.1、基本概念图像膨胀类似于“领域扩张”,是一种基本的形态学运算,主要用来寻找图像中的极大区域。这种运算将图像的高亮区域或白色部分进行扩张,使得运行结果图比原图的高亮区域更大。其运算符是“⊕”,可以通过定义的结构元素或卷积核与原始图像进行卷积操作实现。在二值图像中,膨胀运算可以用“与”运算来实现。具体来说,就是用结构元素扫描图像的每一个像素,如果结构元素覆盖的区域中至少有一个像素值为1,则将该像素的值设为1。这样,图像中的高亮区域就会扩大,实现了膨胀的效果。需要注意的是,膨胀运算并不改变原始图像中像素值为0的区域。原图膨胀结果如下图所示: 原图像: 结构元素: 膨胀后结果: 1.2、膨胀函数代码展示膨胀函数: cv2.dilate(img, kernel, iteration) img:需要进行膨胀操作的原始图像。kernel:用于膨胀操作的结构元素或卷积核。iteration:可选参数,表示膨胀操作的迭代次数。如果指定了这个参数,那么膨胀操作将会重复执行指定次数。实际案例展示: wenzi = cv2.imread('wenzi.png')#读取原图像 cv2.imshow('src',wenzi) cv2.waitKey(100000) kernel = np.ones((2,2),np.uint8) #设置kenenel大小 wenzi_new = cv2.dilate(wenzi,kernel,iterations=2) #膨胀操作 cv2.imshow('wenzi_new',wenzi_new) cv2.waitKey(100000)原图: 膨胀后图像: 2、图像腐蚀 2.1、基本概念图像腐蚀类似于“领域被蚕食”,是一种基本的形态学运算,主要用来寻找图像中的极小区域。这种运算将图像的高亮区域或白色部分进行缩减细化,使得运行结果图比原图的高亮区域更小。其运算符是“Θ”,可以通过定义的结构元素或卷积核与原始图像进行卷积操作实现。在二值图像中,腐蚀运算可以用“与”运算来实现。具体来说,就是用结构元素扫描图像的每一个像素,如果结构元素覆盖的区域中所有像素值都为1,则将该像素的值设为1。这样,图像中的高亮区域就会缩小,实现了腐蚀的效果。需要注意的是,腐蚀运算并不改变原始图像中像素值为0的区域。原图腐蚀结果如下图所示: 原图: 腐蚀元素: 腐蚀后结果: 2.2、腐蚀函数代码展示腐蚀函数: cv2.erode(src, kernel, dst,anchor,iterations,borderType,borderValue) src:原始图像,即需要进行腐蚀操作的图像。kernel:用于腐蚀操作的结构元素或卷积核。dst:可选参数,表示腐蚀操作后的输出图像。如果不指定该参数,那么函数将返回一个新的图像对象。anchor:可选参数,表示结构元素的锚点位置。默认情况下,锚点位于结构元素的中心。iterations:可选参数,表示腐蚀操作的迭代次数。如果指定了这个参数,那么腐蚀操作将会重复执行指定次数。borderType:可选参数,表示图像边界的类型。如果指定了这个参数,那么函数将会在腐蚀操作前对图像进行边界处理。borderValue:可选参数,表示边界值。如果指定了borderType参数,那么该参数表示用于边界处理的像素值。实际案例展示: import numpy as np import cv2 sun = cv2.imread('sun.png') cv2.imshow('src',sun) cv2.waitKey(100000) kernel = np.ones((3,3),np.uint8) #设置kenenel大小 erosion_1 = cv2.erode(sun,kernel,iterations=5) #进行腐蚀操作 cv2.imshow('erosion_1',erosion_1) cv2.waitKey(100000)腐蚀后图像: 3、图像开运算 3.1、基本概念图像开运算是图像依次经过腐蚀、膨胀处理后的过程。具体来说,图像被腐蚀后,可以去除噪声,但也会压缩图像;接着对腐蚀过的图像进行膨胀处理,可以进一步去除噪声,并恢复原有图像的大小。开运算能够去除图像中的小物体,在纤细点分离物体,平滑较大物体的边界同时并不明显改变其面积。 3.2、开运算函数代码展示 cv2.morphologyEx(src, op, kernel, dst=None, anchor=None, iterations=None, borderType=None, borderValue=None)上述为形态学扩展操作的函数代码,适用于开运算、闭运算以及梯度运算等,下述不再重复。 op:指定的形态学操作类型,可以是开运算(cv2.MORPH_OPEN)、闭运算(cv2.MORPH_CLOSE)、梯度运算(cv2.MORPH_GRADIENT)等。dst:可选参数,表示形态学操作后的输出图像。如果不指定该参数,那么函数将返回一个新的图像对象。anchor:可选参数,表示结构元素的锚点位置。默认情况下,锚点位于结构元素的中心。iterations:可选参数,表示形态学操作的迭代次数。如果指定了这个参数,那么形态学操作将会重复执行指定次数。borderType:可选参数,表示图像边界的类型。如果指定了这个参数,那么函数将会在形态学操作前对图像进行边界处理。borderValue:可选参数,表示边界值。如果指定了borderType参数,那么该参数表示用于边界处理的像素值。实际案例展示: zhiwen = cv2.imread('zhiwen.png') cv2.imshow('src',zhiwen) cv2.waitKey(100000) kernel = np.ones((2,2),np.uint8) #设置kenenel大小 zhiwen_new = cv2.morphologyEx(zhiwen,cv2.MORPH_OPEN,kernel) #开运算 cv2.imshow('zhiwen_new',zhiwen_new) cv2.waitKey(100000)原图像: 开运算图像结果: 4、图像闭运算 4.1、基本概念图像闭运算是图像依次经过膨胀、腐蚀处理后的过程。具体来说,图像先膨胀,后腐蚀,它能够帮助关闭前景物体内部的小孔,或去除物体上的小黑点。闭运算能够填平小湖(即小孔),弥合小裂缝,而总的位置和形状不变。 4.2、闭运算函数代码展示基于上述开运算后,图像仍有部分噪音没有去除,下列代码进行图像闭运算。 实际案例展示: zhiwen = cv2.imread('zhiwen_duan.png') cv2.imshow('src',zhiwen) cv2.waitKey(100000) kernel = np.ones((4,4),np.uint8) #设置kenenel大小 zhiwen_new = cv2.morphologyEx(zhiwen,cv2.MORPH_CLOSE,kernel) #闭运算 cv2.imshow('zhiwen_new',zhiwen_new) cv2.waitKey(100000)图像闭运算结果: 5、图像梯度运算 5.1、基本概念图像梯度运算是一种形态学操作,它通过计算图像膨胀结果与腐蚀结果的差值,得到图像的边界信息。具体来说,膨胀操作是将图像中的高亮区域或白色部分进行扩张,而腐蚀操作则是将图像中的高亮区域缩小。因此,通过计算膨胀与腐蚀的差值,可以得到图像中物体的边缘轮廓,即图像的梯度信息。这种操作可以用于提取图像中的边缘特征,增强图像的可视化效果,以及进行图像分割和识别等任务。 5.2、梯度运算函数代码展示 wenzi = cv2.imread('wenzi.png') cv2.imshow('wenzi_new',wenzi) cv2.waitKey(100000) kernel = np.ones((2,2),np.uint8) #设置kenenel大小 bianyuan = cv2.morphologyEx(wenzi,cv2.MORPH_GRADIENT,kernel)#梯度运算 cv2.imshow('bianyuan',bianyuan) cv2.waitKey(100000)梯度运算图像结果: 原图: 梯度运算图像结果: 三、总结通过这些形态学操作,我们可以更好地理解图像处理的基本原理和方法,掌握图像处理的基本技能,为进一步的图像分析和处理打下基础。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |