1.一种列车车底螺栓的图像识别检测方法,其特征在于,包括以下步骤:
步骤1:使用labeimg工具打标签并进行图像增强操作,使用yolo‑v4进行螺栓目标模型训练;
步骤2:对拍回的图像进行螺栓的目标识别,截取螺栓,使用cv2.resize统一螺栓图像大小宽为800,高为600,即总像素点为480000;
步骤3:对螺栓图像进行滤波处理,使用opencv2中的cv2.bilateralFilter双边滤波函数进行预处理,其中过滤过程中每个像素邻域的直径设置为7,颜色空间滤波器的sigma值设置为135,sigmaSpace坐标空间中滤波器的sigma值设置为135;
步骤4:使用cv2.cvtColor函数将图像从RGB空间转为HSV空间;
步骤5:通过设置螺栓防松线的阈值来将HSV图像转为二值图,阈值的选取从事先储存的阈值库中选取,选择库中的第一组阈值,使用cv2.inRange函数提取出螺栓防松线;
步骤6:进行图像形态学操作,即对图像进行膨胀和腐蚀操作,首先使用OpenCV2中cv2.getStructuringElement函数创建卷积核,设置卷积类型为矩形,大小设置为(15,15);
使用cv2.dilate进行膨胀操作,消去提取出的图形中的空洞,再使用cv2.erode进行腐蚀操作,保持图像原本的形态与大小;
步骤7:二值图边缘检测,使用cv2.findContours函数提取出边缘数据;
步骤8:迭代上一步提取出的边缘数据绘制最小外接圆,提取出最小外接圆圆心及半径参数,设置最小外接圆的面积,若圆面积超出阈值,则停止绘制当前图形,接着下一边缘迭代;
步骤9:绘制最小外接圆后,在圆的基础上绘制最小外接矩形,若图像中矩形只有一个,需要进行进一步的判断,保留结果为“OK”不进行输出,并保存此圆的面积,继续向下一组阈值迭代;
步骤10:若图像中有两个及以上的矩形,则提取对应外接圆的圆心及半径数据,计算两圆圆心的距离,设置阈值为两圆的半径之和的k倍,若距离超过设定值,则认为此组颜色阈值不符合要求,向下一组颜色阈值迭代;若距离未超出设定值,则继续进行后续检测;
步骤11:在得到的矩形参数中进行迭代,将矩形的角度数据进行两两相比,若出现两矩形角度出现偏差,此时保留结果为“BAD”先不进行输出,进行下一组颜色阈值的迭代;若两两之间的矩形角度无偏差,则认为该螺栓可能无松动现象,保留结果为“OK”;
步骤12:在最后一组颜色阈值迭代完成后,生成一个储存着所有可能结果和对应情况中圆的面积字典;对该字典进行迭代,若字典中存在“OK”,则提出“OK”对应的面积参数,与其余面积参数进行两两相比,若该“OK”对应的面积远小于其他面积超过n次,则认为该“OK”为无效数据,将该“OK”数据删除;若次数小于n,则最终输出未松动结果;经过迭代筛选,若字典中仍存在“OK”,则最终输出未松动结果;若字典中只剩下“BAD”,则最终输出松动结果。
2.根据权利要求1所述的一种列车车底螺栓的图像识别检测方法,其特征在于,所述阈值k设置为2;阈值n设置为3。