二值图像处理的程序设计 形态学处理.docx
《二值图像处理的程序设计 形态学处理.docx》由会员分享,可在线阅读,更多相关《二值图像处理的程序设计 形态学处理.docx(12页珍藏版)》请在冰豆网上搜索。
二值图像处理的程序设计形态学处理
1相关知识
1.1MATLAB在图像处理中的应用
MATLAB7.x提供了20类图像处理函数,涵盖了图像处理包括近期研究成果在内的几乎所有的技术方法,是学习和研究图像处理的人员难得的宝贵资料和加工工具箱。
这些函数按功能可分为图像显示、图像文件I/O、图像算术运算、几何变换、图像登记、像素值与统计、图像分析、图像增强、线性滤波、线性二元滤波设计、图像去模糊、图像变换、邻域与块处理、灰度与二值图像的形态学运算、结构元素创建与处理、基于边缘的处理、色彩映射表操作、色彩空间变换及图像类型与类型转换。
Matlab数字图像处理工具箱函数包括以下几类:
(1)图像显示函数;
(2)图像文件输入、输出函数;(3)图像几何操作函数;(4)图像像素值及统计函数;(5)图像分析函数;(6)图像增强函数;(7)线性滤波函数;(8)二维线性滤波器设计函数;(9)图像变换函数;(10)图像邻域及块操作函数;(11)二值图像操作函数;(12)基于区域的图像处理函数;(13)颜色图操作函数;(14)颜色空间转换函数;(15)图像类型和类型转换函数。
1.2图像处理概念
图像处理并不仅限于对图像进行增强、复原和编码,还要对图像进行分析,图像分析旨在对图像进行描述,即用一组数或符号表征图像中目标区的特征、性质和相互间的关系,为模式识别提供基础。
描述一般针对图像或景物中的特定区域或目标。
闭运算通常用来填充目标内细小空洞,连接断开的邻近目标,平滑其边界的同时不明显改变其面积。
1.3图像二值化的基本原理
图像的二值化处理就是讲图像上的点的灰度置为0或255,也就是讲整个图像呈现出明显的黑白效果。
即将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。
在数字图像处理中,二值图像占有非常重要的地位,特别是在实用的图像处理中,以二值图像处理实现而构成的系统是很多的,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像,这样子有利于再对图像做进一步处理时,图像的集合性质只与像素值为0或255的点的位置有关,不再涉及像素的多级值,使处理变得简单,而且数据的处理和压缩量小。
为了得到理想的二值图像,一般采用封闭、连通的边界定义不交叠的区域。
所有灰度大于或等于阀值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。
如果某特定物体在内部有均匀一致的灰度值,并且其处在一个具有其他等级灰度值的均匀背景下,使用阀值法就可以得到比较的分割效果。
如果物体同背景的差别表现不在灰度值上(比如纹理不同),可以将这个差别特征转换为灰度的差别,然后利用阀值选取技术来分割该图像。
动态调节阀值实现图像的二值化可动态观察其分割图像的具体结果。
2课程设计要求
利用所学的数字图像处理技术,自己设计完成对一副灰度图像的形态学运算(膨胀、腐蚀和开运算);
(2)对一副灰度图像的分块处理运算。
具体要求:
(1)熟悉和掌握MATLAB程序设计方法;
(2)学习和熟悉MATLAB图像处理工具箱;
(3)学会运用MATLAB工具箱对图像进行处理和分析;
(4)能对图像jpg格式进行打开、保存、另存、退出等功能操作;
(5)利用所学数字图像处理技术知识、MATLAB软件对图像进行腐蚀,膨胀,开运算,闭运算。
(6)在程序开发时,清楚主要实现函数目的和作用,需要在程序书写时做适当注释说明,理解每一句函数的具体意义和使用范围;
(7)每个程序都必须做到功能仿真成功,运行结果以图片的形式粘贴到报告中。
3课程设计分析
3.1膨胀
膨胀是将与目标区域接触的背景点合并到该目标物中,使目标边界向外部扩张的处理。
膨胀可以用来填补目标区域中存在的某些空洞,以及消除包含在目标区域中的小颗粒噪声。
膨胀的算符为
,A用B来膨胀写作
。
具体步骤如下:
(1)用结构元素B,扫描图像A的每一个像素;
(2)用结构元素与其覆盖的二值图像做“与”操作;
(3)如果都为0,结果图像的该像素为0,否则为1。
在MATLAB中运用dilate函数来实现膨胀操作。
3.2腐蚀
腐蚀是一种消除边界点,使边界向内部收缩的过程。
可以用来消除小且无意义的目标物。
如果两目标物间有细小的连通,可以选取足够大的结构元素,将细小连通腐蚀掉。
腐蚀的算符为
,A用B来腐蚀写作
。
腐蚀是对X中的集合A和B,B对A进行腐蚀的整个过程如下:
(1)用结构元素B,扫描图像A的每一个像素;
(2)用结构元素与其覆盖的二值图像做“与”操作;
(3)如果都为1,结果图像的该像素为1,否则为0。
腐蚀处理的结果是使原来的二值图像减小一圈。
在MATLAB中用erode函数来实现腐蚀操作。
3.3闭运算
使用同一个结构元素对图像先膨胀再进行腐蚀的运算称为闭运算。
闭合的算符为
A用B开闭合写作
,其定义为
。
闭运算通常用来填充目标内细小空洞,连接断开的邻近目标,平滑其边界的同时并不明显改变其面积。
MATLAB中用imclose函数来实现闭合操作。
该函数功能是对灰度图像执行形态学闭运算,即使用同样的结构元素先对图像进行膨胀操作后进行腐蚀操作。
调用格式为:
IM=imclose(A,SE)。
4实验原理
膨胀:
将于物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程,利用它可以填补物体中的空洞,以及消除包含在目标区域中的小颗粒噪声。
膨胀处理是腐蚀处理的对偶,可定义如下:
膨胀是以得到B的相对与它自身原点的映像并且由z对映像进行移位为基础的。
A被B膨胀是所有
z的集合,这样,和A至少有一个元素是重叠的。
我们可以把上式改写为:
结构元素B可以看作一个卷积模板,区别在于膨胀是以集合运算为基础的,卷积是以算术运算为基础的,但两者的处理过程是相似的。
⑴用结构元素B,扫描图像A的每一个像素;
⑵用结构元素与其覆盖的二值图像做“与”操作;
⑶如果都为0,结果图像的该像素为0。
否则为1;
图4.1膨胀示意图
膨胀(dilation)可以看做是腐蚀的对偶运算,其定义是:
把结构元素B平移a后得到Ba,若Ba击中X,我们记下这个a点。
所有满足上述条件的a点组成的集合称做X被B膨胀的结果。
用公式表示为:
D(X)={a|Ba↑X}=XB,图中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;
腐蚀处理的结果是使原来的二值图像减小一圈。
图4.2腐蚀的示意图
其中,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腐蚀的结果不同。
5仿真及仿真结果分析
5.1实验内容与步骤
1.调入并显示图像2.jpg;
2.选取合适的阈值,得到二值化图像Figure2.jpg;
3.设置结构元素;
4.对得到的二值图像Figure2.jpg进行腐蚀运算;
5.对得到的二值图像Figure2.jpg进行膨胀运算;
6.对得到的二值图像Figure2.jpg进行开运算;
7.对得到的二值图像Figure2.jpg进行闭运算;
8.将两种处理方法的结果作比较;
5.2源程序
I=imread(''D:
\2.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);
figure,imshow(BW1);
figure,imshow(BW2);
figure,imshow(BW3);
figure,imshow(BW4);
6结果分析
图5.1原始图像
图5.2二值化图像
图5.3腐蚀运算图像
图5.4膨胀运算图像
图5.5开运算图像
图5.6闭运算图像
1.结合实验内容,评价腐蚀运算与膨胀运算的效果。
腐蚀是一种消除边界点,它使边界向内部收缩,消除小且无意义的物体。
膨胀是将与物体接触的所有背景点合并到该物体中,使边界向外部扩张的过程。
可以用来填补物体中的空洞。
2.结合实验内容,评价开运算与闭运算的效果。
先腐蚀后膨胀的过程称为开运算。
实验中,开运算能够去除孤立的小点,毛刺和小桥(即连通两块区域的小点),而总的位置和形状不变。
先膨胀后腐蚀称为闭运算。
实验中,闭运算能够填平小湖(即小孔),弥合小裂缝,而总的位置和形状不变。
3.腐蚀、膨胀、开、闭运算的适用条件。
由于噪声的影响,图象在阈值化后所得到边界往往是很不平滑的,物体区域具有一些噪声孔,背景区域上散布着一些小的噪声物体。
连续的开和闭运算可以有效地改善这种情况。
有时需要经过多次腐蚀之后再加上相同次数的膨胀,才可以产生比较好的效果。
结束语
图像的二值化处理就是将图像上的点的灰度置为0或255,也就是讲整个图像呈现出明显的黑白效果。
一般情况下,膨胀和腐蚀是不可逆运算,对图像膨胀或腐蚀都导致图像目标面积大小改变。
为了对二值图像进行着两种基本操作而保证图像目标面积不发生明显变化,提出了二值图像的开运算和闭运算。
使用同一个结构元素对图像先膨胀再进行腐蚀的运算称为闭运算。
闭运算的作用是在保持原目标的大小与形态的同时,填充凹陷,弥合孔洞和裂缝。
常用来填充孔洞、凹陷和连接断开的目标,与膨胀作用相类似,但与膨胀的处理相比,具有保持目标大小不变的优点。
数学形态学对图像的处理具有直观上的简明性和数学上的严谨性,在定量描述图像的形态特征上具有独特的优势,为基于形状细节进行图像处理提供了强有力的手段。
建立在集合理论基础上的数学形态学,主要通过选择相应的结构元素采用膨胀、腐蚀、开启、闭合#种基本运算的组合来处理图像。
数学形态学在图像处理中的应用广泛,有许多实用的算法,但在每种算法中结构元素的选取都是一个重要的问题。
参考文献
[1]阮秋琦.数字图像处理学[M].北京:
电子工业出版社,2001.
[2]龚声蓉,刘纯平,王强等.数字图像处理与分析[M].北京:
清华大学出版社,2006.
[3]贾永红.计算机图像处理与分析[M].武汉:
武汉大学出版社,2001.
[4]陈桂明.应用MATLAB语言处理数字信号与图像处理[M].北京:
科学出版社,2000.
[5]夏德深,傅德胜.计算机图像处理及应用[M].南京:
东南大学出版社,2004.
[6]姚敏.计算机图像处理[M].北京:
机械工业出版社,2006.
[7]容观澳.计算机图像处理[M].北京:
清华大学出版社,2000.
[8]吴健康.数字图像分析[M].北京:
邮电出版社,1989.