OpenCV3编程入门读书笔记4-形态学滤波
一、腐蚀和膨胀
1、腐蚀和膨胀的主要功能
(1)消除噪声
(2)分割出独立的图像元素,在图像中连接相邻的元素
(3)寻找图像中的极大值或者极小值区域
(4)求出图像的梯度
2、膨胀(dilate)
膨胀就是求局部最大值的操作。从数学角度来说,就是将图像与核进行卷积,计算核B覆盖区域的像素点的最大值,并把这个最大值赋值给参考点指定的元素。这样就会使图像中的高亮区域逐渐增长。
3、腐蚀(erode)
腐蚀和膨胀是相反的操作,腐蚀是求局部最小值的操作。腐蚀操作会使图像中的高亮区逐渐减小。
4、膨胀和腐蚀示例
Mat srcImage = imread("E:\\CodeResource\\opencv\\car_pic\\car1.jpg",);
Mat element = getStructuringElement(MORPH_RECT, Size(, ));
Mat dilateImage;
dilate(srcImage, dilateImage, element);
Mat erodeImage;
erode(srcImage, erodeImage, element);
imshow("srcImage", srcImage);
imshow("dilateImage", dilateImage);
imshow("erodeImage", erodeImage);
waitKey();
5、效果图:

二、开运算
1、概述
开运算是先腐蚀后膨胀。主要用于消除小物体,在纤细点处分离物体,并且在平滑较大物体的边界的同时不明显改变其面积,同时抑制比结构元小的亮细节。
2、示例
Mat srcImage = imread("E:\\CodeResource\\opencv\\car_pic\\test1.png",);
Mat element = getStructuringElement(MORPH_RECT, Size(,));
Mat openImage;
morphologyEx(srcImage, openImage, MORPH_OPEN, element);
imshow("srcImage", srcImage);
imshow("openImage", openImage);
waitKey();
3、效果图

三、闭运算
1、概述
闭运算是先膨胀后腐蚀。用来填充物体内细小空洞、连接邻近物体、平滑其边界的同时并不明显改变其面积,同时抑制比结构元小的暗细节。
2、示例
Mat srcImage = imread("E:\\CodeResource\\opencv\\car_pic\\test2.png",);
Mat element = getStructuringElement(MORPH_RECT, Size(,));
Mat closeImage;
morphologyEx(srcImage, closeImage, MORPH_CLOSE, element);
imshow("srcImage", srcImage);
imshow("closeImage", closeImage);
waitKey();
3、效果图

四、形态学梯度
1、概述
就是将膨胀土和腐蚀图相减。对二值化图像进行这一操作可以将边缘突出来,可以使用形态学梯度来保留物体的边缘轮廓
2、示例
Mat srcImage = imread("E:\\CodeResource\\opencv\\car_pic\\test2.png",);
Mat element = getStructuringElement(MORPH_RECT, Size(,));
Mat gradientImage;
morphologyEx(srcImage, gradientImage, MORPH_GRADIENT, element);
imshow("srcImage", srcImage);
imshow("gradientImage", gradientImage);
waitKey();
3、效果图

五、顶帽变换和黑帽变换
1、概述
顶帽变换就是用源图像减去开运算图像。因为开运算带来的结果是放大了裂缝或者局部低亮度的区域。因此,从原图中减去开运算后的图,得到的效果图突出了比原图轮廓周围区域更明亮的区域。顶帽一般用于校正不均匀光照的影响(补充:均匀光照在从背景中提取目标的处理中扮演核心的角色)。
黑帽变换就是用闭运算减去源图像。黑帽运算后的效果图突出了比原图轮廓周围的区域更暗的区域。黑帽运算一般用来分离比邻近点暗一些的斑块。
2、示例
Mat srcImage = imread("E:\\CodeResource\\opencv\\car_pic\\test2.png",);
Mat element = getStructuringElement(MORPH_RECT, Size(,));
Mat tophatImage;
morphologyEx(srcImage, tophatImage, MORPH_TOPHAT, element);
Mat blackhatImage;
morphologyEx(srcImage, blackhatImage, MORPH_BLACKHAT, element);
imshow("srcImage", srcImage);
imshow("tophatImage", tophatImage);
imshow("blackhatImage", blackhatImage);
waitKey();
3、效果图


参考:http://blog.csdn.net/hx1298234467/article/details/49887925
OpenCV3编程入门读书笔记4-形态学滤波的更多相关文章
- OpenCV3编程入门读书笔记5-边缘检测
一.边缘检测的一般步骤 1.滤波 边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能. 2.增强 增强边缘的基础是确定图像各 ...
- OpenCV3编程入门-读书笔记3-滤波
一.领域滤波(卷积) 邻域算子值利用给定像素周围像素的值决定此像素的最终输出.如图左边图像与中间图像卷积得到右边图像.目标图像中绿色的像素由原图像中蓝色标记的像素计算得到. 通用线性邻域滤波是一种常用 ...
- OpenCV3编程入门-读书笔记2-core组件
一.颜色空间缩减 1.概念 如果图像是3通道,深度为1个字节,则每个像素有256*256*256种可能值,这么多的可能值会对算法性能造成严重影响.利用颜色空间缩减就能解决这个问题,例如将颜色值0~9取 ...
- OpenCV3编程入门-读书笔记1
一.OpenCV概述 1.OpenCV全程Open Source Computer Vision Library,即开源计算机视觉库.它是一个跨平台的开源计算机视觉库,可以运行在windows.lin ...
- opencv3 编程入门学习笔记(一): 基本函数介绍
滤波 blur (均值滤波) 均值滤波是典型的线性滤波算法, 主要方法为领域平均法(即用一片图像区域的各个像素的平均值来代替原图像中的各个像素值) 缺点: 不能很好的保护图像细节, 在图像去噪的同时也 ...
- 【浅墨著作】《OpenCV3编程入门》内容简单介绍&勘误&配套源码下载
经过近一年的沉淀和总结,<OpenCV3编程入门>一书最终和大家见面了. 近期有为数不少的小伙伴们发邮件给浅墨建议最好在博客里面贴出这本书的文件夹,方便大家更好的了解这本书的内容.事实上近 ...
- OpenCV3编程入门.记录
ZC:OpenCV3编程入门_毛星云编著_电子工业出版.pdf 1.在看到 PDF.P134(计算数组加权和:addWeighted()函数)的时候,其中讲到“当输出数组的深度为CV_32S时,这个函 ...
- 《C#高级编程》读书笔记
<C#高级编程>读书笔记 C#类型的取值范围 名称 CTS类型 说明 范围 sbyte System.SByte 8位有符号的整数 -128~127(−27−27~27−127−1) sh ...
- 第三章 Git的入门 - 读书笔记
Android驱动月考3 第三章 Git的入门 - 读书笔记 对于Github,这是全世界最大的开源平台,你可以把你做的项目在这里开源,把你发现的一些新技术在这里开源,向全世界的开发者们分享,大家都彼 ...
随机推荐
- vc图像合成
本程序下载地址: 上一篇讲述了tiff格式图片拆分成多张图片, 这篇博客讲述如何把多张任意格式的图片合成为一张图片. 图像合成仍然需要借助Cximage图像库,合成函数为Mixfrom, 函数原型为: ...
- git完全cli指南之详细思维导图整理分享
一直以来都觉得 在开发过程中 能用命令行的还是用命令行 能用快捷键的就要快捷键 前期可能要点学习成本 但是熟练后带来的好处还是非常可观的 所以一直坚持使用命令行的方式来使用git 基本上每个操作都能心 ...
- OpenMP并行程序设计——for循环并行化详解
在C/C++中使用OpenMP优化代码方便又简单,代码中需要并行处理的往往是一些比较耗时的for循环,所以重点介绍一下OpenMP中for循环的应用.个人感觉只要掌握了文中讲的这些就足够了,如果想要学 ...
- 为什么Fourier分析?
本文旨在给出Fourier分析的几个动机. 目录 波动方程 热导方程 Lapalce变换 求和公式 表示论 特征理论 参考资料 波动方程 考虑一维的波动方程最简单的边值问题$$u(x,t), x\in ...
- 【学习总结】GirlsInAI ML-diary day-13-Try/Except 异常处理
[学习总结]GirlsInAI ML-diary 总 原博github链接-day13 认识异常处理 要点小结: try和except是同个等级,注意对齐和缩进 可以把try和except直接理解成另 ...
- UC和QQ两个主流浏览器 * 点击触发微信分享到朋友圈或发送给朋友的功能(转载)
转载(声明:仅供学习使用) /** * 此插件主要作用是在UC和QQ两个主流浏览器 * 上面触发微信分享到朋友圈或发送给朋友的功能 * 代码编写过程中 参考: * http://mjs.sinaimg ...
- 使用Sublime Text 3进行Markdown编辑+实时预览
使用Sublime Text 3进行Markdown编辑+实时预览 安装软件包管理器 打开Sublime Text 3 同时按下 ctrl+` ,窗口底部出现一个小控制台 复制以下代码,粘贴到控制台的 ...
- Elasticsearch6.5.2 X-pack破解及安装教程
先正常安装 elasticSearch, kibana. 1. 如果是6.5.2版本,可以直接下载jar文件:https://download.csdn.net/download/bigben0123 ...
- 20165232 实现pwd
20165232 实现mypwd 题目要求 学习pwd命令 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 实现mypwd 测试mypwd 学习pwd命令 用man pwd 查看 ...
- PyQt5开发环境搭建
一 写在开头1.1 本节内容开个新坑—“PyQt5系列”,慢慢填.本文主要内容为PyQt5开发环境的搭建. 注意:PyQt 5.10以上的版本在Python 3.6中有BUG,PyQt 5.10版本是 ...