基于机器视觉的玻璃质量在线检测系统设计 - 图文 联系客服

发布时间 : 星期三 文章基于机器视觉的玻璃质量在线检测系统设计 - 图文更新完毕开始阅读6a9f0e2e0722192e4536f697

青岛大学机电工程学院本科毕业设计(论文) 通过对单个像素计算?f,得到一个值后,再将其绝对值进行阈值操作。Roberts算法就是以此为基础而的出来的,如式(3-5)所示。

22R(i,j)=(f(i,j)-f(i+1,j+1))+(f(i,j+1)-f(i+1,j)) (3-5)

用两个2?2的模板共同来实现该算法:

?10??0-1???2. Prewitt与 Sobel边缘检测算法

?01??-10???

在比较复杂的图像中, Roberts算法得到的边缘检测并不尽人意。于是有了Prewitt和Sobel算法的边缘检测,该检测为两个3?3矩阵来检测。如下所示:

?-1-1-1??-101??000??-101???????111????-101??

与Roberts的检测算法类似,同样为水平与垂直两个方向表示图像M。此时要多横纵两个方向进行卷积,于是在两个方向上得到两个矩阵M1,M2。不考虑其他影响的话,次矩阵可以被理解为图像中同一个位置对x与y的偏导。然后在该位置的横纵坐标的两个值进行平方和,于是可以得到矩阵G。G是可以被近似理解为原图M中像素灰度的梯度值,之后便与Roberts一样进行阈值操作即可。

Sobel与Prewitt边缘检测算法的主要区别在于选用不同的模板:

?-1-2-1??-101??000??-202???????121????-101??

假定M的灰度值满足以下关系:

Mx,y=?x+?y+? (3-6)

即梯度为??,??。则单个像素8领域的像素值可以表示为下试:

?-?-?+?-?+?-?+?+???-?+????+??????-?+??+??+?+???

则横纵算子如下所示:

?-a0a??-a-b-a??-b0b??000???????-a0a????aba??

12

青岛大学机电工程学院本科毕业设计(论文) 将这两个矩阵同M像素进行卷积,于是方向导数可以被得出:

gx=2?(2a+b)gy=2?(2a+b)所以得到像素的梯度大小为

??f?22g=??=gx+gy=2(2a+b)?2+?2??r?max (3-8)

(3-7)

当梯度为常量时,则2?2a?b??1成立。

如果a?b?1/6,则得到1/6乘Prewitt算子得矩阵进行总结,如表3-1所示。 表3-1 常用边缘检测算法矩阵 算子名称 Roberts

H1 H2

特点

?10??0-1????01??-10? ??边缘定位准 对噪声敏感

Prewitt

?-1-2-1??-101??000??-202? ??????121????-101???-1-2-1??-101???-202? 000 ???????121????-101??平均、微分 对噪声有抑制作用 加权平均 变宽?2像素

Sobel

总结:对于以上常用的3种算子对含碎纹缺陷的玻璃图像检测结果如所示:

图 3-6 三种算子边缘检测图(左起Roberts、Prewitt、Sobel)

程序如下:

13

青岛大学机电工程学院本科毕业设计(论文) ps=imread('碎纹.jpg');

ps=rgb2gray(ps); %ps灰度图 [m,n]=size(ps); %读取图像大小

pa = edge(ps,'prewitt'); %pa由sobel算子检测得到 imshow(pa);

通过比较可知,Sobel边缘检测算法得到的图像更为清晰准确,所以我们决定采用该算法进行边缘检测。

为了使各种缺陷的边缘检测图更加清晰,我们将图片进行反色以后的得到如下图所示效果(碎纹进行了一次中值滤波,去掉了过多微细的边缘):

图3-7 边缘检测后效果图

3.2 图像特征变量及参数提取

3.2.1 不同缺陷面积的计算

求不规则图形面积的一般过程是将所要求的图形分离出来,再转为灰度图像,二值化后反色,于是目标区域变为白色,白色区域面积就是目标区域的面积。这样就可以利用灰色像素数目/总像素数目(设该比例为S)再乘以整个图像面积就可以得到白色区域的面积了。而在实际应用中不同的工业相机采集的照片的大小尺寸与分辨率都是已知的,由此可知图片的总面积(单位:平方像素)。

S图片=d*h*?2 (3-9)

式(3-9)中d表示照片宽度,h表示照片高度,?表示照片分辨率。

可知缺陷的面积为

Sx=S图片?S (3-10) 由如下程序可以得到含杂质的缺陷面积所占的比例。 bw=imread(‘含杂质线性灰度转换.jpg’); bw=rgb2gray(bw); %转换为灰度图

14

k=k+1; %为白色,则k就加1

else %非白色,则L就加1

青岛大学机电工程学院本科毕业设计(论文) bw =im2bw(bw,level); %二值化 bw =imcomplement(bw); %反色 [m,n]=size(bw);%m,n分别表示长宽

imshow(bw); %确认图像是否所要处理的end 图像 k=0;l=0;

for i=1:m %开始逐行逐列扫描图片矩阵

for j=1:n

if bw(i,j)==255%判断像素是否为白色 k=k+1; %为白色,则k就加1

l=l+1; end end

S=l/(l+k); %S为在该图像中缺陷区域大小占整张图片的大小的比值 S

S = 0.0701

经过程序运算得到三种缺陷面积比例,分别为含杂质:0.0575;气泡:0.0532;碎纹:0.0562。实验用图大小为190×196(像素),分表率为37.795像素/厘米,则图片的面积为5.05×5.19=26.2095cm2。则根据公式(3-9)与公式(3-10)可得到三种缺陷面积如下:

?S碎纹 =1.4730cm2?2?S含杂质 =1.5070cm ?S =1.3943cm2?气泡3.2.2 不同缺陷周长的计算

15