用于巡检机器人的仪表检测和自动读数系统

       最近结合项目,研究了一下指针式仪表的自动读数算法,写了一套基于巡检机器人的指针式仪表检测和读数系统。简单总结记录一下。

1. 系统框架

       需求很简单,在场景中寻找标定好的仪表 → 定位 → 拉近焦距 → 读数。硬件方面不用我管,大概写了一个简单的框架图,开始动手。

用于巡检机器人的仪表检测和自动读数系统_第1张图片

2. 界面和操作

       用MFC写了一个标定界面,实现功能包括:

              1. 读取、保存图像和标定的模板;

              2. 简单地对图像进行一些基本的处理(如裁剪、划定区域、绘制辅助线、标定关键点等);

              3. 修改模板具体参数;

              4. 测试算法结果。

用于巡检机器人的仪表检测和自动读数系统_第2张图片


       基本都是MFC的基本的控件、opencv中图像读取、处理和保存操作,需要提一点,在绘制辅助线和选取区域时需要调用ondraw函数实时对界面进行刷新。有了界面之后算法测试心情都舒畅些~ 行了,开始写算法。

3. 算法

       现在这方面做的不多,据我知道也就鲁能科技再搞吧(不太确定)。不知道高手怎么做的,我的思路大概如下:

       首先是寻找仪表,很简单,一个cvMatchTemplate了事。

    然后是读数,这里我使用了SIFT+Homography对仪表表盘进行配准,使检测对样本和模板间光照,旋转和尺度变化具有较强鲁棒性。配准后使用hough变换检测目标中的直线,从长度、累计值、角度、对比度等方面设计函数,计算每条直线作为仪表指针的置信概率。得到概率最大的指针后,根据其到最小、最大值的相对角度计算其读数值。


用于巡检机器人的仪表检测和自动读数系统_第3张图片用于巡检机器人的仪表检测和自动读数系统_第4张图片用于巡检机器人的仪表检测和自动读数系统_第5张图片用于巡检机器人的仪表检测和自动读数系统_第6张图片

4. 总结

    这套东西原理很简单,实现起来也不难, 代码就不贴了,算法 效果还可以哈。机器人领域是下一个爆发点,很可能在计算机视觉领域会提出很多千奇百怪的需求。除基本的图像处理和检测技术外,个人判断移动环境下的入侵检测和基于kinect的导航算法会有较大范围应用。各位同学共勉~



你可能感兴趣的:(工程技术)