膨胀和腐蚀在MATLAB中
2016-05-18 19:52
260 查看
腐蚀和膨胀操作更细致的分析(主要谈论涉及图像边缘的腐蚀和膨胀运算)。
注:结构元素在扫描图像中的每个像素时,结构元素的邻域有部分会在图像外面。比如当结构元素扫描图像上方第一行像素值(这里默认结构元素为3×3),结构元素会有部分在图像的外面,此时,为了有效处理边界像素,进行形态学运算的函数通常都会给出超出图像、未指定数值的像素指定一个数值,这样就类似于函数给图像填充了额外的行和列。对于膨胀和腐蚀操作,它们对像素进行填充的值是不同的。规则如下:
腐蚀和膨胀填充图像规则表
规 则
腐蚀 超出图像边界的像素值定义为该数据类型允许的最大值,对于二进制图像,这些像素值设置为1;对于灰度图像,unit8类型的最小值也为255。
膨胀 超出图像边界的像素值定义为该数据类型允许的最小值,对于二进制图像,这些像素值设置为0;对于灰度图像,unit8类型的最小值也为0。通过对膨胀操作使用最小值填充和对腐蚀操作使用最大值填充,可以有效地消除边界效应(输出图像靠近边界处的区域与图像其它部分不连续)。否则,如果腐蚀操作使用最小值进行填充,则进行腐蚀操作后,输出图像会围绕着一个黑色边框。(此处根据腐蚀和膨胀的具体操作过程应该不难理解,因为当图像边缘都是白色时也就是像素值全为1,此时如果图像边缘外面的像素值填充为最小值,如果二值图像的话则像素值为0,根据腐蚀操作,相与后肯定为0,这时图像边缘处便会成为黑色)
结构元素:膨胀和腐蚀操作的最基本组成部分,用于测试输出图像,通常要比待处理的图像小的多。二维平面结构元素由一个数值为0或1的矩阵组成。结构元素的原点指定了图像中需要处理的像素范围,结构元素中数值为1的点决定结构元素的邻域像素在进行膨胀或腐蚀操作时是否需要参与计算。三维或非平面的结构元素使用0,1定义结构元素在x和y平面上的范围,第三维z定义高度。
关于图像腐蚀和膨胀的实现:
matlab和openCV都可以实现
matlab语言中自带了关于腐蚀和膨胀的函数,如果想要看实现效果,则可以直接调用,imerode(输入图像,结构元素)和imdilate(输入图像,结构元素),结构元素对象可以是strel函数返回的对象,也可以是一个自己定义的表示结构元素邻域的二进制矩阵。
注:结构元素在扫描图像中的每个像素时,结构元素的邻域有部分会在图像外面。比如当结构元素扫描图像上方第一行像素值(这里默认结构元素为3×3),结构元素会有部分在图像的外面,此时,为了有效处理边界像素,进行形态学运算的函数通常都会给出超出图像、未指定数值的像素指定一个数值,这样就类似于函数给图像填充了额外的行和列。对于膨胀和腐蚀操作,它们对像素进行填充的值是不同的。规则如下:
腐蚀和膨胀填充图像规则表
规 则
腐蚀 超出图像边界的像素值定义为该数据类型允许的最大值,对于二进制图像,这些像素值设置为1;对于灰度图像,unit8类型的最小值也为255。
膨胀 超出图像边界的像素值定义为该数据类型允许的最小值,对于二进制图像,这些像素值设置为0;对于灰度图像,unit8类型的最小值也为0。通过对膨胀操作使用最小值填充和对腐蚀操作使用最大值填充,可以有效地消除边界效应(输出图像靠近边界处的区域与图像其它部分不连续)。否则,如果腐蚀操作使用最小值进行填充,则进行腐蚀操作后,输出图像会围绕着一个黑色边框。(此处根据腐蚀和膨胀的具体操作过程应该不难理解,因为当图像边缘都是白色时也就是像素值全为1,此时如果图像边缘外面的像素值填充为最小值,如果二值图像的话则像素值为0,根据腐蚀操作,相与后肯定为0,这时图像边缘处便会成为黑色)
结构元素:膨胀和腐蚀操作的最基本组成部分,用于测试输出图像,通常要比待处理的图像小的多。二维平面结构元素由一个数值为0或1的矩阵组成。结构元素的原点指定了图像中需要处理的像素范围,结构元素中数值为1的点决定结构元素的邻域像素在进行膨胀或腐蚀操作时是否需要参与计算。三维或非平面的结构元素使用0,1定义结构元素在x和y平面上的范围,第三维z定义高度。
关于图像腐蚀和膨胀的实现:
matlab和openCV都可以实现
matlab语言中自带了关于腐蚀和膨胀的函数,如果想要看实现效果,则可以直接调用,imerode(输入图像,结构元素)和imdilate(输入图像,结构元素),结构元素对象可以是strel函数返回的对象,也可以是一个自己定义的表示结构元素邻域的二进制矩阵。
相关文章推荐
- fileparts使用,切分文件得到路径及后缀
- MATLAB曲线平滑的办法
- 【转载】matlab中将数据输出保存为txt格式文件的方法
- matlab中title引入变量 [转载]
- MATLAB句柄图形对象的创建函数与函数描述
- 小游戏:用MATLAB编程验证——投掷硬币那“0.5”
- 如何让matlab用mex与C连接使用有例子
- MATLAB_2015b installation on Ubuntu 16.04
- 在win8系统下,装matlab7.0成功后运行时出现runtime error的错误怎么解决?
- 最新 VS2008 和 MatlabR2015a 混合编程
- 文章投稿时常用到的matlab作图命问题
- matlab自带princomp(PCA降维方式)
- 【MATLAB 学习笔记】 SimMechanics 流程攻略 (2)
- ubuntu 11.04上安装matlab r2011b
- matlab 设置绘图的大小,字号,线宽,字体--按投稿要求
- Matlab中凸优化工具包CVX的使用
- matlab常用代码
- Matlab2014b与C/C++(VS2013)混合编程
- Matlab 简单的数据处理
- MATLAB中的矩阵建立