用于巡检机器人的仪表检测和自动读数系统
2014-11-27 18:48
113 查看
最近结合项目,研究了一下指针式仪表的自动读数算法,写了一套基于巡检机器人的指针式仪表检测和读数系统。简单总结记录一下。
1. 读取、保存图像和标定的模板;
2. 简单地对图像进行一些基本的处理(如裁剪、划定区域、绘制辅助线、标定关键点等);
3. 修改模板具体参数;
4. 测试算法结果。
基本都是MFC的基本的控件、opencv中图像读取、处理和保存操作,需要提一点,在绘制辅助线和选取区域时需要调用ondraw函数实时对界面进行刷新。有了界面之后算法测试心情都舒畅些~ 行了,开始写算法。
首先是寻找仪表,很简单,一个cvMatchTemplate了事。
然后是读数,这里我使用了SIFT+Homography对仪表表盘进行配准,使检测对样本和模板间光照,旋转和尺度变化具有较强鲁棒性。配准后使用hough变换检测目标中的直线,从长度、累计值、角度、对比度等方面设计函数,计算每条直线作为仪表指针的置信概率。得到概率最大的指针后,根据其到最小、最大值的相对角度计算其读数值。
1. 系统框架
需求很简单,在场景中寻找标定好的仪表 → 定位 → 拉近焦距 → 读数。硬件方面不用我管,大概写了一个简单的框架图,开始动手。2. 界面和操作
用MFC写了一个标定界面,实现功能包括:1. 读取、保存图像和标定的模板;
2. 简单地对图像进行一些基本的处理(如裁剪、划定区域、绘制辅助线、标定关键点等);
3. 修改模板具体参数;
4. 测试算法结果。
基本都是MFC的基本的控件、opencv中图像读取、处理和保存操作,需要提一点,在绘制辅助线和选取区域时需要调用ondraw函数实时对界面进行刷新。有了界面之后算法测试心情都舒畅些~ 行了,开始写算法。
3. 算法
现在这方面做的不多,据我知道也就鲁能科技再搞吧(不太确定)。不知道高手怎么做的,我的思路大概如下:首先是寻找仪表,很简单,一个cvMatchTemplate了事。
然后是读数,这里我使用了SIFT+Homography对仪表表盘进行配准,使检测对样本和模板间光照,旋转和尺度变化具有较强鲁棒性。配准后使用hough变换检测目标中的直线,从长度、累计值、角度、对比度等方面设计函数,计算每条直线作为仪表指针的置信概率。得到概率最大的指针后,根据其到最小、最大值的相对角度计算其读数值。
4. 总结
这套东西原理很简单,实现起来也不难,代码就不贴了,算法效果还可以哈。机器人领域是下一个爆发点,很可能在计算机视觉领域会提出很多千奇百怪的需求。除基本的图像处理和检测技术外,个人判断移动环境下的入侵检测和基于kinect的导航算法会有较大范围应用。各位同学共勉~相关文章推荐
- FreeBSD断电后,自动检测并修复文件系统
- 自动功能检测系统FUNCTION
- 在ROS(indigo)中读取手机GPS用于机器人定位~GPS2BT在ubuntu和window系统下的使用方法~
- 分布式的future用于分布式系统环境下的自动测试?
- ros:kcf算法+行人检测 = 让机器人自动识别并追踪行人
- 关于(windows)下取得系统日期的方法:用于自动备份等
- 目标检测--SqueezeDet 用于自动驾驶的实时目标检测网络
- C#-MVC开发微信应用(5)--自动应答系统-自动回复机器人
- 基于模板的全自动目标检测跟踪系统的设想
- 操盘机器人新增板块资金流向分析模型,可自定义板块、分析周期以及系统自动学习功能
- 获得Android系统所有已安装的应用并联网自动检测升级更新
- 获得Android系统所有已安装的应用并联网自动检测升级更新
- 获得Android系统所有已安装的应用并联网自动检测升级更新
- 产品学习:变电站智能机器人巡检系统设计
- 移植Android4.0中的AutoCompleteTextView自动完成文本框控件用于低版本的系统
- failover 故障检测、报警、自动切换 程序 monitor_nginx.sh 用于对web server (Nginx) 监测与故障处理
- FreeBSD断电后,自动检测并修复文件系统
- 获得Android系统所有已安装的应用并联网自动检测升级更新
- 在ROS(indigo)中读取手机GPS用于机器人定位~GPS2BT在ubuntu和window系统下的使用方法~
- 大牛讲堂 | 山世光博士:自动驾驶系统中的目标检测技术