社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

【深度学习】基于视觉的表面划伤检测方案

机器学习初学者 • 1 年前 • 278 次点击  

来源 | 机器视觉沙龙

在工业生产中总是经常遇到裂痕、划痕等产品的表面缺陷问题,机器视觉行业对于表面检测相比前几年已经有很大的突破,对于产品表面的划伤、污迹等检测已经不再是难点。

金属、玻璃、手机屏幕、液晶板等行业表面检测上应用广泛。
但由于该类缺陷形状不规则、深浅对比度低,而且往往会被产品表面的自然纹理或图案所干扰。因此,表面划痕缺陷检测对于正确打光、相机分辨率、被检测部件与工业相机的相对位置、复杂的机器视觉算法等要求非常高。
机器视觉划痕检测的基本分析过程分为两步:首先,确定检测产品表面是否有划痕,其次,在确定被分析图像上存在划痕之后,对划痕进行提取。
表面划痕通常可分为三大类:
第一类划痕:从外观上较易辨认,同时灰度变化跟周围区域对比也比较明显。可以选择较小的阈值精缺陷部分直接标记。
第二类划痕:部分灰度值变化并不明显,整幅图像灰度比较平均,划痕面积也比较小,只有几个像素点,灰度也只比周围图像稍低,很难分辨。
可以对原图像进行均值滤波,得到较平滑的图像,并与原图像相减,当其差的绝对值大于阈值时就将其置为目标,并对所有的目标进行标记,计算其面积,将面积过小的目标去掉,剩下的就标记为划痕。
第三类划痕:各部分灰度差异较大,形状通常呈长条形,如果在一幅图像上采取固定阈值分割,则标记的缺陷部分会小于实际部分。
由于这类图像的划痕狭长,单纯依靠灰度检测会将缺陷延伸部分漏掉。对于这类图像,根据其特点选择双阈值和缺陷形状特征相结合的方法。
由于在工业检测中图像的多样性,对于每一种图像,都要经过分析综合考虑各种手段来进行处理达到效果。
一般来说,划痕部分的灰度值和周围正常部分相比要暗,也就是划痕部分灰度值偏小;而且,大多都是在光滑表面,所以整幅图的灰度变化总体来说非常均匀,缺乏纹理特征。
因此,划痕的检测一般使用基于统计的灰度特征或者阈值分割的方法将划痕部分标出。
此外,表面划痕缺陷检测对于正确打光的要求也是极高。
机器视觉检测常用的检测打光方式有以下四种:
同轴光、低角度、背光和高角度,这四种打光对硬划伤检测效果明显,但对表面要求较高的产品,比如软划伤的效果却较为不明显。
根据大数据分析显示,针对产品表面划伤,主要提出低角度高角度两种解决方案。

低角度方式

两个物体接触摩擦,就很容易造成表面划伤了,也就意味着划伤是有方向性的。
在考虑低角度打光效果时,如果我们采用平行光线照射(平行于划伤),划伤会被光线虚化,效果在图像中不明显。
如果我们采用一组垂直于光线照射(垂直于划伤),划伤会被光线凸显,效果在图像中非常明显。
从以上分析,我们采用八个条形光源分时曝光工件,设计出以下打光方案。
一个环形光源,分成八路控制,分时曝光,连续采集八次,最后软件采用算法,叠加所有缺陷,最终以高标准检测工件表面划伤有无。
此成像方案适用于表面检测要求比较高的高精密产品,而对效率要求不苛刻的产品。
高角度方式
根据经验,软划伤在同轴光效果下,光源工作距离越高,效果越明显。
然而同一光源,光源工作距离高的同时,光源发光面越小,光源亮度也随之减弱,效果与实际情况不可兼得。
很多时候,我们的产线员工在目测产品表面信息时,都是采用日光灯照明方式,日光灯通过镜面反射入射到眼睛里。
针对镜面反光的工件,依据光的反射定律,采用打光方式,形成镜面反射效果。
观察仔细的人就会发现,肉眼检测方式往往是让日光灯投影在产品里面,然后通过摆动产品使得日光灯的影子在产品里面移动。
如此,光斑照明产品的局部,从而反射出产品表面的信息,使得人眼能够清晰的判断出产品是否有缺陷,以及微弱的缺陷也能轻易看到。

本文仅做学术分享,如有侵权,请联系删文。




    
往期精彩回顾





Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/160580
 
278 次点击