在MATLAB中,除了开和关运算外,MATLAB图像处理工具箱还提供了其他以膨胀和腐蚀为基础的形态学操作,例如bwmorph()、bwperim()等函数,可以用于图像的骨骼化、细化处理。以下通过几个具体例子来介绍bwmorph()函数的功能。
1.骨架提取
为了把图像中的目标缩减为直线而不改变图像的主要结构,可以使用bwmorph()函数来提取图像中目标的骨架,它常见调用方法如下:
BW2=bwmorph(BW,‘skel’)
BW2=bwmorph(BW,‘skel’,n)
其中:
BW是输入的二值图像;
skel是专门的形态学操作;
n是指该形态学操作执行的次数,可以为无限次,直到图像不发生变化为止;
BW2是返回的提取骨架后的图像。
对一张二值图像进行骨架化,具体MATLAB代码实现如下:
clear all;
clc;
BW1=imread('3.png');
BW2=bwmorph(BW1,'skel',Inf);
subplot(121),imshow(BW1);
subplot(122),imshow(BW2);
在程序中,先读入二值图像,然后通过函数bwmorph()进行二值图像的骨架化处理,程序运行后结果如图8.12所示。图像的骨架化就是将图像中所有对象都简化为线条,但是图像的基本结构并不改变,同时保留了图像的基本轮廓。
图8.12 二值图像骨架化
2.细化处理
在MATLAB中,图像的细化与骨架化处理函数的调用格式基本一致,下面是对二值图像进行细化处理的代码实现:
clear all;
clc;
BW1=imread('3.png');(www.xing528.com)
BW2=bwmorph(BW1,'thin',Inf);
subplot(121),imshow(BW1);
subplot(122),imshow(BW2);
在程序中,先读入二值图像,然后通过函数bwmorph()进行二值图像的细化处理,程序运行后结果如图8.13所示。
图8.13 二值图像细化操作
3.边缘检测
对于二值图像来说,如果它的像素值为1,而邻域中至少有一个像素值为0则称其为边界像素,MATLAB图像处理工具箱中使用bwperim()函数来检测图像的边界,它的常见调用方法如下:
BW2=bwperim(BW1)
BW2=bwperim(BW1,conn)
其中:
BW1是指输入的二值图像。
conn规定了连通性,对于二维图像来说,conn可以为4或者8,默认为4,对于三维图像来说,conn可以为6,18或者26,默认值为6。
BW2是返回的边界图像。
对二值图像进行边缘检测,MATLAB代码实现如下:
clear all;
clc;
BWl=imread('2.png');
BW2=bwperim(BW1,8);
subplot(121),imshow(BW1);
subplot(122),imshow(BW2);
在程序中,先读入二值图像,然后通过函数bwperim()进行二值图像的边缘检测处理,程序运行后结果如图8.14所示。
图8.14 二值图像边缘检测
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。