当前位置:文档之家› MATLAB数字图像的腐蚀、填充、细化与粗化

MATLAB数字图像的腐蚀、填充、细化与粗化

MATLAB数字图像的腐蚀、填充、细化与粗化
MATLAB数字图像的腐蚀、填充、细化与粗化

北航数图实验报告四图像腐蚀和膨胀

北航数图实验报告四图像腐蚀和膨 胀 部门: xxx 时间: xxx 整理范文,仅供参考,可下载自行编辑

北京航空航天大学 数字图像处理实验报告 实验四:图像分割处理 学院 专业方向 班级 学号 学生姓名 指导教师 实验四图像分割处理实验 1.实验目的 <1)了解图像分割的基本原理,并利用图像分割算法进行图像分割处理; <2)掌握数学形态学的基本运算。 2.实验内容 <1)利用类间方差阈值算法实现图像的分割处理; <2)利用形态学处理进行处理结果修正。 3. 实验要求

<1)实验用图: <2)对输入图像进行平滑处理,以减小噪声对分割处理的影响; <3)利用类间方差阈值算法对滤波处理后图像进行分割处理,获取分割图像; <4)利用数学形态学中的腐蚀和膨胀运算处理,剔除分割处理结果中的一些细小的残余误分割点,在进行腐蚀和膨胀运算时可采用半径为r的圆形结构元素,注意比较选取不同r值时的处理结果。b5E2RGbCAP 四、实验代码 function STshiyan4_OpeningFcn(hObject, eventdata, handles, varargin>p1EanqFDPw I=imread('4.bmp'>。 I=rgb2gray(I>。 subplot(3,3,1>。

imshow(I>。 title('原图像'>。 IM=medfilt2(I>。%中值滤波 subplot(3,3,2>。 imshow(IM>。 title('中值滤波后图像'>。 function pushbutton1_Callback(hObject, eventdata, handles>DXDiTa9E3d I1=imread('4.bmp'>。 I1=rgb2gray(I1>。 T=Otsu(I1>。 IM1=medfilt2(I1>。 s=size(IM1>。 for m=1:s(1> for n=1:s(2> if IM1(m,n>>=T IM1(m,n>=255。 else IM1(m,n>=0。 end end end

C 图像的膨胀和腐蚀

C++图像的膨胀和腐蚀 二值图像是一种简单的图像格式,它只有两个灰度级,即"0"表示黑色的像素点,"255"表示白色的像素点,至于如何从一幅普通的图像获得二值图像,请参考我近期在天极网上发表的《Visual C++编程实现图像的分割》一文。二值图像处理在图像处理领域占据很重要的位置,在具体的图像处理应用系统中,往往需要对于获得的二值图像再进一步进行处理,以有利于后期的识别工作。二值图像处理运算是从数学形态学下的集合论方法发展起来的,尽管它的基本运算很简单,但是却可以产生复杂的效果。常用的二值图像处理操作有许多方法,如腐蚀、膨胀、细化、开运算和闭运算等等。本文对这些内容作些研究探讨, 希望对爱好图像处理的朋友有所帮助。一、腐蚀和膨胀形态学是一门新兴科学,它的用途主要是获取物体拓扑和结果信息,它通过物体和结构元素相互作用的某些运算,得到物体更本质的形态。它在图像处理中的应用主要是: 1.利用形态学的基本运算,对图像进行观察和处理,从而达到改善图像质量的目的; 2.描述和定义图像的各种几何参数和特征,如面积,周长,连通度,颗粒度,骨架和方向性。限于篇幅,我们只介绍简单二值图像的形态学运算,对于灰度图像的形态学运算,有兴趣的读者可以看有关的参考书。

二值图像基本的形态学运算是腐蚀和膨胀,简单的腐蚀是消除物体的所有边界点的一种过程,其结果是使剩下的物体沿其周边比原物体小一个像素的面积。如果物体是圆的,它的直径在每次腐蚀后将减少两个像素,如果物体在某一点处任意方向上连通的像素小于三个,那么该物体经过一次腐蚀后将在该点处分裂为二个物体。简单的膨胀运算是将与某物体接触的所有背景点合并到该物体中的过程。过程的结果是使物体的面积增大了相应数量的点,如果物体是圆的,它的直径在每次膨胀后将增大两个像素。如果两个物体在某一点的任意方向相隔少于三个像素,它们将在该点连通起来。 下面给出具体的实现腐蚀和膨胀的函数代码: ////////////////////////////////二值图像腐蚀操作函数 BOOL ImageErosion(BYTE *pData,int Width,int Height) {//pData为图像数据的指针,Width和Height为图像的宽和高; BYTE* pData1; int m,n,i,j,sum,k,sum1;

图像的腐蚀和膨胀

图像的腐蚀和膨胀 研究背景和意义 依据数学形态学集合论方法发展起来的图像处理方法,在数字图像处理和机器视觉领域中得到了广泛的应用,形成了一种独特的数字图像分析和理论。数学形态学是图像处理和模式识别领域的新方法,其基本的思想是:用具有一定形态的结构元素去度量和提取图像中的对应形状,已达到图像分析和识别的目的。 优势有一下几点:有效滤除噪声,保留图像中原有信息,算法很容易用并行处理方法有效实现,基于数学形态学的边缘信息提取处理优于基于微分运算的边缘提取算法,提取的边缘比较平滑,提取的图像骨架也比较连续,断点很少。 二.原理 特殊领域运算形式——结构元素,在每个像素位置上与二值图像对应的区域进行特定的逻辑运算。运算结果是输出图像的相应像素。运算效果取决于结构元素大小、内容以及逻辑运算性质。 结构元素:膨胀和腐蚀操作的最基本组成部分,用于测试输出图像,通常要比待处理的图像小的多。二维平面结构元素由一个数值为0或1的矩阵组成。结构元素的原点(锚点)指定了图像中需要处理的像素范围,结构元素中数值为1的点决定结构元素的领域像素在进行膨胀或腐蚀操作时是否需要参与计算。 常见的形态学运算有腐蚀和膨胀两种: 腐蚀:删除对象边缘某些像素。

膨胀:给图像中的对象边缘添加像素。 三.算法及效果图 膨胀算法:用3X3的结构元素扫描图像的每一个像素,用结构元素与其覆盖的二值图像做“与”操作,如果都为0,结果图像的该像素点为0,否则为1。膨胀算法的效果是使二值图像扩大一圈。 腐蚀的算法:用3X3的结构元素,扫描图像的每一个像素点,用结构元素与其覆盖的二值图像做“与”操作,如果结果都为1,结果图像的该像素点为1,否则为0。 膨胀算法的结果:是二值图像减少一圈。 四.组合使用效果 先腐蚀后膨胀的过程:利用它可以消除小物体,在纤细点处分离物体,平滑较大物体边界,但同时并不会明显改变原来物体的面积。 先膨胀后腐蚀的过程:利用它可以填充物体内细小空洞,连接临近物体、平滑其边界,但同时并不会明显改变原来物体的面积。 通常由于噪声的影响,图像在阈值化后所得到的边界通常都很不平滑,物体区域具有一些噪声孔,而背景区域上散布着一些小的噪声物体,连续的开和闭运算可以有效的改善这种情况。而有时,我们需要经过多次腐蚀,然后再加上相同次数的膨胀,才能产生比较好的处理效果。可见图像的腐蚀与膨胀相结合有时可以使图像有较理想的处理效果。 图像处理分为多种,对于不同的图像腐蚀和膨胀的定义不同。 1. 形态学图像处理是在图像中移动一个结构元素,然后将结构元素

matlab数字图像处理膨胀和腐蚀.doc

基于Matlab的腐蚀和膨胀的边缘检测 一、实验目的: 掌握运用Matlab软件对灰度与二值图像的膨胀与腐蚀的处理方法。 二、实验环境(软件条件): Windws2000/XP MATLAB 7.x 三、实验内容: 1、图像膨胀的Matlab实现 ①实验原理: 膨胀:给图像中的对象边界添加像素。 在操作中,输出图像中所有给定像素的状态都是通过对输入图像的相应像素及邻域使用一定的规则进行确定。在膨胀操作时,输出像素值是输入图像相应像素邻域内所有像素的最大值。在二进制图像中,如果任何像素值为1,那么对应的输出像素值为1。 可以使用imdilate函数进行图像膨胀,imdilate函数需要两个基本输入参数,即待处理的输入图像和结构元素对象。结构元素对象可以是strel函数返回的对象,也可以是一个自己定义的表示结构元素邻域的二进制矩阵。此外,imdilate 还可以接受两个可选参数:PADOPT(padopt) ——影响输出图片的大小、PACKOPT(packopt).——说明输入图像是否为打包的二值图像(二进制图像)。 ②实验步骤: A、首先创建一个包含矩形对象的二值图像矩阵。 R=zeros(9,10); R(4:6,4:7) =1 R = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 B、使用一个3×3的正方形结构元素对象对创建的图像进行膨胀。

腐蚀膨胀算法详细解释

形态学运算中腐蚀,膨胀,开运算和闭运算(针对二值图而言) 6.1 腐蚀 腐蚀是一种消除边界点,使边界向内部收缩的过程。可以用来消除小且无意义的物体。 腐蚀的算法: 用3x3的结构元素,扫描图像的每一个像素 用结构元素与其覆盖的二值图像做“与”操作 如果都为1,结果图像的该像素为1。否则为0。 结果:使二值图像减小一圈 把结构元素B平移a后得到Ba,若Ba包含于X,我们记下这个a点,所有满足上述条件的 a点组成的集合称做X被B腐蚀(Erosion)的结果。用公式表示为:E(X)={a| Ba X}=X B,如图6.8所示。 图6.8 腐蚀的示意图 图6.8中X是被处理的对象,B是结构元素。不难知道,对于任意一个在阴影部分的点a,Ba 包含于X,所以X被B腐蚀的结果就是那个阴影部分。阴影部分在X的范围之内,且比X小,就象X被剥掉了一层似的,这就是为什么叫腐蚀的原因。 值得注意的是,上面的B是对称的,即B的对称集Bv=B,所以X被B腐蚀的结果和X被Bv腐蚀的结果是一样的。如果B不是对称的,让我们看看图6.9,就会发现X被B腐蚀的结果和X被Bv腐蚀的结果不同。

图6.9 结构元素非对称时,腐蚀的结果不同 图6.8和图6.9都是示意图,让我们来看看实际上是怎样进行腐蚀运算的。 在图6.10中,左边是被处理的图象X(二值图象,我们针对的是黑点),中间是结构元素B,那个标有origin的点是中心点,即当前处理元素的位置,我们在介绍模板操作时也有过类似的概念。腐蚀的方法是,拿B的中心点和X上的点一个一个地对比,如果B上的所有点都在X的范围内,则该点保留,否则将该点去掉;右边是腐蚀后的结果。可以看出,它仍在原来X的范围内,且比X包含的点要少,就象X被腐蚀掉了一层。 图6.10 腐蚀运算 图6.11为原图,图6.12为腐蚀后的结果图,能够很明显地看出腐蚀的效果。 图6.11 原图

Matlab基于腐蚀和膨胀的边缘检测

Matlab基于腐蚀和膨胀的边缘检测 文/天神 一.课题背景: 形态学运算只针对二值图像(二进制图像),并依据数学形态学(Mathermatical Morphogy)集合论方法发展起来的图像处理方法,起源于岩相对岩石结构的定量描述工作,在数字图像处理和机器视觉领域中得到了广泛的应用,形成了一种独特的数字图像分析方法和理论。数学形态学是图像处理和模式识领域的新方法,其基本思想是:用具有一定形态的结构元素去量度和提取图像中的对应形状,以达到图像分析和识别的目的。优势有以下几点:有效滤除噪声,保留图像中原有信息,算法易于用并行处理方法有效实现(包括硬件实现),基于数学形态学的边缘信息提取处理优于基于微分运算的边缘提取算法,提取的边缘比较平滑,提取的图像骨架也比较连续,断点少。 二、课题相关原理: 形态学基本运算: 特殊领域运算形式——结构元素(Structure Element),在每个像素位置上与二值图像对应的区域进行特定的逻辑运算。运算结果是输出图像的相应像素。运算效果取决于结构元素大小内容以及逻辑运算性质。 常见形态学运算有腐蚀(Erosion)和膨胀(Dilation)两种。 集合论是数学形态学的基础。有集合、元素、子集、并集、补集、位移、映像(镜像对称)、差集等集合的基本概念。 对象和结构元素的3种关系:『对象X(Object)、结构元素B(Structure Element)』 B include in X 包含于、B hit X 击中(不全包含)、B miss X 击不中(不包含) 平移、对称集:Bx=Uy{x+y} B^=Uy{-y} 腐蚀:一种消除边界点,使边界向内部收缩的过程。利用它可以消除小而且无意义的物体。B对X腐蚀所产生的二值图像E是满足以下条件的点(x,y)的集合:如果B的原点平移到点(x,y),那么B将完全包含于X中。 膨胀:将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。利用它可以填补物体中的空洞。B 对X膨胀所产生的二值图像D是满足以下条件的点(x,y)的集合:如果B的原点平移到点(x,y),那么它与X的交集非空。 腐蚀和膨胀运算中存在对偶原理:X⊕B,它是所有满足以下条件的点X'的集合:在B中存在一点y,而且在X中存在一点x,使得x'=x+y。 基本运算:1.开运算(先腐蚀后膨胀的过程):利用它可以消除小物体,在纤细点处分离物体,平滑较大物体边界,但同时并不明显改变原来物体的面积。OPEN(X,B) 2.闭运算(先膨胀后腐蚀的过程):利用它可以填充物体内细小空洞,连接临近物体、平滑其边界,但同时并不明显改变原来物体的面积。CLOSE(X,B) 通常由于噪声的影响,图像在阈值化后所得到的边界通常都很不平滑,物体区域具有一些噪声孔,而背景区域上散布着一些小的噪声物体,连续的开和闭运算可以有效的改善这种情况,而有时,我们需要经过多次腐蚀之,后再加上相同次数的膨胀,才能产生比较好的处理效果。 另外两种是3.击中,击不中变换HMT(模板严格匹配)以及4.边缘和骨架(Boundary and Skeleton) 三、腐蚀和膨胀的Matlab实现: 腐蚀:删除对象边界某些像素。 膨胀:给图像中的对象边界添加像素。 在操作中,输出图像中所有给定像素的状态都是通过对输入图像的相应像素及邻域使用一定的规则进行确定。在膨胀操作时,输出像素值是输入图像相应像素邻域内所有像素的最大值。在二进制图像中,如果任何像素值为1,那么对应的输出像素值为1;而在腐蚀操作中,输出像素值是输入图像相应像素邻域内所有像素的最小值。在二进制图像中,如果任何一个像素值为0,那么对应的输出像素值为0。

腐蚀、膨胀、开运算、闭运算(特制材料)

1、实验目的 学习常见的数学形态学运算基本方法,了解腐蚀、膨胀、开运算、闭运算取得的效果,培养处理实际图像的能力,并为课堂教学提供配套的实践机会。 2、实验要求 利用MatLab工具箱中关于数学形态学运算的函数,计算本指导书中指定二值图像进行处理。 3、实验设备与软件 1.LC-PC计算机系统 2.MatLab软件/语言包括图像处理工具箱(Image Processing Toolbox) 3.实验所需要的图片 4. 4、实验内容与步骤 1.调入并显示图像Plane 2.jpg; 2.选取合适的阈值,得到二值化图像Plane2-2.jpg; 3.设置结构元素; 4.对得到的二值图像Plane2-2.jpg进行腐蚀运算; 5.对得到的二值图像Plane2-2.jpg进行膨胀运算; 6.对得到的二值图像Plane2-2.jpg进行开运算; 7.对得到的二值图像Plane2-2.jpg进行闭运算; 8.将两种处理方法的结果作比较; 5、实验过程及结果 程序代码: I=imread('1.jpg');%读入图像 level = graythresh(I); %得到合适的阈值 bw = im2bw(I,level); %二值化 SE = strel('square',3); %设置膨胀结构元素 BW1 = imdilate(bw,SE); %膨胀

SE1 = strel('arbitrary',eye(5)); %设置腐蚀结构元素BW2 = imerode(bw,SE1); %腐蚀 BW3 = bwmorph(bw, 'open'); %开运算BW4 = bwmorph(bw, 'close'); %闭运算imshow(I) figure,imshow(bw);title('原图'); figure,imshow(BW1);title('膨胀'); figure,imshow(BW2);title('腐蚀'); figure,imshow(BW3);title('开运算'); figure,imshow(BW4);title('闭运算');

图像的膨胀与腐蚀运算比较 zh

设计题目:图像的膨胀与腐蚀运算比较 学院: 班级: 学号: 设计人: 指导老师: 设计时间:2014年12月14日

图像的膨胀与腐蚀运算比较 一、实验目的: 1.了解膨胀与腐蚀的基本运算; 2.掌握膨胀与腐蚀的基本方法; 3.编写Matlab程序实现膨胀与腐蚀。 二、实验要求: 1.使用imdilate函数进行图像膨胀,并观察膨胀后图像的变化; 2.使用imerode函数进行图像腐蚀,并观察腐蚀后图像的变化; 三、实验原理: 膨胀:将于物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程,利用它可以填补物体中的空洞,以及消除包含在目标 区域中的小颗粒噪声。膨胀处理是腐蚀处理的对偶,可定义如下: 膨胀是以得到B的相对与它自身原点的映像并且由z对映像进行移 wèi yíz的集合,这样,和A至少有 位为基础的。A被B膨胀是所有位移 一个元素是重叠的。我们可以把上式改写为: 结构元素B可以看作一个卷积模板,区别在于膨胀是以集合运算为 基础的,卷积是以算术运算为基础的,但两者的处理过程是相似的。 ⑴用结构元素B,扫描图像A的每一个像素; ⑵用结构元素与其覆盖的二值图像做“与”操作; ⑶如果都为0,结果图像的该像素为0。否则为1; 膨胀(dilation)可以看做是腐蚀的对偶运算,其定义是:把结构元素 B平移a后得到Ba,若Ba击中X,我们记下这个a点。所有满足上述条件的a点组成的集合称做X被B膨胀的结果。用公式表示为:

D(X)={a | Ba↑X}=X B,图中X是被处理的对象,B是结构元素,不难知道,对于任意一个在阴影部分的点a,Ba击中X,所以X被B 膨胀的结果就是那个阴影部分。阴影部分包括X的所有范围,就象X膨胀了一圈似的,这就是为什么叫膨胀的原因。同样,如果B不是对称的,X被B膨胀的结果和X被 Bv膨胀的结果不同。让我们来看看实际上是怎样进行膨胀运算的。在图中,左边是被处理的图象X(二值图象,我们针对的是黑点),中间是结构元素B。膨胀的方法是,拿B的中心点和X上的点及X周围的点一个一个地对,如果B上有一个点落在X的范围内,则该点就为黑;右边是膨胀后的结果。可以看出,它包括X的所有范围,就象X膨胀了一圈似的。 腐蚀:是一种消除边界点,使边界点向内部收缩的过程,可以用来消除小且无意义的目标物。如果两目标物间有细小的联通,可以选取足够大的结构元素,将细小连通腐蚀掉。可定义如下: 对Z中的集合A和B,B对A进行腐蚀的整个过程如下: (1)用结构元素B,扫描图像A的每一个像素; (2)用结构元素与其覆盖的二值图像做“与”操作; (3)如果都为1,结果图像的该像素为1。否则为0; 腐蚀处理的结果是使原来的二值图像减小一圈。 其中,X是被处理的对象,B是结构元素。不难知道,对于任意一个在阴影部分的点a,Ba 包含于X,所以X被B腐蚀的结果就是那个阴影部分。阴影部分在X的范围之内,且比X小,就象X被剥掉了一层似的,这就是为什么叫腐蚀的原因。值得注意的是,上面的B 是对称的,即B的对称集Bv=B,所以X被B腐蚀的结果和X被 Bv 腐蚀的结果是一样的。如果B不是对称的,让我们看看图6.9,就会发现X被B腐蚀的结果和X被 Bv腐蚀的结果不同。

数字图像处理腐蚀与膨胀小程序

%%%%%%%%%%%%%%%%下面为用于处理的样本‘圆’%%%%%%%%%%%%%%%%%%%%%%%%% R=8;%%半径R S=zeros(2*R); for x1=-R:R-1; for y1=-R:R-1; if round(sqrt(x1^2+y1^2))<=R%%圆心在原点的圆的表达函数 %%对圆心在原点的圆进行平移,使x,y都为非负数 x=R+x1+1; y=R+y1+1; S(x,y)=1; end end end figure(1),imshow(S); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%下面为要处理的图形%%%%%%%%%%%%%%%%%%%%%%%%% W=256;L=512; %%定义边界 X=zeros(W,L); for i=1:128 for j=1:256 if i<=15|i>=114 if j<103|j>153 X(i+W/4,j+L/4)=1; end else if (i>15&i<=56)|(i>=72&i<114) if (j>50&j<103)|j>153 X(i+W/4,j+L/4)=1; end else if i>56&i<72 if j>50&j<206 X(i+W/4,j+L/4)=1; end end end end end end figure(2),imshow(X); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%下面用S对X进行腐蚀操

数学形态学的腐蚀和膨胀运算

数学形态学的腐蚀和膨胀运算 "形态学"是描述动植物形态和结构的一门生物学分支,这里借用来指一种图像处理的方法.图像处理的形态学方法是一种"数学形态学"方法,用来提取图像成分,并据此来对图像区域的形状进行表示和描述.它的数学语言是集合理论,其中的集合代表图像中物体的形状.图像处理中常用的数学形态学方法包括腐蚀,膨胀,开,闭,边缘提取和图像细化.我依次给出Visual C++源代码: /************************************************************************* * * ErosionDIB() * * Parameters: * * HDIB hDib - objective DIB handle * BOOL bHori - erosion direction * * Return Value: * * BOOL - True is success, else False * * Description: * * This function do erosion with the specified direction * ************************************************************************/ BOOL ErosionDIB(HDIB hDib, BOOL bHori) { // start wait cursor WaitCursorBegin(); // Old DIB buffer if (hDib == NULL) { WaitCursorEnd(); return FALSE; } // only support 256 color image WORD wBitCount = DIBBitCount(hDib); if (wBitCount != 8) { WaitCursorEnd(); return FALSE; }

MATLAB函数处理图像实现膨胀腐蚀

MATLAB 函数处理图像实现膨胀腐蚀 一、实验目的 1、了解二值形态学的基本运算 2、掌握二值图像膨胀、腐蚀的基本方法 3、编程实现膨胀、腐蚀 二、实验要求 1、使用imdilate 函数进行图像膨胀,并观察膨胀后图像的变化。 2、使用imerode 函数进行图像腐蚀,观察腐蚀后的图像变化情况。 三、实验原理 膨胀:将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。利用它可以填补物体中的空洞。B 对X 膨胀所产生的二值图像D 是满足以下条件的点(x,y )的集合:如果B 的原点平移到点(x,y ),那么它与X 的交集非空。 数学表达式:B A C ⊕= 腐蚀:一种消除边界点,使边界向内部收缩的过程。利用它可以消除小而且无意义的物体。B 对X 腐蚀所产生的二值图像E 是满足以下条件的点(x,y)的集合:如果B 的原点平移到点(x,y ),那么B 将完全包含于X 中。数学表达式:B A C Θ= 膨胀处理:一种消除边界点,使边界点向内部收缩的过程。 腐蚀处理:将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。 四、实验步骤 1.图像膨胀的Matlab 实现: 可以使用imdilate 函数进行图像膨胀,imdilate 函数需要两个基本输入参数,即待处理的输入图像和结构元素对象。结构元素对象可以是strel 函数返回的对象,也可以是一个自己定义的表示结构元素邻域的二进制矩阵。此外,

imdilate还可以接受两个可选参数:PADOPT(padopt) ——影响输出图片的大小、PACKOPT(packopt).——说明输入图像是否为打包的二值图像(二进制图像)。 步骤1,首先创建一个包含矩形对象的二值图像矩阵。 >> BW=zeros(9,10); >> BW(4:6,4:7) =1 BW = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 步骤2,使用一个3×3的正方形结构元素对象对创建的图像进行膨胀。 >> SE=strel('square',3) SE = Flat STREL object containing 9 neighbors. Neighborhood: 1 1 1 1 1 1 1 1 1 步骤3,将图像BW和结构元素SE传递给imdilate函数。 >> BW2=imdilate(BW,SE) BW2 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0

二值形态学-膨胀和腐蚀

膨胀(dilation)可以看做是腐蚀的对偶运算,其定义是:把结构元素B平移a后得到B a,若B a击中X,我们记下这个a点。所有满足上述条件的a点组成的集合称做X被B膨胀的 结果。用公式表示为:D(X)={a | Ba↑X}=X B,如图1所示。图1中X是被处理的对象,B是结构元素,不难知道,对于任意一个在阴影部分的点a,B a击中X,所以X被B膨胀的结果就是那个阴影部分。阴影部分包括X的所有范围,就象X膨胀了一圈似的,这就是为什么叫膨胀的原因。 同样,如果B不是对称的,X被B膨胀的结果和X被B v膨胀的结果不同。 让我们来看看实际上是怎样进行膨胀运算的。在图2中,左边是被处理的图象X(二值图象,我们针对的是黑点),中间是结构元素B。膨胀的方法是,拿B的中心点和X上的点及X周围的点一个一个地对,如果B上有一个点落在X的范围内,则该点就为黑;右边是膨胀后的结果。可以看出,它包括X的所有范围,就象X膨胀了一圈似的。 图1 膨胀的示意图 图2 膨胀运算 只需腐蚀的代码稍加修改便可实现膨胀,下面是膨胀运算的C++代码:

/* * my_dilate.cpp * 对二值图像进行膨胀 * Created on: 2011-10-8 * Author: LiChanghai*/ //假定背景为黑色---0,目标为白色---255//结构元素---m×n的矩形,m,n为奇数//结构元素的中心作为原点#include #define M 3 #define N 3 #define M1 (M-1)/2 #define N1 (N-1)/2 bool my_dilate(unsigned char *pImage, int width, int height, int biBitCount) { //定义相关变量int i, j, i2, j2; bool mark=0; //定义结构元素unsigned char element[M][N]; memset(element,255,sizeof(element)); //定义变量,计算图像每行像素所占的字节数(必须是4的倍数)int lineByte=(width * biBitCount/8+3)/4*4; //申请新的位图数据存储空间, 并拷贝原图像unsigned char *pImage2; pImage2=new unsigned char[lineByte*height]; memcpy(pImage2, pImage, lineByte*height); //现在对pImage2进行判断,对pImage进行处理//为防止访问越界,最外面的一圈像素不作处理for(i=M1; i1; i++) for(j=N1; j1; j++) { if(*(pImage2+i*lineByte+j)==0) //只对背景像素处理{ mark=0; for(i2=-M1; i21; i2++) for(j2=-N1; j21; j2++) if(*(pImage2+(i+i2)*lineByte+(j+j2)) == element[i2+M1][j2+N1]) mark=1; //如果结构元素有一个点在目标区域内,则标记//如果该背景像素被标记,则将该像素膨胀为目标像素if(mark==1) *(pImage+i*lineByte+j)=255; } } return 1; }

数字图像的腐蚀膨胀技术研究

1 引言 1.1 课题研究的目的和意义 数字图像处理(Digital Image Processing),就是利用数字计算机或者其他数字硬件,对从图像信息转换而得到的电信号进行某些数学运算,以提高图像的实用性。例如从卫星图片中提取目标物的特征参数,三维立体断层图像的重建等。总的来说,数字图像处理包括点运算、几何处理、图像增强、图像复原、图像形态学处理、图像编码、图像重建、模式识别等。 由于计算机处理能力的不断增强,数字图像处理学科在飞速发展的同时,也越来越广泛地向许多其他学科快速交叉渗透,使得图像作为信息获取以及信息的利用等方面也变得越来越重要。目前数字图像处理的应用越来越广泛,已经渗透到工业、医疗保健、航空航天、军事等各个领域,在国民经济中发挥越来越大的作用。 MathWorks公司推出的MATLAB软件是学习数理知识的好帮手。应用MATLAB 友好的界面和丰富、实用、高效的指令及模块,可以使人较快地认识、理解图像处理的相关概念,逐步掌握图像信号处理的基本方法,进而能够解决相关的工程和科研中的问题。 图像是人类获取和交换信息的主要来源,因此,图像处理的应用领域必然涉及到人类生活和工作的方方面面。随着人类活动范围的不断扩大,图像处理的应用领域也将随之不断扩大,已在国家安全、经济发展、日常生活中充当越来越重要的角色,对国计民生的作用不可低估。

1.2 国内外研究现状 数字图像处理最早出现于20世纪50年代,当时的电子计算机已经发展到一定水平,人们开始利用计算机来处理图形和图像信息。数字图像处理作为一门学科大约形成于20世纪60年代初期。 早期的图像处理的目的是改善图像的质量,它以人为对象,以改善人的视觉效果为目的。图像处理中,输入的是质量低的图像,输出的是改善质量后的图像,常用的图像处理方法有图像增强、复原、编码、压缩等。首次获得实际成功应用的是美国喷气推进实验室(JPL)。他们对航天探测器徘徊者7号在1964年发回的几千张月球照片使用了图像处理技术,如几何校正、灰度变换、去除噪声等方法进行处理,并考虑了太阳位置和月球环境的影响,由计算机成功地绘制出月球表面地图,获得了巨大的成功。随后又对探测飞船发回的近十万张照片进行更为复杂的图像处理,以致获得了月球的地形图、彩色图及全景镶嵌图,获得了非凡的成果,为人类登月创举奠定了坚实的基础,也推动了数字图像处理这门学科的诞生。在以后的宇航空间技术,如对火星、土星等星球的探测研究中,数字图像处理技术都发挥了巨大的作用。数字图像处理取得的另一个巨大成就是在医学上获得的成果。1972年英国EMI公司工程师Housfield发明了用于头颅诊断的X射线计算机断层摄影装置,也就是我们通常所说的CT(Computer Tomograph)。CT的基本方法是根据人的头部截面的投影,经计算机处理来重建截面图像,称为图像重建。1975年EMI公司又成功研制出全身用的CT装置,获得了人体各个部位鲜明清晰的断层图像。1979年,这项无损伤诊断技术获得了诺贝尔奖,说明它对人类作出了划时代的贡献。 与此同时,图像处理技术在许多应用领域受到广泛重视并取得了重大的开拓性成

二值形态学-腐蚀膨胀

二值形态学——膨胀,腐蚀 将由离散点组成的图像进行膨胀,腐蚀运算。 膨胀dilation 考虑两幅二值图像A,B。它们的前景用黑色,背景用白色。另f A和f B表示各自前景点的集合。定义膨胀运算为:dilation(A,B) = {a+b| a∈A,b∈B}。比如: A = {(2,8),(3,6),(4,4),(5,6),(6,4),(7,6),(8,8)} B = {(0,0),(0,1)} dilation(A,B) = {(2,8),(2,9),(3,6),(3,7),(4,4),(4,5),(5,6),(5,7),(6,4),(6,5),(7,6),(7,7),(8,8),(8,9) } 腐蚀erosion 同样考虑两幅图像A,B。定义腐蚀运算为: erosion(A,B) = {a|(a+b)∈A, a∈A,b∈B} 膨胀腐蚀运算的性质 ?交换律dilation(A,B) = dilation(B,A) ?结合律dilation(dilation(A,B),C) = dilation(A,dilation(B,C)) ?并集dilation(A,B∪C) = dilation(A,B)∪dilation(A,C) ?增长性if A blongs to B then dilation(A,K) blongs to dilation(B,K) C++ 实现 这里 buf 相当于 A,model相当于B 计算dilation(buf,model) void ShapeOper::dilation(unsigned char* buf, int width, int height, vector model) { int i,j,k; point P; unsigned char* temp = new unsigned char[width*height];

matlab中有关膨胀与腐蚀的解释资料

腐蚀与膨胀的基本原理 1.图像形态学处理的概念 数字图像处理中的形态学处理是指将数字形态学作为工具从图像中提取对于表达和描绘区域形状有用处的图像分量,比如边界、骨架以及凸壳,还包括用于预处理或后处理的形态学过滤、细化和修剪等。图像形态学处理中我们感兴趣的主要是二值图像。 在二值图像中,所有黑色像素的集合是图像完整的形态学描述,二值图像的各个分量是Z2的元素。假定二值图像A和形态学处理的结构元素B是定义在笛卡儿网格上的集合,网格中值为1的点是集合的元素,当结构元素的原点移到点(x,y)时,记为Sxy,为简单起见,结构元素为3x3,且全都为1,在这种限制下,决定输出结果的是逻辑运算。 2.膨胀和腐蚀 膨胀和腐蚀这两种操作是形态学处理的基础,许多形态学算法都是以这两种运算为基础的。 ①膨胀 是以得到B的相对与它自身原点的映像并且由z对映像进行移位为基础的。A被B膨胀是所有位移z的集合,这样,和A至少有一个元素是重叠的。我们可以把上式改写为: 结构元素B可以看作一个卷积模板,区别在于膨胀是以集合运算为基础的,卷积是以算术运算为基础的,但两者的处理过程是相

似的。 ⑴用结构元素B,扫描图像A的每一个像素 ⑵用结构元素与其覆盖的二值图像做“与”操作 ⑶如果都为0,结果图像的该像素为0。否则为1 ②腐蚀 对Z中的集合A和B,B对A进行腐蚀的整个过程如下: ⑴用结构元素B,扫描图像A的每一个像素 ⑵用结构元素与其覆盖的二值图像做“与”操作 ⑶如果都为1,结果图像的该像素为1。否则为0 腐蚀处理的结果是使原来的二值图像减小一圈。 3.击中(匹配)或击不中变换 假设集合A是由3个子集X,Y和Z组成的集合,击中(匹配)的目的是要在A中找到X的位置,我们设X被包围在一个小窗口W中,与W有关的X的局部背景定义为集合的差(W-X),则X在A内能得到精确拟合位置集合是由X对A的腐蚀后由(W-X)对A的补集Ac腐蚀的交集,这个交集就是我们要找的位置,我们用集合B来表示由X和X的背景构成的集合,我们可以令B =(B1,B2),这里B1=X,B2=(W-X),则在A中对B进行匹配可以表示为: A⊙B 我们称为形态学上的击中或击不中变换。 4.开闭操作

图像膨胀和腐蚀

图像二值形态学——腐蚀和膨胀的C语言实现 数学形态学是法国和德国科学家在研究岩石结构时建立的一门科学。形态学的用途主要是获取物体拓扑和结构信息,通过物体和结构元素相互作用的某些运算,得到物体更本质的形态。在图像处理中的应用主要是:利用形态学的基本运算,对图像进行观察和处理,从而达到改善图像质量的目的;描述和定义图像的各种几何参数和特征,如面积、周长、连通度、颗粒度、骨架和方向性等。 关于形态学的具体描述和数学形式化的定义可以从文章底部的参考资料中获得。 最近的实验中需要对二值图像进行减噪处理,图像形态学中的腐蚀和膨胀能很好的解决此问题。如果在腐蚀和膨胀操作前,对灰度图像做一次滤波,减噪效果将更明显。 腐蚀的具体操作是:用一个结构元素(一般是3×3的大小)扫描图像中的每一个像素,用结构元素中的每一个像素与其覆盖的像素做“与”操作,如果都为1,则该像素为1,否则为0。 膨胀的具体操作是:用一个结构元素(一般是3×3的大小)扫描图像中的每一个像素,用结构元素中的每一个像素与其覆盖的像素做“与”操作,如果都为0,则该像素为0,否则为1。

腐蚀的作用是消除物体边界点,使目标缩小,可以消除小于结构元素的噪声点;膨胀的作用是将与物体接触的所有背景点合并到物体中,使目标增大,可添补目标中的空洞。 开运算是先腐蚀后膨胀的过程,可以消除图像上细小的噪声,并平滑物体边界。 闭运算时先膨胀后腐蚀的过程,可以填充物体内细小的空洞,并平滑物体边界。 以下是一段在OpenCV中实现的C语言程序,分别是图像腐蚀和膨胀函数,输入的参数依次为:当前二值图像数据指针、图像宽度、图像高度。通过这两个函数的组合使用(开闭运算),可以对图像进行有效减噪。 一、图像腐蚀膨胀细化的基本原理 1.图像细化的基本原理

形态学中的腐蚀与膨胀

数学形态学运算——腐蚀、膨胀、开运算、闭运算腐蚀简单说:就是以结构B的原点为基点沿着将要被腐蚀的图像A中的所有点移动,如果此时结构B中的所有点(包括原点)被A包含,那么被B原点沿着的A中的该点就保留,否则,该点就被抛弃。可以看出,执行完该腐蚀指令后,A中突出部分,以及外围至少减少了结构B的一半(假设B的原点为B的中心)。膨胀简单说:就是以结构B的原点为基点沿着将要被膨胀前的图像A中的所有点移动,如果此时结构B中至少有一个点(包括原点)被A包含,那么被沿着的A中的该点及周围就被B扩充,扩充范围为B的整个区域。可以看出,膨胀后,原A沿着边缘外围被扩充了B的一半(假设B的原点为B的中心)。 数学形态学操作可以分为二值形态学和灰度形态学,灰度形态学由二值形态学扩展而来。数学形态学有2个基本的运算,即腐蚀和膨胀,而腐蚀和膨胀通过结合又形成了开运算和闭运算。 开运算就是先腐蚀再膨胀,闭运算就是先膨胀再腐蚀。 腐蚀 粗略的说,腐蚀可以使目标区域范围“变小”,其实质造成图像的边界收缩,可以用来消除小且无意义的目标物。式子表达为: 该式子表示用结构B腐蚀A,需要注意的是B中需要定义一个原点,【而B的

移动的过程与卷积核移动的过程一致,同卷积核与图像有重叠之后再计算一样】当B的原点平移到图像A的像元(x,y)时,如果B在(x,y)处,完全被包含在图像A重叠的区域,(也就是B中为1的元素位置上对应的A图像值全部也为1)则将输出图像对应的像元(x,y)赋值为1,否则赋值为0。 我们看一个演示图。 B依顺序在A上移动(和卷积核在图像上移动一样,然后在B的覆盖域上进行形态学运算),当其覆盖A的区域为[1,1;1,1]或者[1,0;1,1]时,(也就是B中‘1’是覆盖区域的子集)对应输出图像的位置才会为1。 膨胀

图像处理 matlab函数 膨胀 腐蚀 开 闭运算

img_gray=imread('rice.png'); img_erzhi=imread('testpat1.png'); imshow(img_gray) figure,imshow(img_erzhi) [m n]=size(img_gray); img_gray_fu=zeros(m,n); img_gray_peng=zeros(m,n); img_erzhi_fu=zeros(m,n); img_erzhi_peng=zeros(m,n); for i=2:m-1 for j=2:n-1 img_gray_fu(i,j)=min(min(img_gray(i-1:i+1,j-1:j+1))); img_gray_peng(i,j)=max(max(img_gray(i-1:i+1,j-1:j+1))); end end figure,imshow(uint8(img_gray_fu)); figure,imshow(uint8(img_gray_peng)); for i=2:m-1 for j=2:n-1 img_erzhi_fu(i,j)=min(min(img_erzhi(i-1:i+1,j-1:j+1))); img_erzhi_peng(i,j)=max(max(img_erzhi(i-1:i+1,j-1:j+1))); end end figure,imshow(uint8(img_erzhi_fu)); figure,imshow(uint8(img_erzhi_peng));

I=imread('testpat1.png'); J=im2bw(I); SE=strel('square',10); A=imopen(J,SE); figure,imshow(A);

腐蚀膨胀

最近的实验中需要对二值图像进行减噪处理,图像形态学中的腐蚀和膨胀能很好的解决此问题。如果在腐蚀和膨胀操作前,对灰度图像做一次滤波,减噪效果将更明显。 腐蚀的具体操作是:用一个结构元素(一般是3×3的大小)扫描图像中的每一个像素,用结构元素中的每一个像素与其覆盖的像素做“与”操作,如果都为1,则该像素为1,否则为0。膨胀的具体操作是:用一个结构元素(一般是3×3的大小)扫描图像中的每一个像素,用结构元素中的每一个像素与其覆盖的像素做“与”操作,如果都为0,则该像素为0,否则为1。腐蚀的作用是消除物体边界点,使目标缩小,可以消除小于结构元素的噪声点;膨胀的作用是将与物体接触的所有背景点合并到物体中,使目标增大,可添补目标中的空洞。开运算是先腐蚀后膨胀的过程,可以消除图像上细小的噪声,并平滑物体边界。 闭运算时先膨胀后腐蚀的过程,可以填充物体内细小的空洞,并平滑物体边界。 一、图像腐蚀膨胀细化的基本原理 1.图像细化的基本原理 ⑴图像形态学处理的概念 数字图像处理中的形态学处理是指将数字形态学作为工具从图像中提取对于表达和描绘区域形状有用处的图像分量,比如边界、骨架以及凸壳,还包括用于预处理或后处理的形态学过滤、细化和修剪等。图像形态学处理中我们感兴趣的主要是二值图像。 在二值图像中,所有黑色像素的集合是图像完整的形态学描述,二值图像的各个分量是Z2的元素。假定二值图像A和形态学处理的结构元素B是定义在笛卡儿网格上的集合,网格中值为1的点是集合的元素,当结构元素的原点移到点(x,y)时,记为Sxy,为简单起见,结构元素为3x3,且全都为1,在这种限制下,决定输出结果的是逻辑运算。 ⑵二值图像的逻辑运算 逻辑运算尽管本质上很简单,但对于实现以形态学为基础额图像处理算法是一种有力的补充手段。在图像处理中用到的主要逻辑运算是:与、或和非(求补),它们可以互相组合形成其他逻辑运算。 ⑶膨胀和腐蚀 膨胀和腐蚀这两种操作是形态学处理的基础,许多形态学算法都是以这两种运算为基础的。 ①膨胀 是以得到B的相对与它自身原点的映像并且由z对映像进行移位为基础的。A被B膨胀是所有位移z的集合,这样,和A至少有一个元素是重叠的。我们可以把上式改写为: 结构元素B可以看作一个卷积模板,区别在于膨胀是以集合运算为基础的,卷积是以算术运算为基础的,但两者的处理过程是相似的。 ⑴用结构元素B,扫描图像A的每一个像素⑵用结构元素与其覆盖的二值图像做“与” 操作⑶如果都为0,结果图像的该像素为0。否则为1 ②腐蚀 对Z中的集合A和B,B对A进行腐蚀的整个过程如下:⑴用结构元素B,扫描图像A的每一个像素⑵用结构元素与其覆盖的二值图像做“与”操作⑶如果都为1,结果图像的该像素为1。否则为0 腐蚀处理的结果是使原来的二值图像减小一圈。 ⑷击中(匹配)或击不中变换 假设集合A是由3个子集X,Y和Z组成的集合,击中(匹配)的目的是要在A中找到X 的位置,我们设X被包围在一个小窗口W中,与W有关的X的局部背景定义为集合的差(W-X),则X在A内能得到精确拟合位置集合是由X对A的腐蚀后由(W-X)对A的

相关主题
文本预览
相关文档 最新文档