基于机器视觉的玻璃缺陷的检测与分类方法 技术领域 本发明涉及玻璃缺陷检测分类方法, 具体地涉及一种基于机器视觉的玻璃缺陷的 检测与分类方法。
背景技术 工业生产中, 由于各种技术或者生产工艺问题, 会造成一定的缺陷。 比如玻璃生产 过程中, 就会有气泡或者杂质引入。不同的缺陷对产品质量的影响不同。比如气泡缺陷对 于普通日用玻璃可能影响不大, 而对于汽车的安全玻璃的性能影响却非常大。从 2003 年 5 月 1 日起, 我国对汽车安全玻璃、 建筑安全玻璃、 铁道车辆用安全玻璃实行强制检验。而对 于表面积很大的产品, 仅靠人工去识别缺陷显然不是一种高效的方法。为了避免人工检测 误判造成的损失, 有效降低生产成本与提升正品率, 应用计算机视觉来解决缺陷的检测与 分类问题逐渐成为一种趋势。由于照相机的精度以及现实条件问题, 有时候获取的缺陷图 像的分辨率非常低。有些缺陷只有 4-6 像素大小。在此尺寸的图像上, 较难获得有效的特
征。因此通过目标值的灰度值信息进行分类是一个办法。
经过对现有技术文献的查找发现, 目前一些研究者的工作集中在缺陷的查找并统 计缺陷的数目上。周雪芹等人 2007 年发表在 《微计算机信息》 上的论文 《基于局部区域阈 值的玻璃气泡的检测》 中采用了如下方法 : 首先求方差图像并二值化来确定气泡在图像中 所在的局部区域, 在该局部区域内, 可认为光照是均匀的, 然后运用局部区域阈值法保留较 亮的目标, 从而逐个提取出气泡。在 Peng 等人 2008 年发表在 International Journal of Advanced Manufacturing Technology(先进制造技术国际期刊) 上的 An online defects inspection method for float glass fabrication based on machine vision(一种 基于机器视觉的浮法玻璃制作过程的缺陷在线检测方法) 论文中采用了 OTSU 方法来实现 前景与背景分割。很少一部分研究者有进一步研究缺陷的类型。Han 等人 2009 年发表在 International Conference on Convergence and Hybrid Information Technology (收敛 与混合技术国际会议) 的论文 A study on enhanced algorithms for detecting defects of glasses(玻璃缺陷监测的增强方法研究) 中利用提取出来的缺陷的面积、 边界等信息来 研究缺陷的圆形度。 Hu 等人 2009 年发表在 International Conference on Computational Intelligence and Natural Computing(计算机智能与自然计算国际会议)的论文 An algorithm of glass image recognition based on wavelet packet decomposition(一 种基于小波包分解的玻璃图像识别算法) 中采用了小波包分解来实现对缺陷图像的二值 化, 再利用缺陷区域的面积, 长宽比, 灰度均值与方差, 圆形度等方法尝试给缺陷进行分类。 他们对 210 个样本 (其中 150 个用于学习) 进行实验, 最后的测试样本的准确率达到 93.3%。 该方法虽然可以实现对缺陷的检测与分类, 不过训练样本过少没法完全体现工业生产环境 的真实情况, 另外算法速度也不是非常令人满意。 发明内容本发明具体涉及一种从玻璃图像中提取目标区域并进行图像处理, 然后根据处理 后获得的特征信息将缺陷类型进行分类的方法。可应用于工业品表面缺陷检测与识别, 属 于模式识别中的分类问题。本发明的目的在于针对玻璃表面缺陷检测问题, 提出一种基于 图像处理的缺陷类型的快速判断方法。 该方法能在光照不均匀, 以及其他光源干扰 (如玻璃 气泡中形成的透镜) 等背景下获取的低分辨率缺陷图像进行特征分析, 从而判断缺陷的类 型。
为实现上述目的, 本发明首先提取相机 (线扫描) 给出的图片中的缺陷区域, 从而 获得目标的最小连通域。之后对目标区域进行二值化处理。按行按列扫描最小连通域, 统 计 9 类二值特征模式 (下文将介绍) 的数目。在此基础上判断缺陷的类型 (空心的为气泡, 实 心的为杂质) 。
根据本发明的一个方面, 提供一种基于机器视觉的玻璃缺陷的检测与分类方法, 其特征在于, 包括如下步骤 : 步骤一 : 对图像进行缺陷边缘检测以获得缺陷的边缘信息, 根据所述边缘信息确定目 标区域 ; 步骤二 : 对所述目标区域进行二值化处理 ; 步骤三 : 去除所述目标区域中的噪声点 ; 步骤四 : 根据某行灰度值跳变的次数来定义 9 类特征模式 ; 步骤五 : 提取二值特征序列直方图, 对于获得的所述目标区域的二值化图像逐行逐列 寻找所述 9 类特征模式, 统计所述 9 类特征模式在所述目标区域出现的频率从而完成目标 缺陷类型的判断。
优选地, 在所述步骤一中, 把将需要检测的玻璃利用摄像设备读入计算机, 利用边 缘检测获得缺陷的边缘信息, 将每个缺陷最左面的点与最右面的点的距离作为所述目标区 域的宽度, 将每个缺陷最上面的点与最下面的点的距离作为所述目标区域的高度。
优选地, 在所述步骤二中, 对每一个像素点 记录二值化后的灰度值信息, 其中 :求其局部灰度信息值, 并将其二值化, 用其中,为 (m,n) 像素的灰度值,为权值, 其中, 权值模板如下 :; 其中, 某像素点是否存在 W 特征的判断方法包括 : 先求下列四个特征值 :然后, 如果 WFV11、 WFV12、 WFV21、 WFV22 满足以下两个条件中的一个, 那么就判断该像 素点存在 W 特征 : 条件 1 :(WFV11>2 & WFV12>2) | (WFV21>2 & WFV22>2) 条件 2 :(WFV11>1 & WFV12>1) & (WFV21>1 & WFV22>1) 。
优选地, 在所述步骤三中, 对于每一个像素点, 如果, 计算如果
, 那么将的值调整为 1。优选地, 在所述步骤四与步骤五中, 对二值化后的目标区域的每一行提取二值特 征序列 L, 包括如下子步骤下 : 子步骤 1 : 令序列 L 第 1 个编码 L[1] 等于该行第一个像素的灰度值 b(i,1), 置 k=1, j=2 ; 子步骤 2 : 读取该行第 j 个像素灰度值 征序列 L[k+1]= b(i,j), 置 k:=k+1 ; 否则, 则置 , 若 b(i,j) 与 L[k] 不一致, 则更新二值特 , 进行所述子步骤 2 直到完成该行的二值特征序列的提取 ; 子步骤 3 : 根据该行的二值特征序列的长度, 更新相应的二值特征模式出现的次数。
本发明与现有技术相比的有点包括 : 具有算法简单、 运算速度快、 精确度高等优 点, 为工业产品表面缺陷检测提供了一种新的可靠的方法。 附图说明
图 1 为本发明方法流程图 ; 图 2 为图像二值化方法流程图 ; 图 3 为二值化结果示意图 ; 图 4 为初始灰度图像以及二值特征模式识别结果示意图。 具体实施方式
以下结合附图以及实施例对本发明的技术方案作进一步详细说明。 以下实施例在 以本发明技术方案为前提下进行实施, 给出了详细的实施方式和过程, 但本发明的保护范 围不限于下述的实施例。在本发明的一个实施例中, 所述方法的流程如图 1 所示, 本实施例具体实施步骤 如下 (优选地使用 C++ 语言编程) : 步骤一 : 提取图像中目标区域, 具体地, 对图像进行缺陷边缘检测获得缺陷的边缘信 息, 根据所述边缘信息确定目标区域 : 由于图像 (大小接近 25 像素 *25 像素) 中的缺陷区域 (视作前景, 大小接近 5 像素 *5 像 素) 与背景差异较大, 因此可以较容易获得缺陷区域。利用 Canny 边缘检测可以获得缺陷的 边缘信息。进一步可以获得最小连通域 (矩形) 。目标区域宽度和高度的提取 : 将每个缺陷 区域最左面的点与最右面的点的距离作为该缺陷的宽度, 将最上面的点与最下面的点的距 离作为该缺陷的高度。
步骤二 : 对所述目标区域进行二值化处理 : 具体流程如图 2 所示。 对每一个像素点 用 记录二值化后的灰度值信息, 其中 : 求其局部灰度信息值 , 并将其二值化,其中为 (m,n) 像素的灰度值,为权值。权值模板如下 :某像素点是否存在 W 特征的判断方法如下。先求下列四个特征值 :如果 WFV11、 WFV12、 WFV21、 WFV22 满足以下两个条件中的一个, 那么就判断该像素点存 在 W 特征。
条件 1 :(WFV11>2 & WFV12>2) | (WFV21>2 & WFV22>2) 条件 2 :(WFV11>1 & WFV12>1) & (WFV21>1 & WFV22>1) 本发明把目标区域中前景部分的像素值赋为 0, 把剩余区域的像素值赋为 1 , 得到目 标区域的二值化图像, 如图 3 所示。
步骤三 : 去除所述目标区域中的噪声点 :由于目标区域较小, 因此采用下述的方法去除噪声点。对于每一个像素点 , 计算, 如果如果
, 那么将的值调整为 1。步骤四 : 提取二值特征序列直方图 : 对二值化区域的每一行 (列) 提取二值特征序列 L, 其包括如下步骤 : 子步骤 1 : 序列 L 第 1 个编码等于该行第一个像素的灰度值, L[1]=b(i,1) 置 k=1;j=2 ; 子步骤 2 : 读取该行第 j 个像素灰度值 若 b(i,j) 与 L[k] 不一致, 更新二值特征序列 L[k+1]= b(i,j), 置 k:=k+1 ; 否则, 置
, 进行步骤 2 直到完成该行的二值特征序列的提取。子步骤 3 : 根据该行的二值特征序列的长度, 更新相应的二值特征模式的个数。如 某行的二值特征序列长度为 5, 则 [10101] 二值特征模式的个数增加 1。
完成对所有行所有列的二值特征序列提取后, 统计目标区域中这 9 类二值特征模 式的个数。图 3 左样本中, 共存在 3 个 [1] 模式, 7 个 [10101] 模式, 12 个 [101] 模式, 其他 模式个数均为 0 (该样本的特征向量为 (3, 0, 7, 12, 0, 0, 0, 0, 0) ) 。如第 3 类模式的灰度跳变 情况为黑白黑或者白黑白。
步骤五 : 根据二值特征序列直方图判断缺陷类型 : 我们通过机器学习分类算法 AdaBoost 对 1000 个样本的 9 维的特征向量进行训练, 得到如下合理的分类器 : 拥有一个以 上 [10101] 二值特征序列的目标为气泡缺陷。
实验结果表明利用本发明提出的特征直方图的分类方法的正确率为 93%。单样本 的平均运算时间为 0.5ms (程序运行环境为 OpenCV2.0 与 Microsoft 公司的 Visual Studio 2008) 。