在数字图像处理中,膨胀在数学形态学的运算作用是扩展物体的边界点,结合通过建立确定的结构元素,可以使一些相邻距离较短的区域实现连接,实现图像中小的孔洞和边缘处小凹陷部分的填充。腐蚀是一种通过消除图像边界点,使边界向图像的内部收缩的过程。通常使用腐蚀处理消除小而无用的结构元素。不过,膨胀处理是杂点敏感的,细小的杂点通过膨胀处理后会变得明显。
膨胀数学定义如下:
设A为(x,y)一维平面目标区域,D为指定大小和形状的结构元素,定义于(x,y)坐标上的D所表示区域为D(x,y),那么对于A的膨胀表达式为:
腐蚀定义如下:
设4为(x,y)一维平面目标区域,D为指定大小和形状的结构元素,定义于(x,y)坐标上的D所表示区域为D(x,y),那么对于A的腐蚀表达式为:
在MATLAB库中,提供了imdilate()函数来实现膨胀操作。函数imdilate()有多种调用格式。
IM2=imdilate(IM1,SE)
IM2=imdilate(IM1,SE,PACKOPT)
IM2=imdilate(...,SHAPE)
SE是由strel函数返回的一个结构元素对象或一个结构元素对象序列。IM2=imdilate(IM1,SE)使用结构元素矩阵SE对图像数据矩阵IM1执行膨胀操作,得到图像IM2。IM1可以是灰度图像或二值图像,即分别为灰度膨胀和二值膨胀。如果SE是结构元素对象序列,则执行多重膨胀。IM2=imdilate(IM1,SE,PACKOPT)用来识别IM1是否是packed二值图像。PACKOPT的取值为ispacked或notpacked。IM2=imdilate(...,SHAPE)用来决定输出图像的大小。SHAPE可以取值为same或full。当SHAPE值为same时,可以使得输出的图像与输入图像大小相同。如果PACKOPT取值为ispacked,则SHAPE只能取值为same。
其中,函数strel用来构造各种形状和大小的结构元素,具体格式如下所示:
SE=strel(SHAPE,PARAMETERS)
创建由指定形状shape对应的结构元素。其中shape的种类有
‘arbitrary'
'pair'
'diamond'
'periodicline'
'disk'
'rectangle'
'line'
'square'
'octagon
参数parameters一般控制SE的大小。
例子:
(www.xing528.com)
对二值图像进行膨胀的MATLAB代码实现如下所示:
clear all;
clc;
bw=imread('2.png');
se=strel('disk',8);
bw2=imdilate(bw,se);
figure;
subplot(121);imshow(bw);
subplot(122);imshow(bw2);
在程序中,先读入二值图像,然后通过函数strel()设计盘型结构元素,最后对图像进行膨胀处理操作。程序运行后结果如图8.8所示。
图8.8 二值图像的膨胀处理
在Matlab库中,提供了imerode()函数来实现腐蚀操作。该函数imerode()多种调用格式与函数imdilate()基本相同,在此不再作详细介绍。下面通过灰度图腐蚀操作的例子来详细介绍基本用法。
对灰度图像进行腐蚀的MATLAB代码实现如下所示:
clear all;
clc;
bw=imread('2.png');
se=strel('disk',11);
bw2=imerode(bw,se);
figure;
subplot(121);imshow(bw);
subplot(122);imshow(bw2);
在程序中,先读入二值图像,然后通过函数strel()设计盘型结构元素,最后对图像进行腐蚀处理操作。程序运行后结果如图8.9所示。
图8.9 灰度图像的腐蚀操作
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。