腐蚀和膨胀是最基本的形态学运算。

腐蚀和膨胀是针对白色部分(高亮部分)而言的。

膨胀就是对图像高亮部分进行“领域扩张”,效果图拥有比原图更大的高亮区域;腐蚀是原图中的高亮区域被蚕食,效果图拥有比原图更小的高亮区域。

膨胀

膨胀就是求局部最大值的操作,从图像直观看来,就是将图像光亮部分放大,黑暗部分缩小。

#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>using namespace std;
using namespace cv;//膨胀
int main()
{Mat img = imread("lol1.jpg");namedWindow("原始图", WINDOW_NORMAL);imshow("原始图", img);Mat out;//获取自定义核Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); //第一个参数MORPH_RECT表示矩形的卷积核,当然还可以选择椭圆形的、交叉型的//膨胀操作dilate(img, out, element);namedWindow("膨胀操作", WINDOW_NORMAL);imshow("膨胀操作", out);waitKey(0);}

可以看到,图像原来光亮的部分被放大了,黑暗的部分被缩小了。

腐蚀

#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>using namespace std;
using namespace cv;//腐蚀
int main()
{Mat img = imread("lol1.jpg");namedWindow("原始图", WINDOW_NORMAL);imshow("原始图", img);Mat out;//获取自定义核Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); //第一个参数MORPH_RECT表示矩形的卷积核,当然还可以选择椭圆形的、交叉型的//腐蚀操作erode(img, out, element);namedWindow("腐蚀操作", WINDOW_NORMAL);imshow("腐蚀操作", out);waitKey(0);}

可以看到,图像原来黑暗的部分被放大了,明亮的部分被缩小了。

开运算:先腐蚀再膨胀,用来消除小物体

闭运算:先膨胀再腐蚀,用于排除小型黑洞

形态学梯度:就是膨胀图与俯视图之差,用于保留物体的边缘轮廓。

顶帽:原图像与开运算图之差,用于分离比邻近点亮一些的斑块。

黑帽:闭运算与原图像之差,用于分离比邻近点暗一些的斑块。

opencv里有一个很好的函数getStructuringElement,我们只要往这个函数传相应的处理参数,就可以进行相应的操作了,使用起来非常方便。

下面列举一下相应的操作宏定义。

#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>using namespace std;
using namespace cv;//高级形态学处理
int main()
{Mat img = imread("lol1.jpg");namedWindow("原始图", WINDOW_NORMAL);imshow("原始图", img);Mat out;//获取自定义核Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); //第一个参数MORPH_RECT表示矩形的卷积核,当然还可以选择椭圆形的、交叉型的//高级形态学处理,调用这个函数就可以了,具体要选择哪种操作,就修改第三个参数就可以了。这里演示的是形态学梯度处理morphologyEx(img, out, MORPH_GRADIENT, element);namedWindow("形态学处理操作", WINDOW_NORMAL);imshow("形态学处理操作", out);waitKey(0);}

形态学梯度处理

这个是顶帽运算的效果

OpenCV探索之路——图像形态学处理(膨胀、腐蚀、开运算、闭运算)相关推荐

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

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

  2. opencv 实现图像形态学操作 膨胀和腐蚀 开闭运算 形态学梯度 顶帽和黑帽

    图像膨胀和腐蚀 图解 原理及python实现 更多内容:图像膨胀和腐蚀原理及python实现 opencv中膨胀和腐蚀函数 dilation = cv.dilate(img, kernel) # 膨胀 ...

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

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

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

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

  5. opencv c++ 图像形态学操作

    1.图像的形态学操作 包括图像的腐蚀.膨胀.开.闭.形态学梯度.顶帽.黑帽.分支主题.结构元素等操作. 具体概念参考:(41条消息) 图像处理-形态学处理_Good@dz的博客-CSDN博客_图像处理 ...

  6. OpenCv之图像形态学(笔记08)

    腐蚀:其原理是在原图的小区域内取局部最小值.这个核也叫结构元素,因为形态学操作其实也是应用卷积来实现的,结构元素可以是矩形.椭圆.十字架,可以用cv2.getStructuringElement()来 ...

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

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

  8. 图像形态学变换 膨胀和腐蚀 开闭运算 边缘检测 opencv实现

    一. 官方文档: dilate(膨胀): 函数原型 ↑ 参数说明 ↑ cv.erode(腐蚀)的使用和其类似. 二. 实验:膨胀和腐蚀 # Writer : wojianxinygcl@163.com ...

  9. OpenCV3学习(4.3)——图像形态学(膨胀,腐蚀)

    在图像处理技术中,有一些的操作会对图像的形态发生改变,这些操作一般称之为形态学操作(phology).数学形态学是基于集合论的图像处理方法,最早出现在生物学的形态与结构中,图像处理中的形态学操作用于图 ...

最新文章

  1. SQL Server 中print Datetime类型问题
  2. VSCODE打开一个文件,另一个文件就关闭的问题的解决方法
  3. SpringBoot - 优雅的实现【异步编程】
  4. 物联网、云计算、大数据、人工智能之间有怎样的联系和区别?
  5. win7任务栏计算机图标,Win7系统任务栏怎么添加显示桌面图标 显示桌面图标如何放到win7任务栏...
  6. cnn池化层输入通道数_(pytorch-深度学习系列)CNN中的池化层-学习笔记
  7. nodejs 进阶:图片缩小
  8. css常用属性总结:颜色和单位
  9. 修改Yarn的全局安装和缓存位置
  10. SSH Iptables访问控制
  11. 五年来,开源论坛软件MyBB共修复100多个漏洞
  12. 书写「简历」时,需要规避的错误
  13. mysql最多多少个索引_在一个球的周围,最多能摆放多少个相同尺寸的球在它周围?...
  14. #脚本实现宠物动作行为_短视频剧情创作方法有哪些?爆款短视频的标配,只需88个脚本模板...
  15. 5、手把手教React Native实战之盒子模型BoxApp
  16. 问题分析与解决——ADSL错误代码(转)
  17. 用麦咖啡(mcafee)打造自己的安全服务器
  18. 浅谈摄某网绕过图片水印查看下载无水印图片
  19. 华为交换机端口配置删除_华为交换机配置_华为交换机怎么清除端口下所有配置?...
  20. SylixOS中断延迟队列

热门文章

  1. 第4章 Selenium2-java WebDriver API (三)
  2. android studio crashlytics,Crashlytics发现了一个无效的API密钥 – AndroidStudio构建
  3. java datediff函数_JPA Criteria 中 DATEDIFF 函数的使用
  4. Golang Hash MD4
  5. Java大对象lob_JavaEE JDBC 读写LOB大对象
  6. mysql系统特性_MySQL · 引擎特性 · InnoDB 事务系统
  7. 你知道 ES6~ES12等叫法是怎么来的吗?
  8. SQL SERVER 系列(2)数据库的创建、修改和删除
  9. .NET Core 3.0带来桌面支持(Windows Only)
  10. 2012中国移动社交游戏市场盈利模式探讨