[图像处理] 铁路轨道道岔检测(二)
一直没有时间把轨道检测当前的进展做个记录或者总结, 疲于近期的忙碌, 工作上的还有生活上的, 近两个月来几乎都是半夜才睡, 身体真有点扛不住了, 码工们要注意身体啊.
也不完全按照开发顺序总结了, 现阶段完成了铁路主轨道检测, 道岔区域检测和道岔连通性的检测. 使用合适场景的图片测试检测道岔连通性, 正常行驶方向正确率在80%, 掉车情况的道岔检测约50%.
整体检测流程还是在第一篇<http://www.cnblogs.com/virqin/archive/2012/04/03/2431540.html>中写的, 后期主要在提高主轨道从背景中分离,道岔区域连通性检测.
主轨道和背景分离现在使用改良后的阈值分割算法, 通过统计图像灰度直方图得出初始阈值, 然后根据初始阈值在灰度直方图范围做迭代计算新的阈值.最后在迭代后的阈值基础上做了一次微调, 针对背景相对简单的图片还可以,但如果轨道和背景灰度差不多就不行了.
道岔连通性检测, 主要是判断出当前轨道的通断. 现在使用的是在主轨道区域从下向上检测道岔区域, 将道岔区域的黑白边界跳变满足条件的送入道岔统计流程, 统计流程会将横向有一定的重合度且纵向相邻的待检道岔区域合并, 统计结束后会输出道岔链表, 然后再统计每一个区域内道岔的特征, 如果满足道岔的特征则认为定位到了.
然后生成待检连通区域链表, 道岔都是成对安装, 如果两边都检测到道岔,并且高度上基本重合, 横向在主轨道区域范围内则认为是一个待检连通区域, 最后判断连通区域链表中的道岔的开向就能判断出轨道的连通性, 基本原则为主轨道线是一直连通的.
现阶段检测效果:
连通检测:
掉车检测:
下面要实现连续检测, 即在火车行驶过程中将相邻帧检测道岔的结果做综合判断处理, 因为火车会拐弯, 所以需要动态调整检测区的区域.
调整预测区步骤:
1.统计相邻3帧的主轨道区域[分左右]
2.统计相邻3帧的道岔区域[分左右]
3. 如果检测到轨道明显向左或向右偏移则将检测区向相应方向调整, 如果主轨道区域没有太大变化则使用初始检测区, 另外如果检测到的道岔区域不在左右主轨道确定的范围则需要将检测区调整为包含下一帧道岔可能出现的位置.
检测函数写完了还没有来及测试, 说一些想法, 最近阅读过模式识别相关资料, 我想轨道的检测应该可以使用模式识别来做一个决策, 轨道道岔的组成固定, 就有约12中情况, 通过采集样本对道岔作训练学习,然后进行识别. 有可能出问题的是不同场景下道岔的张度是不同的, 所以样本训练就不像车牌识别中字符规整或者人脸识别中人脸特征只是存在缩放问题, 因为张度不同有一部分为放大,但有一部分可以理解为扭曲...., 这个暂时积攒着吧, 等此项目稳定了再考虑试验.