【计算机视觉教程|计算机视觉教程2-7(天使与恶魔?图文详解图像形态学运算(附代码))】
文章图片
目录
- 1 图像形态学运算
- 2 腐蚀
- 3 膨胀
- 4 开运算与闭运算
- 5 顶帽运算与底帽运算
- 6 恶魔与天使
1 图像形态学运算 在计算机视觉教程2-2:详解图像滤波算法(附Python实战)中我们将图像滤波进行了以下分类:
在非线性滤波中,之前只介绍了中值滤波,事实上,还有一类非常常用的非线性滤波方法,称为图像形态学运算(Morphological operations)。
- 邻域滤波
- 线性滤波
- 非线性滤波
- 频域滤波
- 低通滤波
- 高通滤波
图像形态学运算是一类基于图像形状运算的非线性滤波技术,其基本思想是利用一些特殊的结构元来测量或提取图像中相应的形状和特征,以便进一步进行图像分析和处理。这里结构元素就相当于我们在滤波中所涉及到的模板——一个给定像素的矩阵,这个矩阵形状可以任意,但一般是正方形。接下来,我们分析一下几种经典的图像形态学运算算法,再编程测试一下~
2 腐蚀 腐蚀就是用局部灰度最小值代替目标像素值实现对高亮区域的腐蚀。
举个例子,有这样一张图像和这样一个结构元素,其中结构元素的蓝色方块表示的是模板原点。
文章图片
下面我们开始遍历这张图像,到下图这个位置的时候,模板内灰度最小值是灰色方格的像素,因此替换掉模板原点中蓝色方格处的像素为灰色(原本为白色,被腐蚀了)
文章图片
就这样遍历完这张图像得到
文章图片
3 膨胀 膨胀就是用局部灰度最大值代替目标像素值实现对高亮区域的膨胀。
和腐蚀类似,遍历这张图像,到下图这个位置的时候,模板内灰度最大值是白色方格的像素,因此替换掉模板原点中蓝色方格处的像素为白色(原本为灰色,膨胀了)
文章图片
就这样遍历完这张图像得到膨胀的最终结果为
文章图片
上个实物图感受下腐蚀和膨胀的效果
文章图片
4 开运算与闭运算 理解了图像腐蚀与膨胀,那么开闭运算就很容易了
- 开运算(Opening):先腐蚀再膨胀
- 闭运算(Closing):先膨胀再腐蚀
文章图片
上图假设灰色区域为高亮。
5 顶帽运算与底帽运算 顶帽运算与底帽运算是用于表征开闭运算与原图像间差异的运算,类似边缘检测的梯度差
- 图像顶帽运算:表征原图像与开运算得到的图像之间的区别
- 图像底帽运算:表征原图像与闭运算得到的图像之间的区别
文章图片
进行腐蚀操作,首先创建结构元
int eSize = 3;
//结构元尺寸
int s = eSize * 2 + 1;
Mat structureElement = getStructuringElement(MORPH_RECT, Size(s, s), Point(-1, -1));
接着用结构元遍历原图,
OpenCV
有封装好的API,直接调用即可erode(src, dst, structureElement);
imshow("腐蚀操作后:", dst);
得到腐蚀后的图像如下所示,眼睛空洞洞的,有点恐怖片内味了,这还是原来那两只猫吗?
文章图片
膨胀操作类似于腐蚀,也有
OpenCV
封装好的APIdilate(srcImg, dstImg, structureElement, Point(-1, -1), 1);
imshow("膨胀操作后:", dstImg);
膨胀出来的小猫就显得轻松很多,感觉升华了。
文章图片
今后要是想有一张照片创造
光与影
、正与邪
、天使与恶魔
两种反差,可以考虑采用图像腐蚀和膨胀操作。限于篇幅,无法再粘贴代码,完整的工程文件请关注下方二维码回复“CV006”领取,已经给你们打包好了哦~
计算机视觉基础教程说明
章号内容更多精彩专栏:
0色彩空间与数字成像
1计算机几何基础
2图像增强、滤波、金字塔
3图像特征提取
4图像特征描述
5图像特征匹配
6立体视觉
7项目实战
- 《机器人原理与技术》
- 《计算机视觉教程》
- 《机器学习》
- 《嵌入式系统》
- 《数值优化方法》
- …
配套代码 · 优质体验 · 系统知识 请关注
推荐阅读
- python|Mx-yolov3环境配置+本地模型训练+K210
- python|论文记录(图像描述技术综述)
- GBASE新闻|GBASE南大通用为行业信创发展提速 亮相全国信创与人工智能发展博士后论坛
- stm32初学时的常见问题|STM32F411和STM32F401混用时的串口引脚问题
- 人工智能|anaconda命令行下安装深度学习pytorch的d2l包
- Python 让我舅舅的书法作品和 PIL 库发生点美的误会
- 介绍一个文本语音神器,几行代码就能搞定!
- 一天搞定CSS---终篇CSS总结
- 算法学习|分治思想-终篇