项目总结

9 篇文章 1 订阅
5 篇文章 0 订阅

曾经做过的一个小项目,现在整理一下。牵扯到保密,这里的应用场景为虚构。
项目需求:从菏泽到天津的高速公路旁边装了一些消防栓等灭火设备(假设装了很多)消防设备每个月要找人去检修,耗费人力,所以就想在每个周都会从菏泽到天津跑的汽车上装个摄像头,跑一路,检测一路,从外观上看这个消防设备是否被熊孩子掀开盖等异常情况。
通过分析可知,面临的困难主要是:
1、汽车速度过快成像不清晰;(>=200km/h)
2、消防设备为多种,实时检测需要考虑算法速度;
3、检测出目标物缺陷后需要确定其地理位置。
根据需求分析,首先确定相机。速度>=200,所以选择了线阵相机这里写图片描述
后来装上才发现,线阵相机虽然有着种种好处,但是想让成像稳定,必须让速度和采样频率匹配,而汽车行驶过程中,颠簸,行驶速度不同,如果采样频率无法与之匹配,成像是畸形的。一般来讲,线阵相机要配合车轮传感器来用的。(在我之前的一篇博文中有讲行频与速度间的关系)
跟甲方沟通后,确定了车速一般会控制在100-130之间,我们换了面阵相机。

这次的相机依旧是大恒图像家的,在选择的相机的时候,要考虑的因素:
1、相机的安放位置、角度。这个主要是为了估算出镜头到被测物体间的实际距离,然后根据视野的要求,选择镜头的焦距。
2、根据火车的速度,以及视频存储时选择的压缩方式,选择相机的快门时间。这个快门时间的要求是相邻两次曝光所采集到的图像至少要包含彼此的一小部分,这是尽量将沿途的食物都采集到。(这么做是考虑到一旦实时检测失败,还能凶保存的视频中回放,以查看重点信息)。
3、检测所需视频清晰度以及存储空间的大小来选择相机的分辨率。所选择用的算法在那种级别的分辨率效果最好?人眼所能接受的可以分辨缺陷的分辨率是多少?从菏泽到济南要经历多久,视频采集后的存储容量是多大?(当时选择的服务器是**T级别的存储空间,所以要考虑的事情是怎么把视频拷贝出去,直接卸硬盘不失为一个好的办法,哈哈)
4、选择合适的方式确定设备位置。我们选择的是GPS提供经纬度信息的方式。
基于以上的考虑,最后选择了MER-131-75Gx(75fps@1280*1024)他的同步方式为外触发和软触发,有光耦隔离输入和输出,这样,使用频率信号触发的灯为其提供夜晚的照明服务就方便多了。

接下来就是采集图像了,装好相机后,专门跑出去一趟采集图像,拿到的图像去做研究,考虑到检测速度,太过复杂的算法是是不适用了,sift,surf,各种特征点特征匹配的方法在它身上用了个遍,最后发现,远不是自己想想的那么容易,也并不是论文中写的那么效果,各个算法各有利弊。最后,选择了一种最简单而有效的方法,模板匹配,多线程模板匹配,缩短了检测的时间。其实模板匹配的级精度是不高的,一般匹配后还要再进行特征匹配进一步确认匹配到的是否是设备,再去判断设备是否外观缺陷。而矛盾点在于,有缺陷,匹配程度就低,那么很难把有缺陷的设备认为是设备,而检测到的设备,匹配程度高的话,也很难确定是否有缺陷。这需要不停地去实验,也需要去寻找一种适合的方式,颜色、角点,能够利用的特征不要错过。另外,相机成像上下颠倒,左后颠倒,写程序时要注意一些,不过不要紧,写错了还是能看得出来的。

确定设备位置是我们采用的方式是直接串口一个GPS,实时读取经纬度的坐标GPS协议。这里需要注意的是,根据GPS协议,解析经纬度信息时,有一个专门的类。这个在之前的博文中有分析。虽然这方法简单粗暴,但是也暴露了一个问题,你给别人经纬度,难道还指望比人查着机经纬度去找你每帧图像对应哪儿地理位置吗?最后我们用了公里标。公里标对于专业人员来言是敏感的,你只需告诉他菏济高速122,他立刻知道那指的是哪里。顺着这条线,我们首先自绘了一副公里标的数据库,在这条高速上的每一个公里标对应的经纬度是不会变的,只需要做出对应关系,就能在下次通过匹配的方式找到对应的公里标信息。这个数据库的获得确是不容易的,历经磨难,自制公路图的过程简直是心累,不过好歹的,完成了。在位置匹配时需要注意经纬度坐标的转化,GPS给的坐标是54坐标或者WGS-84或者80坐标,但是在计算最短距离的时候,确实要计算大地坐标系中的直线距离。简单来讲,一个是平面的经纬度,一个是球状的求两点间的距离。另外,采取的搜索算法也很重要,需要考虑将来可能不只是跑济南菏泽,那么分线路查询的方法就显得很必要,这样可以减少全局搜索的次数,提高效率。

剩下的就是将高速线路和公里标写在每帧图像上了。opencv的库函数没能提供写汉字的功能,无奈只下,强看GUI,硬生生将汉字写上去。

VS打包时删除以下文件,可让打包更轻便:.svn .svn* \Debug \Debug* \Release \Release* \ipch \ipch* .ipch .opt .lastbuildstate .log .cdf .cache .obj .ilk .resources .tlb .tli .tlh .tmp .rsp .pgc .pgd .meta .tlog .res .pch .exp .idb .rep .xdc _manifest.rc .bsc .sbr .ncb .sdf .opensdf .suo .user *.aps

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值