首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

图像腐蚀与图像膨胀(Python篇)

  • 23-09-22 20:01
  • 2398
  • 12631
blog.csdn.net

        在大学期间积累过一定的图像处理经验,OCR技术在我的日常工作中偶尔会用到,还是比较重要的。本文介绍图像的膨胀和腐蚀的基本概念及其各自的代码实现。

        1.膨胀和腐蚀的基本概念

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

        1.1图像膨胀

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

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

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

        1.2图像腐蚀

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

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

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

        2.实现过程

        2.1图像腐蚀

图像腐蚀的过程:

       a.图像二值化,将图像的灰度值根据阈值进行0,1处理得到的图像;

       b.卷积核,对应信号处理中的高低频滤波器。常用numpy去设置,np.ones((m,n), np.uint8) 表示指定m*n的卷积核;

       c.图像的腐蚀,cv2.erode(二值化图像, 卷积核, 迭代次数)

代码处理过程:

  1. import cv2
  2. import numpy as np
  3. ## 测试图片,为反斜杠
  4. pic = 'C:/1.jpg'
  5. ## a.图像的二值化 ,这里没有做阈值处理
  6. src = cv2.imread(pic,cv2.IMREAD_UNCHANGED)
  7. ## b.设置卷积核5*5
  8. kernel = np.ones((5,5),np.uint8)
  9. ## c.图像的腐蚀,默认迭代次数
  10. erosion = cv2.erode(src,kernel)
  11. ## 效果展示
  12. cv2.imshow('origin',src)
  13. ## 腐蚀后
  14. cv2.imshow('after erosion',erosion)

图片处理效果对比:

        2.2图像膨胀

图像膨胀时腐蚀的逆过程,往往先通过腐蚀使图片线条变窄,然后腐蚀可以去除噪声。图像膨胀的处理过程:

a.图像二值化,将图像的灰度值根据阈值进行0,1处理得到的图像;

b.卷积核,对应信号处理中的高低频滤波器。常用numpy去设置,np.ones((m,n), np.uint8) 表示指定m*n的卷积核;

c.图像的腐蚀,cv2.dilate(二值化图像, 卷积核, 迭代次数)

代码处理过程:

  1. import cv2
  2. import numpy as np
  3. ## 测试图片,为反斜杠
  4. pic = 'C:/1.jpg'
  5. ## a.图像的二值化 ,这里没有做阈值处理
  6. src = cv2.imread(pic,cv2.IMREAD_UNCHANGED)
  7. ## b.设置卷积核5*5
  8. kernel = np.ones((5,5),np.uint8)
  9. ## c.图像的腐蚀,默认迭代次数
  10. erosion = cv2.erode(src,kernel)
  11. ## 图像的膨胀
  12. dst = cv2.dilate(erosion,kernel)
  13. ## 效果展示
  14. cv2.imshow('origin',src)
  15. ## 腐蚀后
  16. cv2.imshow('after erosion',erosion)
  17. ## 膨胀后
  18. cv2.imshow('after dilate',dst)

图片效果对比:

文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树首页概览333612 人正在系统学习中
注:本文转载自blog.csdn.net的中国小宝的文章"https://blog.csdn.net/weixin_39128119/article/details/84172385"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top