9.3 Python图像处理之图像数学形态学-灰度形态学
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图像处理之图像数学形态学-灰度形态学相关推荐
- 9.4 Python图像处理之图像数学形态学-基于灰度形态学的应用(形态梯度、形态平滑、高帽变换、低帽变换)
9.4 Python图像处理之图像数学形态学-基于灰度形态学的应用(形态梯度.形态平滑.高帽变换.低帽变换) 文章目录 9.4 Python图像处理之图像数学形态学-基于灰度形态学的应用(形态梯度.形 ...
- 9.2.1 Python图像处理之图像数学形态学-二值形态学应用之噪声消除
9.2.1 Python图像处理之图像数学形态学-二值形态学应用之噪声消除 文章目录 9.2.1 Python图像处理之图像数学形态学-二值形态学应用之噪声消除 1 算法原理 2 代码 3 效果 1 ...
- 9.2.3 Python图像处理之图像数学形态学-二值形态学应用-区域填充
9.2.3 Python图像处理之图像数学形态学-二值形态学应用-区域填充 文章目录 9.2.3 Python图像处理之图像数学形态学-二值形态学应用-区域填充 1 算法原理 2 代码 3 效果 1 ...
- 9.2.2 Python图像处理之图像数学形态学-二值形态学应用-目标检测
9.2.2 Python图像处理之图像数学形态学-二值形态学应用-目标检测(击中与击不中) 文章目录 9.2.2 Python图像处理之图像数学形态学-二值形态学应用-目标检测(击中与击不中) 1 算 ...
- 9.1 Python图像处理之图像数学形态学-二值形态学(腐蚀、膨胀、开启、闭合)
9.1 Python图像处理之图像数学形态学-二值形态学(腐蚀.膨胀.开启.闭合) 文章目录 9.1 Python图像处理之图像数学形态学-二值形态学(腐蚀.膨胀.开启.闭合) 1 算法原理 1.1 ...
- Python图像处理丨图像的灰度线性变换
摘要:本文主要讲解灰度线性变换. 本文分享自华为云社区<[Python图像处理] 十五.图像的灰度线性变换>,作者:eastmount. 一.图像灰度线性变换原理 图像的灰度线性变换是通过 ...
- Python 图像处理实战 | 图像的灰度非线性变换之对数变换、伽马变换
作者 | 杨秀璋 来源 | CSDN博客 责编 | 夕颜 头图 | 付费下载自视觉中国 出品 | CSDN(ID:CSDNnews) 本篇文章主要讲解非线性变换,使用自定义方法对图像进行灰度化处理,包 ...
- 8.1 Python图像处理之图像典型分割-SUSAN边缘检测
8.1 Python图像处理之图像典型分割-SUSAN边缘检测 文章目录 8.1 Python图像处理之图像典型分割-SUSAN边缘检测 1 算法原理 2 代码 3 效果 1 算法原理 SUSAN 的 ...
- 8.3 Python图像处理之图像典型分割-分水岭分割
8.3 Python图像处理之图像典型分割-分水岭分割 文章目录 8.3 Python图像处理之图像典型分割-分水岭分割 1 算法原理 2 代码 3 效果 1 算法原理 分水岭概念是以对图像进行三维可 ...
最新文章
- 只需十四步:从零开始掌握 Python 机器学习(附资源)
- android air创建文件夹,安卓版Airdrop将上线:无需安装APP,轻松实现文件隔空投送...
- Swift: 在Swift中桥接OC文件(自己创建的类文件、第三方库文件)
- 11、mybatis的功能架构分析
- java 导出excel 例子_java导出Excel例子
- pytorch中切换虚拟环境
- Dirichlet Process and Stick-Breaking(DP的Stick-breaking 构造)
- matlab meshc函数_有那些相见恨晚的MATLAB绘图命令
- STL vector 用法
- Linux之apache服务搭建以及浅析web安全
- 安装Exchange2010的详细步骤
- Jquery实现搜索框提示功能
- mysql查询表记录总数sql_SQL Server-快速查询表中的记录总数
- Ubuntu将推桌面美化计划促市场份额提升
- Learning with Pseudo-Ensembles
- AutoCAD系统变量和环境变量
- 项目:私“图”定制——利用ffmpeg制作Gif
- 苹果要加入Face ID到Mac,Magic Keyboard 添加 Touch Bar
- 同步线程和异步线程的区别
- 重磅 | 西安思考:“2018国际人工智能院长论坛”专家思想分享