点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

关于OpenCV形态学使用基础可以查看公众号免费的OpenCV视频教程,其中有详细介绍,本篇文章主要介绍形态学中一些实用但是容易被忽略的技巧与演示。

形态学中常用的方法有膨胀,腐蚀,开运算,闭运算,形态学梯度,顶帽,黑帽和击中击不中,大多以膨胀和腐蚀为基础操作,需要注意的是膨胀和腐蚀都是对图像中的高亮部分(二值图白色部分)处理起作用,如果是白色背景黑色目标要做取反操作,否则得到的结果是相反的。进入正题,技巧与应用场景介绍:

(1)膨胀的应用。膨胀的结果类似“领域扩张”,白色区域将会扩大,常用于断开区域的连接。如下图,假如想连接3条线

我们可以这么做:

Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
dilate(gray, gray, element);

虽然3段线段连成了1段,但是线的宽度明细也增加了,如果我不想线的宽度明显增加怎么办?答案是修改结构元素的Size值,比如为Size(1,15),这样增大竖直方向的膨胀力度(反之增大水平方向膨胀力度),效果如下:

Mat element = getStructuringElement(MORPH_RECT, Size(1, 15));
dilate(gray, gray, element);

(2)腐蚀的应用。腐蚀的结果类似“领域蚕食”,白色区域将会缩小,常用于连接区域的切断。下面的图像,假如只想保留水平线,该怎么操作?

同样在结构元素Size上做文章,设置Size()值为Size(60,1),不与它相似的区域结构将被腐蚀,效果如下:

Mat element = getStructuringElement(MORPH_RECT, Size(60, 1));
erode(gray, gray, element);

(3)开运算应用。比如下面的图像,如果想去除字母C区域周围的毛边,就可以用开运算。

代码与效果:

Mat element = getStructuringElement(MORPH_RECT, Size(5, 5));
morphologyEx(gray, gray, MORPH_OPEN, element); //开运算

(4)闭运算应用。比如下面的图像,如果想去除字母C区域内部的黑色孔洞,就可以用闭运算。

代码与效果:

Mat element = getStructuringElement(MORPH_RECT, Size(9, 9));
morphologyEx(gray, gray, MORPH_CLOSE, element); //闭运算

(5)形态学梯度应用。比如下面的图像,提取边缘或轮廓框架,就可以用形态学梯度。

代码与效果:

Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));
morphologyEx(gray, gray, MORPH_GRADIENT, element); //形态学梯度

(6)顶帽应用。比如下面的图像,想提取C区域的边缘毛刺,就可以用顶帽操作。

代码与效果:

Mat element = getStructuringElement(MORPH_RECT, Size(7, 7));
morphologyEx(gray, gray, MORPH_TOPHAT, element); //顶帽

(7)黑帽应用。比如下面的图像,想提取C区域的内部黑洞区域,就可以用黑帽操作。

代码与效果:

Mat element = getStructuringElement(MORPH_RECT, Size(9, 9));
morphologyEx(gray, gray, MORPH_BLACKHAT, element); //黑帽

(8)自定义结构元素应用。特定的结构元素会特定的结构区域特别起作用。比如圆形结构元素对圆形区域效果特别好,但是OpenCV默认值提供了3中结构,不包含圆形,那么我们可以自己创建圆形结构元素,通过画圆或遍历像素的方法。如下图,我们分别用矩形结构元素和圆形结构元素腐蚀,查看对比效果:

矩形结构元素与效果:

Mat element = getStructuringElement(MORPH_RECT, Size(35, 35));
erode(gray, gray, element);

自定义圆形结构元素与效果(更好的保留了圆形结构):

Mat element = Mat::zeros(Size(35, 35), CV_8UC1);
circle(element, Point(17, 17), 18, Scalar::all(1), -1);
erode(gray, gray, element);

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

OpenCV形态学处理使用技巧与应用演示相关推荐

  1. OpenCV—形态学运算定义与实现

    OpenCV-形态学运算定义与实现 1.形态学运算与结构元素 形态学运算是针对二值图像依据数学形态学(Mathematical Morphology)的集合论方法发展起来的图像处理方法.数学形态学起源 ...

  2. OpenCV形态学运算

    1.OpenCV形态学运算morphologyEx(开运算 .闭运算 .形态学梯度 .顶帽运算 .黑帽运算 .腐蚀运算 .膨胀运算 .击中击不中运算) void cv::morphologyEx (I ...

  3. OpenCV形态学操作

    OpenCV形态学操作 本文转载自:http://blog.csdn.net/byxdaz/article/details/5775717 一.图像腐蚀 膨胀 细化的基本原理   1.图像细化的基本原 ...

  4. 小白opencv的入门处理技巧

    小白opencv的入门处理技巧 在这里插入代码片@TOC** 在这里插入代码片 import cv2 import numpy as np #i=cv2.imread("D:\\TP\\MT ...

  5. OpenCV 形态学操作之腐蚀与膨胀,开运算与闭运算,顶帽与黑帽,图像梯度运算相关知识点回顾

    Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧.本篇博客是这个系列的第 45 篇. 该系列文章导航参考:https://blog.csdn.net/hihell/categ ...

  6. 15、OpenCV形态学操作——Hit-or-Miss

    OpenCV形态学操作--Hit-or-Miss 一.学习目标 二.Hit-or-Miss 一.学习目标 理解什么是Hit-or-Miss 学会在OpenCV中使用Hit-or-Miss 二.Hit- ...

  7. opencv 形态学变换 morphologyEx函数

    opencv 形态学变换 morphologyEx函数 demo:http://download.csdn.net/detail/keen_zuxwang/9852594 高级形态学变换: 开运算: ...

  8. OpenCV中图像修复技术介绍与演示

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 现实中图像经常出现划伤或者被噪声腐蚀或 ...

  9. OpenCV | 二值图像分析的技巧都在这里

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 轮廓模型 二值图像分析最常见的一个主要 ...

最新文章

  1. 2021年春季学期-信号与系统-第七次作业参考答案-第九小题
  2. 面试系列-SpringMVC那些事(一)
  3. 算法竞赛进阶指南第一章--题解
  4. 最近微信方面的更新   getUserInfo:fail scope unauthorized
  5. 多次点击android版本出现棒棒糖,android – 为前棒棒糖设备创建循环显示
  6. Android 系统(254)---Android libphonenumber Demo 手机号码归属地
  7. oracle中decode函数,行转列
  8. it is not your reason to quit.
  9. 【自我解析】2020华为杯数学建模比赛A题
  10. 通过PS的图层样式制作透明的玻璃字
  11. JAVA集合中常见的List和Map用法
  12. 论文解读:Making Pre-trained Language Models Better Few-shot Learners(LM-BFF)
  13. SSL 3.0 Poodle漏洞修复方法——转
  14. solidworks批量转存宏程序开发【可下载】
  15. STM32模拟USB多点触控屏
  16. 青龙面板-快手极速版(每天3块脚本)
  17. supplier java8_Java 8之 Supplier示例
  18. 微信小程序 日期比较,计算天数
  19. 视频会议必备设备-无线流媒体网关
  20. 【智能商业】传统企业该如何拥抱AI?德勤说野心别太大,分四步实施

热门文章

  1. 算力觉醒后,智慧距离勃发就只差一个想法
  2. COCO 2018 Keypoint冠军算法解读
  3. “剁手”的第十年,AI加持下的快递速度你还满意吗?
  4. 人工智能灵魂注入,燃烧你的卡路里——2018,你AI了吗!?
  5. 首长,Redis性能优化十三条军规立好了,请过目~
  6. 科普:教你如何看懂 JavaGC 日志
  7. Openresty最佳案例 | 第7篇: 模块开发、OpenResty连接Redis
  8. 用Python进行时间序列分解和预测
  9. 急我所需!机器学习、深度学习绘图模板.ppt
  10. OpenAI数十亿代码训出Codex:能将英语翻译成代码,给四句话就能写个神经网络...