首页 理论教育 PCB自动光学检测中的二值图像形态学操作

PCB自动光学检测中的二值图像形态学操作

时间:2023-10-26 理论教育 版权反馈
【摘要】:1.骨架提取为了把图像中的目标缩减为直线而不改变图像的主要结构,可以使用bwmorph()函数来提取图像中目标的骨架,它常见调用方法如下:BW2=bwmorphBW2=bwmorph其中:BW是输入的二值图像;skel是专门的形态学操作;n是指该形态学操作执行的次数,可以为无限次,直到图像不发生变化为止;BW2是返回的提取骨架后的图像。图8.14二值图像边缘检测

PCB自动光学检测中的二值图像形态学操作

在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 二值图像边缘检测

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈