1.一种对开式刀闸状态的实时检测方法,其特征在于,包括:采集对开式刀闸的实时监控视频,获取视频的每帧图像并根据任一帧图像建立该型号刀闸臂的边界线模型并保存为模型文件,且根据模型文件计算刀闸臂的中点和中线;
通过多种途径获取对开式刀闸的样本图像,利用深度学习对样本图像进行训练获取训练模型,利用训练模型对视频的第一帧图像进行检测,获取第一帧图像中所有的刀闸区域和刀闸状态,结合模型文件对第一帧图像中的刀闸进行定位;
根据上述定位的结果对视频的第一帧图像进行边缘检测,获取边缘线集合,计算第一帧图像中刀闸臂的左中点和右中点到边缘线集合中的每条边缘线的距离,将不在阈值范围内的距离所对应的边缘线剔除,获取更新边缘线集合;
利用中线将更新边缘线集合左右区分,分别获取左刀闸臂边缘线集合和右刀闸臂边缘线集合并进行对称配对,确定最终的左刀闸臂边缘线和右刀闸臂边缘线,计算左刀闸臂和右刀闸臂之间的初始夹角,判断第一帧图像中刀闸的实时状态;
同样的方式处理第二帧图像,获取第二帧图像中左刀闸臂和右刀闸臂之间的初始夹角,根据中线估算系统误差,确定第二帧图像中左刀闸臂和右刀闸臂之间的校正夹角,根据校正夹角判断第二帧图像中刀闸的实时状态;
与处理第二帧图像相同的方式依次处理下一帧图像,直至检测到刀闸停止运动,验证视频中刀闸运动的最终状态。
2.根据权利要求1所述的对开式刀闸状态的实时检测方法,其特征在于,利用中线将更新边缘线集合左右区分,分别获取左刀闸臂边缘线集合和右刀闸臂边缘线集合后,将左刀闸臂边缘线集合和右刀闸臂边缘线集合进行权重分配,将权重分配后的左刀闸臂边缘线集合和右刀闸臂边缘线集合进行对称配对。
3.根据权利要求1所述的对开式刀闸状态的实时检测方法,其特征在于,利用训练模型对视频的第一帧图像进行检测,获取第一帧图像中所有的刀闸区域和刀闸状态,结合模型文件对第一帧图像中的刀闸进行定位的具体方式为:利用训练模型对第一帧图像进行检测,获取第一帧图像中的所有刀闸区域及每个刀闸区域对应的刀闸状态,“闭合”和“虚合”状态的刀闸对应的所在区域为包含左右刀闸臂的整体矩形框区域,“打开”状态的刀闸对应的所在区域为包含左刀闸臂的左矩形框区域和包含右刀闸臂的右矩形框区域;对于“闭合”和“虚合”状态的刀闸同时获取其左右刀闸臂的接触点位置矩形框;
根据模型文件获取闭合状态的刀闸的闭合四边形框区域,计算上述第一帧图像中整体矩形框区域、左矩形框区域、右矩形框区域分别与闭合四边形框区域的重叠面积;遍历第一帧图像中所有“闭合”和“虚合”状态的刀闸所在的区域,给定重叠面积阈值,获取包含左中点和右中点且重叠面积最大并大于重叠面积阈值的区域为最终的左右刀闸臂整体区域,同时计算左右刀闸臂的接触点位置矩形框的中心点并将其记为接触点,以过接触点且与该左右刀闸臂整体区域矩形框短边平行的中心直线为界限,左侧矩形框为左刀闸臂矩形框,右侧矩形框为右刀闸臂矩形框,实现对第一帧图像中“闭合”或“虚合”状态的刀闸定位;
若不存在上述包含左中点和右中点且重叠面积最大并大于重叠面积阈值的区域,则表明第一帧图像中待检测的刀闸的状态不是“闭合”或“虚合”状态,遍历第一帧图像中所有“打开”状态且重叠面积大于重叠面积阈值的刀闸所在的区域,获取包含左中点且重叠面积最大的区域记作第一打开左刀闸臂区域;获取包含右中点且重叠面积最大的区域记作第一打开右刀闸臂区域;遍历第一帧图像中所有“打开”状态且重叠面积小于等于重叠面积阈值的刀闸所在的区域,获取前两个包含左中点且重叠面积最大的区域记为左刀闸臂匹配区域;获取前两个包含右中点且重叠面积最大的区域记为右刀闸臂匹配区域;
计算任一个左刀闸臂匹配区域的4个顶点到左中点的距离并选取左侧最小距离,相比两个左侧最小距离并将较小的左侧最小距离对应的左刀闸臂匹配区域记为第二打开左刀闸臂区域;计算任一个右刀闸臂匹配区域的4个顶点到右中点的距离并选取右侧最小距离,相比两个右侧最小距离并将较小的右侧最小距离对应的右刀闸臂匹配区域记为第二打开右刀闸臂区域;
给定刀闸臂面积阈值,大于刀闸臂面积阈值的第一打开左刀闸臂区域记为最终左刀闸臂区域,否则大于刀闸臂面积阈值的第二打开左刀闸臂区域记为最终左刀闸臂区域;大于刀闸臂面积阈值的第一打开右刀闸臂区域记为最终右刀闸臂区域,否则大于刀闸臂面积阈值的第二打开右刀闸臂区域记为最终右刀闸臂区域,实现对第一帧图像中“打开”状态的刀闸定位。
4.根据权利要求1所述的对开式刀闸状态的实时检测方法,其特征在于,计算左刀闸臂和右刀闸臂之间的初始夹角的具体方式为:以最终的左刀闸臂边缘线和右刀闸臂边缘线作为基准,若最终的左刀闸臂边缘线相对于闭合状态刀闸臂所在直线的角度为,最终的右刀闸臂边缘线相对于闭合状态刀闸臂所在直线的角度为,最终的左刀闸臂边缘线和右刀闸臂边缘线间的夹角为,左刀闸臂和右刀闸臂之间的初始夹角为,第一帧图像中左刀闸臂和右刀闸臂之间的初始夹角为左刀闸臂和右刀闸臂之间的夹角。
5.根据权利要求4所述的对开式刀闸状态的实时检测方法,其特征在于,根据中线估算系统误差,确定第二帧图像中左刀闸臂和右刀闸臂之间的校正夹角的具体方式为:计算实时视频中当前帧图像和前一帧图像中的最终的左刀闸臂边缘线和右刀闸臂边缘线分别与闭合状态刀闸臂所在直线的夹角,设定当前帧图像中最终的左刀闸臂边缘线与闭合状态刀闸臂所在直线的夹角为,最终的右刀闸臂边缘线与闭合状态刀闸臂所在直线的夹角为,前一帧图像中最终的左刀闸臂边缘线与闭合状态刀闸臂所在直线的夹角为,最终的右刀闸臂边缘线与闭合状态刀闸臂所在直线的夹角为,将系统误差记为;结合系统误差,确定当前帧左刀闸臂和右刀闸臂间的校正夹角为,该校正夹角为第二帧图像中左刀闸臂和右刀闸臂间的夹角。
6.根据权利要求1所述的对开式刀闸状态的实时检测方法,其特征在于,判断第一帧图像中刀闸的实时状态的具体方式为:
根据用户需求给出对开式刀闸“打开”和“闭合”状态的两个角度阈值T-o和T-c;
若左刀闸臂和右刀闸臂之间的夹角大于T-o,判定第一帧图像中的刀闸是打开状态,若左刀闸臂和右刀闸臂之间的实际夹角小于T-c,判定第一帧图像中的刀闸是闭合状态,若左刀闸臂和右刀闸臂之间的实际夹角介于T-o和T-c之间,判定第一帧图像中的刀闸是虚合状态。
7.根据权利要求1所述的对开式刀闸状态的实时检测方法,其特征在于,根据校正交角判断第二帧图像中刀闸的实时状态的具体方式为:
根据用户需求给出对开式刀闸“打开”和“闭合”状态的两个角度阈值T-o和T-c,设定打开状态的角度高阈值hT-o和角度低阈值lT-o,T-o介于角度高阈值hT-o和角度低阈值lT-o之间,hT-o>T-o>lT-o;设定闭合状态的角度高阈值hT-c和角度低阈值lT-c,T-c介于角度高阈值hT-c和角度低阈值lT-c之间,hT-c>T-c>lT-c,且lT-o>hT-c;
若左刀闸臂和右刀闸臂之间的校正夹角大于hT-o,判定第二帧图像中的刀闸是打开状态,若左刀闸臂和右刀闸臂之间的校正夹角小于lT-c,判定第二帧图像中的刀闸是闭合状态,若左刀闸臂和右刀闸臂之间的校正夹角介于hT-c和lT-o之间,判定第二帧图像中的刀闸是虚合状态;若左刀闸臂和右刀闸臂之间的校正夹角介于lT-o和hT-o之间或介于lT-c和hT-c之间,判定第二帧图像中的刀闸状态与前一帧图像中刀闸的状态相同。
8.根据权利要求1所述的对开式刀闸状态的实时检测方法,其特征在于,获取每一帧图像中的刀闸的实时状态,直至检测到刀闸停止运动,验证视频中刀闸运动的最终状态的具体方式为:判断每一帧图像中刀闸的实时状态后将其记录;给定连续帧数阈值,若连续帧图像中的刀闸状态保持不变,且连续帧数大于连续帧数阈值,表明刀闸停止运动,维持同一个状态,此时停止检测,验证最终状态;
第一帧图像中的刀闸的状态为刀闸的初始状态,若刀闸的初始状态是打开状态,验证最终状态时是闭合状态则操作完成,验证最终状态时是虚合状态,则报警提示并请示工作人员人工确认和处理;若刀闸的初始状态是闭合状态,验证最终状态时是打开状态则操作完成,验证最终状态时是虚合状态,则报警提示并请示工作人员人工确认和处理;若刀闸的初始状态是虚合状态,验证最终状态时为闭合或打开状态则操作完成,验证最终状态时是虚合状态,则报警提示并请示工作人员人工确认和处理。
9.根据权利要求2所述的对开式刀闸状态的实时检测方法,其特征在于,对于左刀闸臂边缘线集合分配权重的方式为:遍历左刀闸臂边缘线集合中的所有边缘线,计算每条左刀闸臂边缘线角度并根据其对左刀闸臂边缘进行分类,给定高角度阈值和低角度阈值,将左刀闸臂边缘线角度大于高角度阈值对应的左刀闸臂边缘线设定为垂直边缘线,将左刀闸臂边缘线角度小于低角度阈值对应的左刀闸臂边缘线设定为水平边缘线,将左刀闸臂边缘线角度介于低角度阈值和高角度阈值之间对应的左刀闸臂边缘线设定为倾斜边缘线;
对左刀闸臂的所有垂直边缘线,设定左刀闸臂左中点的x坐标值L_x,在左刀闸臂左中点的左右两侧分别寻找两个与L_x相差最小的x坐标所对应的边缘点,左侧两个边缘点的x坐标值记作L_x1和L_x2,L_x 1大于L_x2;右侧两个边缘点的x坐标值记作R_x1和R_x2,R_x
1大于R_x2;
对左刀闸臂的所有水平边缘线,设定左刀闸臂左中点的y坐标值为L_y,在左刀闸臂左中点的上下两侧分别寻找两个与L_y相差最小的y坐标所对应的边缘点,上侧两个边缘点的y坐标值记作T_y1和T_y2,T_y1大于T_y2;下侧两个边缘点的y坐标值记作B_y1和B_y2,B_y1大于B_y2;
对左刀闸臂的所有倾斜边缘线,设定左刀闸臂左中点的x坐标值和y坐标值为L_xx和L_yy,在左刀闸臂左中点的左上侧和右下侧分别寻找两个与L_xx相差最小的x坐标对应的边缘点,与L_yy相差最小的y坐标对应的边缘点,左上侧两个边缘点的x坐标值记作L_xx1和L_xx2,L_xx1大于_xx2, y坐标值记作T_yy1和T_yy2,T_yy1大于T_yy2;右下侧两个边缘点的x坐标值记作R_xx1和R_xx2,R_xx1大于R_xx2,y坐标值记作B_yy1和B_yy2,B_yy1大于B_yy2;
获取每条垂直边缘线的权重的方式为:遍历位于左刀闸臂左中点左侧的每条垂直边缘线上的每个边缘点,该边缘点的x坐标值大于等于L_x1时其贡献权值为Value_W,该边缘点的 x坐标值大于等于L_x2小于L_x1时其贡献权值为Value_W/2,否则该边缘点贡献权值为
0;遍历位于左刀闸臂左中点右侧的每条垂直边缘线上的每个边缘点,该边缘点的x坐标值小于等于L_x2时其贡献权值为Value_W,该边缘点的x坐标值大于L_x2小于等于L_x1时其贡献权值为Value_W/2,否则该边缘点贡献权值为0,所有边缘点的贡献权值的总和为当前垂直边缘线的权重;
获取每条水平边缘线的权重的方式为:遍历位于左刀闸臂左中点上侧的每条水平边缘线上的每个边缘点,该边缘点的y坐标值大于等于T_y1时其贡献权值为Value_W,该边缘点的y坐标值大于等于T_y2小于T_y1时其贡献权值为Value_W/2,否则该边缘点的贡献权值为
0;遍历位于左刀闸臂左中点下侧的每条水平边缘线上的每个边缘点,该边缘点的y坐标值小于等于B_y2时其贡献权值为Value_W,该边缘点y坐标值大于B_y2小于等于B_y1时其贡献权值为Value_W/2,否则该边缘点的贡献权值为0,所有边缘点的贡献权值的总和为当前水平边缘线的权重;
获取每条倾斜边缘线的权重的方式为:遍历位于左刀闸臂左中点左上侧的每条倾斜边缘线上的每个边缘点,该边缘点的x坐标值大于等于L_xx1时其贡献权值为Value_W,该边缘点的x坐标值大于等于L_xx2小于L_xx1时其贡献权值为Value_W/2,否则该边缘点的贡献权值为0,该边缘点的y坐标值大于等于T_yy1时其贡献权值为Value_W,该边缘点的y坐标值大于等于T_yy2小于T_yy1时其贡献权值为Value_W/2,否则该边缘点的贡献权值为0;遍历位于左刀闸臂左中点右下侧的每条倾斜边缘线上的每个边缘点,该边缘点的x坐标值小于等于L_xx2时其贡献权值为Value_W,该边缘点的x坐标值大于L_xx2小于等于L_xx1时其贡献权值为Value_W/2,否则该边缘点的贡献权值为0,该边缘点的y坐标值小于等于B_yy2时其贡献权值为Value_W,该边缘点的y坐标值大于B_yy2小于等于B_yy1时其贡献权值为Value_W/2,否则该边缘点的贡献权值为0,所有边缘点的贡献权值的总和为当前倾斜边缘线的权重;
对于右刀闸臂边缘线集合分配权重的方式和左刀闸臂边缘线集合分配权重的方式一样。