0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python调用OpenCV实现图像腐蚀案例

新机器视觉 来源:CSDN 2023-12-20 10:20 次阅读

本篇文章主要讲解Python调用OpenCV实现图像腐蚀和图像膨胀的算法,基础性知识希望对您有所帮助。

1.基础理论

2.图像腐蚀代码实现

3.图像膨胀代码实现

一. 基础知识

(注:该部分参考作者论文《一种改进的Sobel算子及区域择优的身份证智能识别方法》)

图像的膨胀(Dilation)和腐蚀(Erosion)是两种基本的形态学运算,主要用来寻找图像中的极大区域和极小区域。其中膨胀类似于“领域扩张”,将图像中的高亮区域或白色部分进行扩张,其运行结果图比原图的高亮区域更大;腐蚀类似于“领域被蚕食”,将图像中的高亮区域或白色部分进行缩减细化,其运行结果图比原图的高亮区域更小。

1.图像膨胀

膨胀的运算符是“⊕”,其定义如下:

ce3a27de-9eda-11ee-8b88-92fbcf53809c.png

该公式表示用B来对图像A进行膨胀处理,其中B是一个卷积模板或卷积核,其形状可以为正方形或圆形,通过模板B与图像A进行卷积计算,扫描图像中的每一个像素点,用模板元素与二值图像元素做“与”运算,如果都为0,那么目标像素点为0,否则为1。从而计算B覆盖区域的像素点最大值,并用该值替换参考点的像素值实现膨胀。下图是将左边的原始图像A膨胀处理为右边的效果图A⊕B。

ce4a0fa0-9eda-11ee-8b88-92fbcf53809c.jpg

2.图像腐蚀

腐蚀的运算符是“-”,其定义如下:

ce516e44-9eda-11ee-8b88-92fbcf53809c.png

该公式表示图像A用卷积模板B来进行腐蚀处理,通过模板B与图像A进行卷积计算,得出B覆盖区域的像素点最小值,并用这个最小值来替代参考点的像素值。如图所示,将左边的原始图像A腐蚀处理为右边的效果图A-B。

ce584a34-9eda-11ee-8b88-92fbcf53809c.jpg

处理结果如下图所示:

ce6a2d62-9eda-11ee-8b88-92fbcf53809c.jpg

二. 图像腐蚀代码实现

1.基础理论

形态学转换主要针对的是二值图像(0或1)。图像腐蚀类似于“领域被蚕食”,将图像中的高亮区域或白色部分进行缩减细化,其运行结果图比原图的高亮区域更小。其主要包括两个输入对象:

(1)二值图像

(2)卷积核

卷积核是腐蚀中的关键数组,采用numpy库可以生成。卷积核的中心点逐个像素扫描原始图像,如下图所示:

ce846240-9eda-11ee-8b88-92fbcf53809c.jpg

被扫描到的原始图像中的像素点,只有当卷积核对应的元素值均为1时,其值才为1,否则其值修改为0。换句话说,遍历到的黄色点位置,其周围全部是白色,保留白色,否则变为黑色,图像腐蚀变小。

ce92300a-9eda-11ee-8b88-92fbcf53809c.jpg

2.函数原型

图像腐蚀主要使用的函数为erode,其原型如下:

dst = cv2.erode(src, kernel, iterations)

参数dst表示处理的结果,src表示原图像,kernel表示卷积核,iterations表示迭代次数。下图表示5*5的卷积核,可以采用函数 np.ones((5,5), np.uint8) 构建。

cea3083a-9eda-11ee-8b88-92fbcf53809c.jpg

注意:迭代次数默认是1,表示进行一次腐蚀,也可以根据需要进行多次迭代,进行多次腐蚀。

3.代码实现

完整代码如下所示:

ceb4fa22-9eda-11ee-8b88-92fbcf53809c.jpg

输出结果如下图所示:

cec83d8a-9eda-11ee-8b88-92fbcf53809c.jpg

由图可见,干扰的细线被进行了清洗,但仍然有些轮廓,此时可设置迭代次数进行腐蚀。

erosion = cv2.erode(src, kernel,iterations=9)

输出结果如下图所示:

ced9656a-9eda-11ee-8b88-92fbcf53809c.png

三. 图像膨胀代码实现

1.基础理论

图像膨胀是腐蚀操作的逆操作,类似于“领域扩张”,将图像中的高亮区域或白色部分进行扩张,其运行结果图比原图的高亮区域更大,线条变粗了,主要用于去噪。

(1) 图像被腐蚀后,去除了噪声,但是会压缩图像。

(2) 对腐蚀过的图像,进行膨胀处理,可以去除噪声,并且保持原有形状。

cee3dca2-9eda-11ee-8b88-92fbcf53809c.jpg

它也包括两个输入对象:

(1)二值图像或原始图像

(2)卷积核

卷积核是腐蚀中的关键数组,采用numpy库可以生成。卷积核的中心点逐个像素扫描原始图像,如下图所示:

cef5d7ae-9eda-11ee-8b88-92fbcf53809c.jpg

被扫描到的原始图像中的像素点,当卷积核对应的元素值只要有一个为1时,其值就为1,否则为0。

2.函数原型

图像膨胀主要使用的函数为dilate,其原型如下:

dst = cv2.dilate(src, kernel, iterations)

参数dst表示处理的结果,src表示原图像,kernel表示卷积核,iterations表示迭代次数。下图表示5*5的卷积核,可以采用函数 np.ones((5,5), np.uint8) 构建。

cf05beb2-9eda-11ee-8b88-92fbcf53809c.jpg

注意:迭代次数默认是1,表示进行一次膨胀,也可以根据需要进行多次迭代,进行多次膨胀。通常进行1次膨胀即可。

3.代码实现

完整代码如下所示:

cf152898-9eda-11ee-8b88-92fbcf53809c.jpg

输出结果如下所示:

cf25ecf0-9eda-11ee-8b88-92fbcf53809c.jpg

图像去噪通常需要先腐蚀后膨胀,这又称为开运算,下篇文章将详细介绍。如下图所示:

erosion = cv2.erode(src, kernel)

result = cv2.dilate(erosion, kernel)

cf41b908-9eda-11ee-8b88-92fbcf53809c.jpg

作者:Eastmount

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 图像处理
    +关注

    关注

    26

    文章

    1225

    浏览量

    55827
  • 函数
    +关注

    关注

    3

    文章

    3882

    浏览量

    61310
  • python
    +关注

    关注

    51

    文章

    4677

    浏览量

    83467

原文标题:Python图像处理:图像腐蚀与图像膨胀

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Python图像处理:图像腐蚀图像膨胀

    为1。从而计算B覆盖区域的像素点最大值,并用该值替换参考点的像素值实现膨胀。下图是将左边的原始图像A膨胀处理为右边的效果图A⊕B。 2.图像腐蚀腐蚀
    发表于 11-23 16:39

    Vivado HLS实现OpenCV图像处理的设计流程与分析

    本文通过对OpenCV图像类型和函数处理方法的介绍,通过设计实例描述在vivadoHLS中调用OpenCV库函数实现
    发表于 07-08 08:30

    LabVIEW+Python+openCV

    的,动态链接库也需要配置,还需要知道各个参数含义和类型,这里提供另外一种方法,那就是PythonopenCV工具包,绝对开源和免费,LabVIEW可以利用Python节点调用
    发表于 12-07 20:59

    如何使用Python中的OpenCV模块检测颜色

    在这篇文章中,我们将看到如何使用 Python 中的 OpenCV 模块检测颜色,进入这个领域的第一步就是安装下面提到的模块。pip install opencv-pythonpip install
    发表于 02-09 16:31

    图像腐蚀_《OpenCV3编程入门》书本配套源代码

    OpenCV3编程入门》书本配套源代码:图像腐蚀
    发表于 06-06 15:39 3次下载

    图像腐蚀与膨胀综合示例_《OpenCV3编程入门》书本配套源代码

    OpenCV3编程入门》书本配套源代码:图像腐蚀与膨胀综合示例
    发表于 06-06 15:52 5次下载

    用morphologyEx进行图像腐蚀_《OpenCV3编程入门》配套源代码

    OpenCV3编程入门》书本配套源代码:用morphologyEx进行图像腐蚀
    发表于 06-06 15:52 2次下载

    图像腐蚀_OpenCV3编程入门-源码例程全集

    OpenCV3编程入门-源码例程全集-图像腐蚀,感兴趣的小伙伴们可以瞧一瞧。
    发表于 09-18 16:55 0次下载

    用morphologyEx进行图像腐蚀_OpenCV3编程入门-源码例程

    OpenCV3编程入门-源码例程全集-用morphologyEx进行图像腐蚀,感兴趣的小伙伴们可以瞧一瞧。
    发表于 09-18 16:55 0次下载

    python图像处理opencv步骤是怎么样的

    越来越觉得python是一强大的工具,处理样本确实不错。最近因项目需要涉及到图片处理,所以开始用python调用opencv,再次觉得python
    发表于 12-04 15:29 4233次阅读

    如何使用OpenCVPython和深度学习在图像和视频中实现面部识别?

    Face ID 的兴起带动了一波面部识别技术热潮。本文将介绍如何使用 OpenCVPython 和深度学习在图像和视频中实现面部识别,以基于深度识别的面部嵌入,实时执行且达到高准确度
    的头像 发表于 07-17 16:20 7815次阅读

    OpenCV中的Python实现

    类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现图像处理和计算机视觉方面的很多通用算法。 OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然
    的头像 发表于 08-25 15:55 1866次阅读

    如何使用PythonOpenCV进行图像拼接

      图像拼接是计算机视觉中最成功的应用之一。如今,很难找到不包含此功能的手机或图像处理API。在本文中,我们将讨论如何使用PythonOpenCV进行
    的头像 发表于 10-26 15:59 1528次阅读

    如何使用OpenCVPython图像中提取感兴趣区域

    今天我们将一起探究如何使用OpenCVPython图像中提取感兴趣区域(ROI)。 在之间的文章中,我们完成了图像边缘提取,例如从台球桌中提取桌边。使用了简单的
    的头像 发表于 02-07 14:42 1437次阅读

    Python实现OpenCV的安装与使用

      本文实例讲述了 Python 实现 OpenCV 的安装与使用。分享给大家供 大家参考,具体如下:  由于下一步要开始研究下深度学习,而深度学习领域很多的算法和应 用都是用 Python
    发表于 07-20 11:46 7次下载