图像处理基础:图像膨胀、腐蚀、开闭运算及梯度运算的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的区域。原图膨胀结果如下图所示:

原图像:

python 图像腐蚀,图像处理,人工智能

结构元素:

python 图像腐蚀,图像处理,人工智能

膨胀后结果:

python 图像腐蚀,图像处理,人工智能

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)

原图:

python 图像腐蚀,图像处理,人工智能

膨胀后图像:

python 图像腐蚀,图像处理,人工智能

2、图像腐蚀
2.1、基本概念

图像腐蚀类似于“领域被蚕食”,是一种基本的形态学运算,主要用来寻找图像中的极小区域。这种运算将图像的高亮区域或白色部分进行缩减细化,使得运行结果图比原图的高亮区域更小。其运算符是“Θ”,可以通过定义的结构元素或卷积核与原始图像进行卷积操作实现。在二值图像中,腐蚀运算可以用“与”运算来实现。具体来说,就是用结构元素扫描图像的每一个像素,如果结构元素覆盖的区域中所有像素值都为1,则将该像素的值设为1。这样,图像中的高亮区域就会缩小,实现了腐蚀的效果。需要注意的是,腐蚀运算并不改变原始图像中像素值为0的区域。原图腐蚀结果如下图所示:

原图:

python 图像腐蚀,图像处理,人工智能

腐蚀元素:

python 图像腐蚀,图像处理,人工智能

腐蚀后结果:

python 图像腐蚀,图像处理,人工智能

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)

腐蚀后图像:

python 图像腐蚀,图像处理,人工智能

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)

原图像:

python 图像腐蚀,图像处理,人工智能

开运算图像结果:

python 图像腐蚀,图像处理,人工智能

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)

图像闭运算结果:

python 图像腐蚀,图像处理,人工智能

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)

梯度运算图像结果:

原图:

python 图像腐蚀,图像处理,人工智能

梯度运算图像结果:

python 图像腐蚀,图像处理,人工智能

三、总结

通过这些形态学操作,我们可以更好地理解图像处理的基本原理和方法,掌握图像处理的基本技能,为进一步的图像分析和处理打下基础。文章来源地址https://www.toymoban.com/news/detail-757340.html

到了这里,关于图像处理基础:图像膨胀、腐蚀、开闭运算及梯度运算的Python实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Halcon形态学处理-腐蚀、膨胀、开运算、闭运算、顶帽运算和底帽运算

    提示:文章参考了网络上其他作者的文章,以及相关书籍,如有侵权,请联系作者。        图像的形态学处理是对图像的局部像素进行处理,用于从图像中提取有意义的局部图像细节。通过改变局部区域的像素形态,以对目标进行增强,或者为后续进行图像分割、特征提

    2024年02月05日
    浏览(113)
  • Python从0到1丨了解图像形态学运算中腐蚀和膨胀

    摘要: 这篇文章将详细讲解图像形态学知识,主要介绍图像腐蚀处理和膨胀处理。 本文分享自华为云社区《[Python从零到壹] 四十七.图像增强及运算篇之腐蚀和膨胀详解》,作者: eastmount 。 数学形态学的应用可以简化图像数据,保持它们基本的形状特征,并出去不相干的结

    2024年02月06日
    浏览(30)
  • 图像处理技巧形态学滤波之腐蚀操作

    欢迎回来,我的图像处理爱好者们!今天,让我们深入研究图像处理领域中的形态学计算。这些非线性的图像处理技术允许我们操纵图像中对象的形状和结构。在本系列中,我们将依次介绍四种基本的形态学操作:腐蚀、膨胀、开操作和闭操作。 闲话少说,我们直接开始吧!

    2024年02月13日
    浏览(30)
  • opencv基础-38 形态学操作-闭运算(先膨胀,后腐蚀)cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

    闭运算是先膨胀、后腐蚀的运算,它有助于关闭前景物体内部的小孔,或去除物体上的小黑点,还可以将不同的前景图像进行连接。 例如,在图 8-17 中,通过先膨胀后腐蚀的闭运算去除了原始图像内部的小孔(内部闭合的闭运算),其中: 左图是原始图像。 中间的图是对原

    2024年02月14日
    浏览(48)
  • 图片的腐蚀,膨胀,开丶闭运算,梯度计算,礼帽与黑帽

    1 腐蚀操作 用于图片的去毛刺,内容削减 2 膨胀操作 3 开运算,闭运算 4 梯度运算 5 礼帽与黑帽  

    2023年04月21日
    浏览(20)
  • opencv 图像腐蚀膨胀 erode dilate

    2024年02月16日
    浏览(38)
  • 使用 OpenCV 进行图像操作:腐蚀、膨胀等等

    形态变换是根据形状变换图像的图像处理方法。这一过程有助于区域形状的表征和描绘。这些变换使用应用于输入图像的结构元素,并生成输出图像。形态学操作有多种用途,包括去除图像中的噪声、定位图像中的强度凹凸和孔洞以及连接图像中的不同元素。形态转变有两种

    2024年02月09日
    浏览(28)
  • matlab自己编写代码实现二值图像‘腐蚀与膨胀’

    我是将 1白视为主体,0黑视为背景 结构元素的中心在图像的边界的时候,会有导致结构元素的一部分在图像外,所以我在处理图像的时候先将图像放大 一个待处理对象X,一个结构元素S,S对X的腐蚀得到的结果是由X中能够包含整个S的像素点所组成的。 我的理解: 将S的中心依

    2024年02月05日
    浏览(31)
  • Opencv基础操作-腐蚀操作-膨胀操作

    腐蚀操作原理(使价值信息越来越少) 初始化一个核(初始化大小和尺寸),类似于一个滑动窗口,在目标图像上面进行遍历,若这个窗口内图像的像素都大于或者都小于窗口元素(都为前景或者背景)则不进行操作,若不同,则将窗口内对应的图像像素进行腐蚀操作( 将

    2024年02月03日
    浏览(30)
  • (数字图像处理MATLAB+Python)第三章图像基本运算-第二节:图像代数运算

    A:概述 加法运算 :指将两幅同大小的图像进行像素级别的加法操作,得到一幅新的图像。设两幅图像对应的像素值分别为 f 1 ( x , y ) f_{1}(x,y) f 1 ​ ( x , y ) 和 f 2 ( x , y ) f_{2}(x,y) f 2 ​ ( x , y ) ,则它们的加法运算可表示为 g ( x , y ) = f 1 ( x , y ) + f 2 ( x , y ) g(x,y)=f_{1}(x,y) + f_{

    2023年04月12日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包