目录
传统算法处理裂缝的基本思路:
第一种思路
1.先转换彩色图为灰度图
2.进行自适应局部阈值化,目的是为了减少光照与阴影对阈值的影响
3.进行膨胀操作,尽量放大凸显裂缝,在用中值滤波平滑一下,去除一些高频噪声
4.进行腐蚀操作,让轮廓枝干化,减少类似裂缝物体的干扰。
5.测量裂缝宽和高
代码见:https://blog.csdn.net/freedom098/article/details/52774911/
第二种思路:
基于机器视觉的裂纹检测与跟踪
1.针对白亮的图像,先结合原色先验理论和去雾技术,增强裂纹特征,并对增强后的裂纹特征进行边缘提取,分析比较亚像素边缘检测。
https://blog.csdn.net/qq_16481211/article/details/79963651
第三种思路
形态学梯度(形态学边缘提取)
https://blog.csdn.net/wenhao_ir/article/details/51888042
CPP代码
1.标裂缝长宽–裂缝的检测与测量
处理流程如下:
图像灰度化
增加对比度
Canny边缘检测
用形态学连接临近裂缝
找出所有连通域,删除非裂缝噪点区域
对每个连通域提取骨架,测量长度和宽度
https://blog.csdn.net/m0_37350758/article/details/89413655
2.处理简单裂缝:
https://blog.csdn.net/qq_16481211/article/details/79963651
3.找轮廓并画缺陷
https://blog.csdn.net/hechaoqi09/article/details/84862938
4.sobel算子与scharr算子
canny算子不保证边缘连续,而且无法给出直线划分,但却给我们一个分析问题的方向。以下思路是在canny算子的基础上进行的。对于比较直,但长度粗细不定,有些地方非常微弱,断断续续的直线,可能是个好方向,此处记录一下。
https://blog.csdn.net/weixin_34068198/article/details/91306309
5.基于OpenCv的金属表面划痕检测
https://blog.csdn.net/guoruijiushiwo/article/details/77412617
6.圆环零件检测,划痕检测
https://blog.csdn.net/weixin_44076038/article/details/87723386
7.凹点检测研究
https://blog.csdn.net/u014003644/article/details/80288830
halcon代码
1…缺陷检测之高纹理图像检测
https://blog.csdn.net/y363703390/article/details/82424988
2.缺陷检测之划伤检测
https://blog.csdn.net/y363703390/article/details/82454045
3.处理金属表面凹坑
https://blog.csdn.net/Bamboo265925/article/details/85252042
python代码
1.寻找相似的灰度值来找到可能存在的裂缝
https://blog.csdn.net/cywtiancai/article/details/80601407
2.python处理缺陷图像,返回缺陷面积
https://blog.csdn.net/qq_19656669/article/details/79963347
3.圆口缺陷检测,通过面积的差别判断圆口是否是规范圆
https://blog.csdn.net/renegade_m/article/details/82292313
Matlab代码
1.对钢板表面缺陷检测:几何校正、分割、填充红色、计算面积
https://blog.csdn.net/qq_41385719/article/details/80273946
深度学习缺陷检测
1.结合GAN生成多样性裂缝,提高数据多样性和均衡性
https://blog.csdn.net/c2a2o2/article/details/85111283
2.SSD深度学习模型对工件裂纹进行检测
https://blog.csdn.net/qq_29462849/article/details/83472430
3.基于yolov3的铁轨缺陷/裂纹检测
https://blog.csdn.net/qq_29462849/article/details/84772263
4.tiny YOLO v3做缺陷检测实战
https://blog.csdn.net/qq_27871973/article/details/85009026
5.手机屏缺陷检测《Scale insensitive and focus driven mobile screen defect detection in industry》
https://blog.csdn.net/qq_27871973/article/details/83345023
细节和技巧:
1).将放缩后的不同尺寸的图像输入AlexNet网络,看各个网络层的feature map激活情况
2).最后作者将一个原始图像分成多个模块进行特征提取,然后将提取的特征输入RNN网络进行判别
3).作者在实验中,使用了简单的数据扩充方法对样本进行扩充。不过对于显示屏检测这个领域有些缺陷很明显,有的缺陷真的是肉眼都难以分辨,通过微妙的色调变换,就构成了缺陷.
6.深度学习实现工业零件的缺陷检测
https://blog.csdn.net/qq_29462849/article/details/82662928
细节和技巧:
1).对工业缺陷零件来说,由于特征不是太明显,往往只是一小块,在选择网络的时候,要考虑把浅层特征和深度特征进行融合,这样的话就不会造成主要特征丢失。关于网络,推荐使用ResNet、DenseNet、InceptionResNetV2这些,经过自己的测试,DenseNet效果要更好些,深度在22层左右。
2).可以选取不同的数据(数据最好不要完全相同)训练几个不同的模型,比如训练出三个模型分别对应:ResNet、DenseNet、InceptionResNetV2。训练完成后,把这三个模型的全连接层去掉,只用这三个模型的卷积层进行特征提取,然后把提取的特征进行拼接,可以在channel方向上(此时要求feature map的w和h必须相同),也可以在对应位置上进行特征相加(点加)。然后把这些特征进行汇总,重新建立三个网络,每个网络模型分别对应训练好的三个模型,提取训练好模型的参数,赋给新的模型,然后建立全连接层,这个时候只有一个全连接层。在训练的时候,新的网络只用来做特征提取,卷积层的参数不做训练,把这些网络参数冻结,只更新全连接层。
3).对于2中的特征融合,还有一种方法就是:用三个训练好的模型进行特征提取,然后建立一个mlp多层感知机类型的网络。训练好的模型去掉全连接层,只保存卷积层,做特征提取,并把产生的特征进行拼接,训练时只对全连接层进行更新。
如果整个场景图像特别大,缺陷特征比较局部化,对图像进行卷积操作后,特征基本上不存在,这时可以考虑把场景图像进行切分,比如一个场景图像被切分成四份,可以横向切分,也可以纵向切分。然后需要自己去做数据,赋以标签。在做数据上可能要花点时间,不过效果还不错。在预测的时候,只要场景图像的四个子图像有一个是缺陷图像,就认为其是缺陷图像。这在一定程度上避免了特征过于局部化。
4).Focal Loss:用来解决数据不均衡问题。
裂缝检测文献
1.kmeans筛选裂缝,然后膨胀,腐蚀,把裂缝轮廓清晰化
http://www.doc88.com/p-7377816204970.html