不多说,先上图

1、形态学概述之二

上一篇介绍了形态学的基本操作膨胀和腐蚀,我们这一篇将利用膨胀和腐蚀操作实现对图像更高级的形态学操作,而这些都是建立在膨胀和腐蚀操作基础之上。 首先形态学的主要用途是获取物体拓扑和结果信息,它通过物体和结构元素的某些运算,得到物体更本质的形态,在图像处理中的主要应用有:
(1). 利用形态学的基本运算对图像进行观察和处理,从而达到改善图像质量的目的
(2). 描述和定义图像的各种几何参数和特征如面积、周长、连通、颗粒度、骨架和方向性
我们通过腐蚀和膨胀两种基本的形态学操作实现开运算、闭运算、形态梯度、顶帽、黑帽五种形态学操作。

2、具体形态学操作的介绍和原理分析

开运算(Opening)

开运算是通过先对图像腐蚀再膨胀实现,其原理表达式如下:
dst=open(src,element)=dilate(erode(src,element))
能够排除小团块物体(假设物体较背景明亮),开运算的结果删除了不能包含结构元素的对象区域,平滑了对象的轮廓,断开了狭窄的连接,去掉了细小的突出部分。

闭运算(Closing)

闭运算在数学上是先膨胀再腐蚀的结果,其原理表达式如下:
dst=close(src,element)=erode(dilate(src,element))
能够排除小型黑洞(黑色区域),能够平滑对象的轮廓,但是与开运算不同的是闭运算一般会将狭窄的缺口连接起来形成细长的弯口,并填充比结构元素小的洞。

形态梯度(Morphological Gradient)

形态梯度是膨胀图与腐蚀图之差,其操作原理表达式如下:
dst=morph(src,element)=dilate(src,element)-erode(src,element)
形态梯度操作能够保留物体的边缘轮廓

顶帽(Top Hat)

顶帽操作是原图像与开运算结果图之差,其原理表达式如下:
dst=tophat(src,element)=src-open(src,element)
开运算的结果是放大了裂缝或局部降低亮度的区域,因此从原图中减去开运算后的图得到的效果图能够突出比原图轮廓周围的区域更明亮的区域,且这一操作与选择的核的大小有关。 顶帽操作往往用来分离比邻近点亮一些的板块,在一幅图像具有大幅背景而微小物品比较有规律的情况下,可以使用顶帽运算进行背景提取。

黑帽(Black Hat)

黑帽运算是闭运算结果图与原图像之差,其原理表达式如下:
dst=blackhat(src,element)=close(src,element)-src
黑帽运算后的效果图突出了比原图轮廓周围的区域更暗的区域,这一操作也与选择的核尺寸有关。所以黑帽运算用来分离比邻近点暗一些的斑块,效果图有着非常完美的轮廓。opencv中提供了形态学操作函数morphologyEx()来实现开运算、闭运算、形态学梯度、顶帽、黑帽等五种相对高级的操作,也可以实现膨胀核腐蚀两种基本的形态学操作。

3、源代码参考

#include <opencv2/core/core.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>using namespace cv;
using namespace std;int main()
{Mat srcImage = imread("F://Pic01.png");imshow("原图", srcImage);Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));Mat dst1, dst2, dst3, dst4, dst5, ;morphologyEx(srcImage, dst1, MORPH_OPEN, element);imshow("开运算", dst1);morphologyEx(srcImage, dst2, MORPH_CLOSE, element);imshow("闭运算",dst2);morphologyEx(srcImage, dst3, MORPH_TOPHAT, element);imshow("顶帽", dst3);morphologyEx(srcImage, dst4, MORPH_GRADIENT, element);imshow("形态梯度学", dst4);morphologyEx(srcImage, dst5, MORPH_BLACKHAT, element);imshow("黑帽", dst5);waitKey(0);return 0;
}

效果图

原图

开运算图

闭运算图

形态梯度学图

顶帽图

黑帽图

形态学滤波(2):开运算、闭运算、形态梯度、顶帽、黑帽相关推荐

  1. opencv 膨胀_【3】OpenCV图像处理模块(5)更多的形态学变换(开、闭、形态梯度、顶帽、黑帽)...

    形态学变换有多种类型,上一节展示了最基本的腐蚀和膨胀.本节使用OpenCV提供的 cv::morphologyEx()函数实现多种形态学变换,如开运算.闭运算.形态学梯度.顶帽变换.黑帽变换等. 理论 ...

  2. C++ OpenCV形态学操作--开闭操作,形态学梯度,顶帽,黑帽

    https://my.oschina.net/u/4582134/blog/4582844

  3. OpenCV学习笔记(八):形态学morpholgy(2):开/闭运算,形态学梯度、顶帽/黑帽morphologyEx()

    OpenCV学习笔记(八):形态学morpholgy(2):开.闭运算,形态学梯度.顶帽.黑帽:morphologyEx() 数学形态学(Mathematical morphology) 是一门建立在 ...

  4. C# EMGU 3.4.1学习笔记(三)综合示例:形态学滤波(腐蚀/膨胀、开运算/闭运算、顶帽运算/黑帽运算)

    以下是<OpenCV3编程入门>中6.4.9的示例程序的C# + EMGU 3.4.1版: 有任何问题或疑问,欢迎交流探讨. using System; using System.Coll ...

  5. OpenCV与图像处理学习六——图像形态学操作:腐蚀、膨胀、开、闭运算、形态学梯度、顶帽和黑帽

    OpenCV与图像处理学习六--图像形态学操作:腐蚀.膨胀.开.闭运算.形态学梯度.顶帽和黑帽 四.图像形态学操作 4.1 腐蚀和膨胀 4.1.1 图像腐蚀 4.1.2 图像膨胀 4.2 开运算与闭运 ...

  6. opencv3.2.0形态学滤波之开运算、闭运算

    /*一.开运算:(1)开运算,其实就是先腐蚀后膨胀的过程.(2)数学表达式:dst = open(src,element) = dilate(erode(src,element))(3)作用:开运算平 ...

  7. opencv python 图像形态学操作/图像腐蚀/图像膨胀/开运算/闭运算/顶帽/黑帽

    Morphological Transformations 1图像腐蚀 腐蚀的基本思想:侵蚀前景物体的边界(总是试图保持前景为白色):内核在图像中滑动(如在2D卷积中).只有当内核下的所有像素都是1时 ...

  8. 膨胀 腐蚀 开运算 闭运算 matlab,11. 形态学膨胀、腐蚀、开运算、闭运算

    1. 膨胀:对边界点进行扩充,填充空洞,使边界向外部扩张的过程. 2. 腐蚀:消除物体边界点,使边界向内部收缩的过程,把小于结构元素的物体去除掉. 3. 开运算: 先腐蚀后膨胀的过程称为开运算,作用: ...

  9. 2020.11.01 使用OpenCV进行图像形态学操作(开、闭、梯度)【OpenCV C++】

    进行基础的图像形态学操作练习 (开操作.闭操作.梯度.顶帽.黑帽操作) 源代码: // #include <opencv2/opencv.hpp> #include <iostrea ...

  10. 《OpenCV3编程入门》学习笔记6 图像处理(四)形态学滤波(2):开运算、闭运算、形态学梯度、顶帽、黑帽

    6.4 形态学滤波(2):开运算.闭运算.形态学梯度.顶帽.黑帽 高级形态学变换,基于腐蚀与膨胀,利用morphologyEx函数实现 6.4.1 开运算 1.腐蚀后膨胀的过程,数学表达式:dst=o ...

最新文章

  1. 自动驾驶外卖上线,美团即将配送一切
  2. 【推荐系统】KDD2021推荐系统论文集锦
  3. 10个最常见的数据库缺陷
  4. 大话设计模式之策略模式
  5. 前端学习(2237):react实现疫情数据
  6. centos删除gnome_自定义你的 GNOME 桌面主题 | Linux 中国
  7. 9.2 配置rsync+inotify实时同步
  8. 我的世界java种子 要塞,《我的世界》你绝对没见过的稀奇种子,恐龙骨架出现在要塞...
  9. 《计算机网络 自顶向下方法》(第7版)答案(第四章)
  10. 用NE5532运算放大器制作降噪耳机
  11. [深度学习] 深度可分离卷积
  12. 【推荐】智慧医疗应用和研究资料合集
  13. mac支持fat32格式吗 mac支持什么格式的移动硬盘
  14. PCB叠层排布原则以及AD中如何设计叠层
  15. 记录每日习题(35)
  16. Error mounting /dev/sda8 at /media/wxp/
  17. Codeforces Problemset
  18. NTP网络时间服务器应用“智能交通‘边缘云脑’系统
  19. python教程1009python教程_GitHub - gyl1009/codeparkshare: Python初学者(零基础学习Python、Python入门)书籍、视频、资料、社区推荐...
  20. 字母异位词分组 两种解法 (Python)

热门文章

  1. avio_open成功avformat_write_header失败
  2. OpenCV——Delaunay三角剖分 [转载]
  3. 和谐世界又平了一些...
  4. Maven Wrapper 之 SpringBoot 项目下的 mvnw.cmd
  5. [Python图像识别] 五十.Keras构建AlexNet和CNN实现自定义数据集分类详解
  6. java 对象锁和类锁的区别
  7. Excel里科学计数法7.07E-05的含义
  8. 《Python数据分析与挖掘实战》第12章(中)——协同推荐
  9. 推荐几款1500元左右适合初学者入门吉他评测分析
  10. 计算机网络作业——物理层