缺陷检测方法总结

常用的论文和代码查询网站(按论文的方向进行了分类,并按测试开源数据集进行排序)

将 ArXiv 上的最新机器学习论文与 Github 上的代码(TensorFlow/PyTorch/MXNet/等)对应起来。 链接: https://paperswithcode.com

这个网站主要是解决另一个问题–寻找一个领域目前最好的(State of the art, Sota)算法的论文以及实现代码。链接: https://paperswithcode.com/sota

使用halcon实现常用缺陷检测方法的总结与demo实现

工业缺陷基本归类:
		加法:脏污、异物、附着、
		减法:残缺、划痕、破损
		替换:混色、异色、杂质、混淆
		变形:扭曲、尺寸、褶皱

视觉检测工程师的一般步骤:
在这里插入图片描述

方案1: 直接阈值分割+形态学处理+blob分析方法

方案2:边缘检测+形态学处理+blob分析方法

方案3: 滤波算法+差分+图像增强方法(如直方图均衡处理)+阈值分割+blob分析

方案4: 傅里叶变换实现高通/低通滤波 + 傅里叶反变换 + 差分处理/阈值分割处理 + blob分析/形态学处理

方案5: 光度立体法 + 阈值分割 + blob分析 /形态学处理

方案6:距离变换+分水岭算法 + blob分析/形态学处理

方案7:基于模板匹配的方法+ 图像差分 + 阈值分割 + blob分析/形态学处理

方案8: 基于Anomaly的深度学习方法

方案9: 深度学习目标检测方法

方案10:深度学习图像分割方法

最终的总结:相关的一些算子

  • cooc_feature_image (Basins, ImageMedian, 6, 0, Energy, Correlation, Homogeneity, Contrast)计算图像的共生矩阵,并导出起灰度值。
  • select_mask_obj (Basins, Defects, Mask)根据掩码去选择区域
  • gen_arrow_contour_xld (ArrowContour, PointE[0], PointE[1], PointO[0], PointO[1] + 50, 20, 20) 生成箭头轮廓。
  • channels_to_image (Images, MultichannelImage) 将多个图像转换为多通道图像。
  • access_channel (MultichannelImage, Image, Index) 访问指定的图像通道数。
  • invert_image (Image, ImageInverted) 图像灰度值翻转。
  • close_edges(Edges, EdgeImage : RegionResult : MinAmplitude : ) 使用边缘振幅图像关闭边缘间隙。
  • union1(Region : RegionUnion : : ) 计算所有输入区域的并集。
  • complement(Region : RegionComplement : : ) 输出区域的补码区域。
  • get_contour_xld (SelectedEdge, Rows, Cols) 获取轮廓的坐标。
  • union_adjacent_contours_xld (SelectedContours2, UnionContours2, 30, 1, ‘attr_keep’) 联合哪些轮廓相近的轮廓为一个轮廓
  • edges_sub_pix (ImageReduced, Edges, ‘canny’, 1.5, 30, 40) 亚像素边缘检测。
  • threshold_sub_pix (ImageReduced1, Border1, 70) 以灰度值大于Threshold区域和灰度值小于Threshold的区域为分界点提取亚像素精密轮廓 。
  • lines_gauss(Image : Lines : Sigma, Low, High, LightDark, ExtractWidth, LineModel, CompleteJunctions : ) 提取图像中的直线或曲线以及检测其宽度,主要用于找划痕找线等。
  • union_cocircular_contours_xld(Contours : UnionContours : MaxArcAngleDiff, MaxArcOverlap, MaxTangentAngle, MaxDist, MaxRadiusDiff, MaxCenterDist, MergeSmallContours, Iterations : ) 合并联合在一起的。
  • scale_image_max(Image : ImageScaleMax : : ) 将灰度值缩放至0到255.

缺陷方法总结补充:

  • blob分析+特征
  • 模板匹配(定位)+差分
  • 光度立体发
  • 特征训练
  • 测量拟合
  • 频域+空间域
  • 深度学习

特征训练

在纹理中找瑕疵。基于高斯混合模型(GMM)分类器的纹理检查模型,适用于图像金字塔,可以分析纹理的多个频率范围。
要求训练样本必须完美无瑕疵。
整体步骤:

创建模型create_texture_inspection_model或读取模型read_texture_inspection_model
添加训练样本add_texture_inspection_model_image
查看样本get_texture_inspection_model_image
训练模型train_texture_inspection_model
每层金字塔都会训练一个GMM模型,并确定该层的’novelty_threshold’(区分有无瑕疵的阈值)。

参数获取:get_texture_inspection_model_param

参数设定:set_texture_inspection_model_param

参数分析:‘patch_normalization’:'weber’对亮度鲁棒,‘none’需要亮度作为评判(默认)

              'patch_rotational_robustness':'true'对旋转鲁棒,'false'需要旋转作为评判(默认)

              'levels':设置具体的金字塔层参与训练,纹理越粗糙,则较低的金字塔层级越可省略。默认auto。

              'sensitivity':灵敏度,影响'novelty_threshold'的计算结果。负值会导致更高的阈值,从而更少的发现缺陷。默认0。

               'novelty_threshold',阈值,自动计算得到,若结果不理想,可以手动微调。

进行检测apply_texture_inspection_model
模型保存与释放write_texture_inspection_model
若模型不再需要,则释放clear_texture_inspection_model

  • halcon案例分析(apply_texture_inspection_model.hdev)

猜你喜欢

转载自blog.csdn.net/xiaochuideai/article/details/130027661