matlab图像的腐蚀和膨胀_OpenCV图像处理系列八 --- 腐蚀与膨胀
今天,我们一起来学习图像形态学操作中两种最基本的形态学操作,即腐蚀与膨胀。
一、理论
数学形态学(Mathematical morphology) 是一门建立在格论和拓扑学基础之上的图像分析学科,是数学形态学图像处理的基本理论。其基本的运算包括:腐蚀和膨胀、开运算和闭运算、骨架抽取、极限腐蚀、击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换等。
腐蚀与膨胀主要实现以下功能:
- 消除噪声
- 分割(isolate)出独立的图像元素,在图像中连接(join)相邻的元素。
- 寻找图像中的明显的极大值区域或极小值区域
- 求出图像的梯度
1、腐蚀
腐蚀对图像求局部最小值;腐蚀操作就是将图像(或图像的一部分区域,我们称之为A)与卷积核(我们称之为B)进行卷积。
核可以是任何的形状和大小,它拥有一个单独定义出来的参考点,我们称其为锚点。多数情况下,核是一个小的中间带有参考点和实心正方形或者圆盘,其实,我们可以把核视为模板或者掩码。
1)腐蚀的数学表达式
腐蚀的数学表达式
2)腐蚀效果演示
腐蚀效果演示
3)腐蚀的作用:
- 对象大小减小一个像素(3x3)
- 平滑对象边缘
- 弱化或者分割图像之间的半岛型连接
2、膨胀
膨胀对图像求局部的最大值;核B与图形卷积,即计算核B覆盖的区域的像素点的最大值,并把这个最大值赋值给参考点指定的像素;这样就会使图像中的高亮区域逐渐增长。
核可以是任何的形状和大小,它拥有一个单独定义出来的参考点,我们称其为锚点。多数情况下,核是一个小的中间带有参考点和实心正方形或者圆盘,其实,我们可以把核视为模板或者掩码。
1)膨胀的数学表达式
膨胀的数学表达式
膨胀效果演示
膨胀的作用:
- 对象大小增加一个像素(3x3)
- 平滑对象边缘
- 减少或者填充对象之间的距离
小结:
可以看做膨胀是将白色区域扩大,腐蚀是将黑色区域扩大。
二、OpenCV腐蚀与膨胀API函数详解
1、腐蚀
1)函数原型:
void erode(InputArray src, OutputArray dst, InputArray kernel, Point anchor = Point(-1, -1), int iterations = 1, int borderType = BORDER_CONSTANT, const Scalar& borderValue = morphologyDefaultBorderValue());
2)函数功能:
用指定的卷积核腐蚀图像,使用像素邻域内的局部极小运算符来腐蚀一张图片,从src输入,由dst输出,支持就地(in-place)操作。
3)参数详解:
- 第一个参数,InputArray类型的src,输入图像,即源图像,填Mat类的对象即可。图像通道的数量可以是任意的,但图像深度应为CV_8U,CV_16U,CV_16S,CV_32F或 CV_64F其中之一;
- 第二个参数,OutputArray类型的dst,即目标图像,需要和源图片有一样的尺寸和类型;
- 第三个参数,InputArray类型的kernel,腐蚀操作的内核。若为NULL时,表示的是使用参考点位于中心3x3的核。我们一般使用函数 getStructuringElement配合这个参数的使用。getStructuringElement函数会返回指定形状和尺寸的结构元素(内核矩阵);
- 第四个参数,Point类型的anchor,锚的位置,其有默认值(-1,-1),表示锚位于单位(element)的中心,我们一般不用管它;
- 第五个参数,int类型的iterations,迭代使用erode()函数的次数,默认值为1;
- 第六个参数,int类型的borderType,用于推断图像外部像素的某种边界模式。注意它有默认值BORDER_DEFAULT;
- 第七个参数,const Scalar&类型的borderValue,当边界为常数时的边界值,有默认值morphologyDefaultBorderValue(),一般我们不用去管他。
第三个参数一般用getStructuringElement()函数获取卷积核的大小;getStructuringElement函数会返回指定形状和尺寸的结构元素(内核矩阵)。
其中,getStructuringElement函数的第一个参数表示内核的形状,我们可以选择如下三种形状之一:
- 矩形: MORPH_RECT
- 交叉形: MORPH_CROSS
- 椭圆形: MORPH_ELLIPSE
而getStructuringElement函数的第二和第三个参数分别是内核的尺寸以及锚点的位置。
我们一般在调用erode以及dilate函数之前,先定义一个Mat类型的变量来获得getStructuringElement函数的返回值。对于锚点的位置,有默认值Point(-1, -1),表示锚点位于中心;并且需要注意,十字形的element形状唯一依赖于锚点的位置;而在其他情况下,锚点只是影响了形态学运算结果的偏移。
4)实例:
#include #include #include #include using namespace std;using namespace cv;int main(){ //载入原图 Mat image = imread("lena.png"); if (image.empty()) { printf("image error!"); return -1; } //创建窗口 namedWindow("【原图】腐蚀操作"); namedWindow("【效果图】腐蚀操作"); //显示原图 imshow("【原图】腐蚀操作
matlab图像的腐蚀和膨胀_OpenCV图像处理系列八 --- 腐蚀与膨胀相关推荐
- matlab图像去毛刺_警微圈 图像处理第三讲CLAHE
警微圈 图像处理100讲 第三讲 <限制对比度自适应直方图均衡化> - 圈语 - 为给圈粉们提供一些结合公安工作的实用图像处理方法,小编为大家准备了一些程序处理算法(附带代码).小编使用的 ...
- c++gdal如何在大图像中截取小图像并获取其图像信息_OpenCV 图像处理大纲
图像的取样和量化 取样就是取像素点,量化把灰度值量化到256个灰度级 数字图像的表示 图像定义为二位函数f(x, y),x,y是空间坐标f(x, y)是点的幅值 数字图像的质量 灰度级:表明像素明暗程 ...
- 图像的膨胀(dilation)和腐蚀(erosion)
晶晨半导体笔试时有道题是关于图像膨胀和腐蚀的,但没有具体看过,这里总结一下,唉嗐. 咳咳,今天的po小标题有些做作,请忽略. 不对,这是我的po我爱咋写咋爱,就要做作,love look don't ...
- 什么叫做形态学图像处理_形态学腐蚀和膨胀原理和python实现
这篇笔记为形态学膨胀(dilate)和腐蚀(erode),一种在数字图像处理中常用的基本算法. 形态学图像处理的理论根基是数学形态学(Mathematical Morphology),可以通过形态学处 ...
- 【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/23710721 作者:毛星云(浅墨) ...
- 转:【OpenCV入门教程之十】 形态学图像处理(一):膨胀与腐蚀
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/23710721 作者:毛星云(浅墨) ...
- matlab 图像 幅度谱 低通滤波_数字图像处理期末复习2018-12-21
数字图像处理期末复习2018-12-21 愉快先生 0.204 · 字数 5547 · 阅读 1834 2018-12-22 19:35 (数字图像冈萨雷斯第二版教材) 一.基本原理 图像的读取.存储 ...
- matlab图像隐写,matlab软件图像处理相关内容.ppt
内容主要分为以下四个篇章: 一.介绍应用matlab处理图像问题 (以一个图像隐写的简单例子为说明线索) 二.应用matlab解决三维血管重建中的图像处理问题 三.图像处理练习(应用matlab解决双 ...
- 数字图像处理---通俗理解腐蚀与膨胀
本人已经打算将这一系列博文做成动画趣味科普的形式来呈现,感兴趣的话可以点这里. 0.腐蚀与膨胀有什么卵用? 腐蚀与膨胀是数字形态学里的两个基本操作,一般用于二值图像(当然RGB图也可以用).腐蚀的作用 ...
最新文章
- ubuntu windows 终端清理、清空 屏幕命令 清屏
- 项目管理中的组织计划
- 简单Nlp分析套路,获取数据(爬虫),数据处理(分词,词频,命名实体识别与关键词抽取),结果展现
- 苹果cms V10模板 仿特视网自适应模板
- 7-10 先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数 (10 分)
- Kali Linux工具文档翻译计划
- Mysql学习总结(26)——MySQL子查询
- RecyclerView之自定义LayoutManager和SnapHelper
- python技巧——list comprehension vs map
- YLMF OS 发布
- C语言match函数的定义与用法,Match函数的基本用法
- 2016(第三届)智能家居世界大会
- android 英语词库
- 简单的理解unicode和utf-8的关系
- 【C语言】万字讲解 从零到精通 (文件操作与文件函数)
- Bugzilla 使用教程
- ansible部署LAMP架构
- Jeesite 4.0 学习笔记
- Tomcat 7.0安装与配置
- 透视变换原理实例代码详解
热门文章
- 触摸屏通常接在微型计算机,计算机应用基础习题答案.doc
- 左操作数必须为左值_进入“左转弯待转区”被罚怎么回事?
- mysql5.5源码包安装_mysql的源码包方式安装(mysql5.5)
- linux fedora14 u盘运行,用U盘安装Fedora的详细步骤
- 里面怎么缓存图片_浏览器缓存原理总结
- android屏幕适配详解
- flutter 导航页面转换动画效果
- POJ--2104 K-th Number (主席树模版题)
- 培训补坑(day1:最短路two-sat)
- Get SQL String From Query Object In Entity Framework