谈到智能制造、智慧工厂,愿景是美好的,借助计算机视觉技术和 AI 算法,为自动化生产线赋予环境感知的能力,从而改善工艺流程,提高生产效率。但是,随着柔性化生产的需求增长,产线的布局调整和功能扩展在所难免,这就要求设备供应商或使用者能够对 AI 算法进行持续性的维护、优化或移植,而现实是维护成本高、团队能力缺乏。
MATLAB 就像一位全能的搭档,提供了完备的文档和友好的交互式应用程序,即使是没有数据科学背景的领域工程师,也可以在一步步引导,快速完成“数据准备-AI 算法开发-系统部署”整个工作流程。
纸上得来终觉浅,让我们来具体看看,以上工作流在一个典型的工业应用场景——零件表面缺陷检测——中是如何实现的。
数据准备
摄像头采集的原始图像数据中,往往含有大量冗余信息。前处理的第一步,通常是将被检测的目标对象和背景(其他无关物体)分离开来,即提取感兴趣区域(Region Of Interest, ROI)。在这里,可以运用一个小技巧:选择一个与目标颜色对比差异足够大的背景,采用简单的图像处理方法,例如颜色空间变换、二值化处理等,就可以快速提取出目标,而不需要使用计算更复杂的 YOLO 等目标检测深度神经网络。
具体步骤如下:
1.将采集的单帧彩色 RGB 图像转换为更有利于进行图像分割的 HSV 颜色模型;
img1 = snapshot(webcam);
hsv1 = rgb2hsv(img1);
2.通过大津算法确定阈值,对图像进行二值化分割;
th = otsuthresh(imhist(hsv1(:,:,2)));
bw = hsv1(:,:,2) > th;
bw = bwareaopen(~bw,50);
3.分析区域特性,可确定边界框,再对原图进行相应的裁剪;
stats = regionprops('table',bw,'BoundingBox');
bbox = int16(stats.BoundingBox);
img2 = imcrop(img1,bbox);