9.3 Python图像处理之图像数学形态学-灰度形态学

文章目录

  • 9.3 Python图像处理之图像数学形态学-灰度形态学
    • 1 算法原理
    • 2 代码
    • 3 效果

1 算法原理

灰度图像与二值图像的区别在于其记录了灰度信息,所以,形态学处理的定义与二值图像有些不同,因为二值图像可以用一系列的二维坐标来表示图像信息,而灰度图需要一个三维坐标表示,而且二值图像中结构元SE是平坦的,没有灰度信息的,但灰度图中,结构元是可以带有第三维信息的,即结构元也是灰度的,这就带来了一些问题,因为二值图像中,形态学的输出结果完全由输入图像产生,但是结构元一旦引入灰度信息,那么输出结果将不再由输入图像唯一确定。所以,一般情况下,结构元都使用平坦的结构元。

腐蚀与膨胀是形态学的基本操作,在灰度图像中也是如此,在二值图像中腐蚀和膨胀定义为对图像进行 translation 以后的“与”和“或”的逻辑操作结果,在灰度图像中,为了保存灰度信息,“与”和“或”操作被对应的替换成了“最大值”和“最小值”操作这样就给出了灰度图像中腐蚀和膨胀的操作定义。

Erosion(腐蚀),公式如下:

直观上就是,暗的地方会更暗(整体亮度减小)。

Dilation(膨胀),公式如下:

与腐蚀不同的就是与 SE(卷积核) 相加,取最大值。直观上,就是原图亮的地方会更亮(整体亮度增加),且范围扩大。

Open(开启),先腐蚀后膨胀。直观上就是消除了原图上比 SE 小的亮处。

Close(闭合),先膨胀后腐蚀。直观上与 Open 相反,消除了暗处。

2 代码

运行代码说明

1.要改变代码中的图片地址(地址不能有中文)

更改put(path)函数中的路径put(r'../image/image1.jpg')

2.注意最后的plt.savefig('1.new.jpg')是保存plt图像,如果不使用可以注释掉

代码依赖包:

matplotlib  3.4.2
numpy  1.20.3
opencv-python  4.1.2.30
# pip安装
pip install matplotlib numpy opencv-python
import numpy as np
import cv2
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = Falsedef put(path):# 读取图片 0是黑色,255是白色img = cv2.imread(path)# 由于cv2.imread 读取图像格式为b,g,r但是 plt显示按照 rgb次序!因此要转换一下。b, g, r = cv2.split(img)img2 = cv2.merge([r, g, b])src = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 设置卷积核kernel = np.ones((3, 3), np.uint8)# 图像腐蚀处理res1 = cv2.erode(src, kernel)# 图像膨胀处理res2 = cv2.dilate(src, kernel)# 图像开运算res3 = cv2.morphologyEx(src, cv2.MORPH_OPEN, kernel)# 图像闭运算res4 = cv2.morphologyEx(src, cv2.MORPH_CLOSE, kernel)# 图像显示plt.subplot(231), plt.imshow(img2, plt.cm.gray), plt.title('原始图像'), plt.axis('off')plt.subplot(232), plt.imshow(src, plt.cm.gray), plt.title('灰度图像'), plt.axis('off')plt.subplot(233), plt.imshow(res1, plt.cm.gray), plt.title('腐蚀'), plt.axis('off')plt.subplot(234), plt.imshow(res2, plt.cm.gray), plt.title('膨胀'), plt.axis('off')plt.subplot(235), plt.imshow(res3, plt.cm.gray), plt.title('开运算'), plt.axis('off')plt.subplot(236), plt.imshow(res4, plt.cm.gray), plt.title('闭运算'), plt.axis('off')# plt.savefig('3.new-img.jpg')plt.show()# 图像处理函数,要传入路径
put(r'../image/image3.jpg')

3 效果

血小板三个字的变化比较明显

9.3 Python图像处理之图像数学形态学-灰度形态学相关推荐

  1. 9.4 Python图像处理之图像数学形态学-基于灰度形态学的应用(形态梯度、形态平滑、高帽变换、低帽变换)

    9.4 Python图像处理之图像数学形态学-基于灰度形态学的应用(形态梯度.形态平滑.高帽变换.低帽变换) 文章目录 9.4 Python图像处理之图像数学形态学-基于灰度形态学的应用(形态梯度.形 ...

  2. 9.2.1 Python图像处理之图像数学形态学-二值形态学应用之噪声消除

    9.2.1 Python图像处理之图像数学形态学-二值形态学应用之噪声消除 文章目录 9.2.1 Python图像处理之图像数学形态学-二值形态学应用之噪声消除 1 算法原理 2 代码 3 效果 1 ...

  3. 9.2.3 Python图像处理之图像数学形态学-二值形态学应用-区域填充

    9.2.3 Python图像处理之图像数学形态学-二值形态学应用-区域填充 文章目录 9.2.3 Python图像处理之图像数学形态学-二值形态学应用-区域填充 1 算法原理 2 代码 3 效果 1 ...

  4. 9.2.2 Python图像处理之图像数学形态学-二值形态学应用-目标检测

    9.2.2 Python图像处理之图像数学形态学-二值形态学应用-目标检测(击中与击不中) 文章目录 9.2.2 Python图像处理之图像数学形态学-二值形态学应用-目标检测(击中与击不中) 1 算 ...

  5. 9.1 Python图像处理之图像数学形态学-二值形态学(腐蚀、膨胀、开启、闭合)

    9.1 Python图像处理之图像数学形态学-二值形态学(腐蚀.膨胀.开启.闭合) 文章目录 9.1 Python图像处理之图像数学形态学-二值形态学(腐蚀.膨胀.开启.闭合) 1 算法原理 1.1 ...

  6. Python图像处理丨图像的灰度线性变换

    摘要:本文主要讲解灰度线性变换. 本文分享自华为云社区<[Python图像处理] 十五.图像的灰度线性变换>,作者:eastmount. 一.图像灰度线性变换原理 图像的灰度线性变换是通过 ...

  7. Python 图像处理实战 | 图像的灰度非线性变换之对数变换、伽马变换

    作者 | 杨秀璋 来源 | CSDN博客 责编 | 夕颜 头图 | 付费下载自视觉中国 出品 | CSDN(ID:CSDNnews) 本篇文章主要讲解非线性变换,使用自定义方法对图像进行灰度化处理,包 ...

  8. 8.1 Python图像处理之图像典型分割-SUSAN边缘检测

    8.1 Python图像处理之图像典型分割-SUSAN边缘检测 文章目录 8.1 Python图像处理之图像典型分割-SUSAN边缘检测 1 算法原理 2 代码 3 效果 1 算法原理 SUSAN 的 ...

  9. 8.3 Python图像处理之图像典型分割-分水岭分割

    8.3 Python图像处理之图像典型分割-分水岭分割 文章目录 8.3 Python图像处理之图像典型分割-分水岭分割 1 算法原理 2 代码 3 效果 1 算法原理 分水岭概念是以对图像进行三维可 ...

最新文章

  1. 只需十四步:从零开始掌握 Python 机器学习(附资源)
  2. android air创建文件夹,安卓版Airdrop将上线:无需安装APP,轻松实现文件隔空投送...
  3. Swift: 在Swift中桥接OC文件(自己创建的类文件、第三方库文件)
  4. 11、mybatis的功能架构分析
  5. java 导出excel 例子_java导出Excel例子
  6. pytorch中切换虚拟环境
  7. Dirichlet Process and Stick-Breaking(DP的Stick-breaking 构造)
  8. matlab meshc函数_有那些相见恨晚的MATLAB绘图命令
  9. STL vector 用法
  10. Linux之apache服务搭建以及浅析web安全
  11. 安装Exchange2010的详细步骤
  12. Jquery实现搜索框提示功能
  13. mysql查询表记录总数sql_SQL Server-快速查询表中的记录总数
  14. Ubuntu将推桌面美化计划促市场份额提升
  15. Learning with Pseudo-Ensembles
  16. AutoCAD系统变量和环境变量
  17. 项目:私“图”定制——利用ffmpeg制作Gif
  18. 苹果要加入Face ID到Mac,Magic Keyboard 添加 Touch Bar
  19. 同步线程和异步线程的区别
  20. 重磅 | 西安思考:“2018国际人工智能院长论坛”专家思想分享

热门文章

  1. 多线程间的5种通信方式
  2. 社交、内容、硬件,谁会成为工具类app的救命稻草?
  3. 适合中国程序员的保命教材——《程序员羊皮卷》书评(7)
  4. 解决 Microsoft Office Word 遇到问题需要关闭。我们对此引起的不便表示抱歉
  5. 火爆全球的ChatGPT到底能够帮助大学生什么??
  6. node进阶——之事无巨细手写koa源码(转)
  7. c++学习笔记day03
  8. Potplayer播放器使用笔记
  9. mysqld 命令相关介绍
  10. 再获殊荣!上海控安技术成果入选“2020年度上海市科技成果转化项目自主创新十强”