图像识别机械表头位置的方法不够完善,恳请坛友给点建议

2019-12-14 12:58发布

本帖最后由 Malo 于 2018-12-13 09:13 编辑

关于机械式表头的刻度位置识别
机械式表头一直在转动,边上有刻度,如图所示。借用正点原子的做法稍作改动,主控使用STM32F4,使用豪威的OV2640摄像头去读取影像信息,通过DMA的传输方式将摄像头图像信息搬运到屏幕上,最后识别显示屏上的颜 {MOD}判断刻度线是否在屏幕指定位置。
目前功能已经实现,每次出现刻度时候即发出一个脉冲信号给外部接受设备。比如刻度5的时候发出一个脉冲,6的时候发出一个。。以此类推。。
不过有个小麻烦,两次发出脉冲的时间间隔不一样,要求达到的精度是1%以内。例如转动到标准的两个刻度之间间隔为100s,故每间隔发出的脉冲信号必须落在99s到101s之间,现在做到的精度有时候会偏离范围。
分析原因:
1.由于表头转动速度太慢,所以可能会导致每次刻度出现的时间会有误差
2.摄像头数据采集只要30帧,加上处理应该只有25帧,处理过慢。
请教各位坛友,从软件处理方式上出发,有没有更好的识别思路呢?改良精度的问题。


检测位置为图片中小红框区域,转动到中间位置的时候被检测到。
之前的测试方法为使用光电头采集上面的反光片,出来的脉冲信号是在精度要求范围内的。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
25条回答
wye11083
1楼-- · 2019-12-17 04:30
Malo 发表于 2018-12-13 09:36
你好,谢谢提出宝贵建议。
二值化是判定在不在范围内之前就做好的工作,不然也没有办法进行识别了。后面 ...

那你就调大阈值呗。90个像素,>=80个判1,<=60个判0。这就是典型的fir滤波器了吧,我猜的,因为fir也是只看有没有。注意太阳光会不会造成影响,如果有影响你要计算白天夜晚白 {MOD}区域的亮度差,然后做差滤波,毕竟你这条件太单一了。
scsdwxj2005_5
2楼-- · 2019-12-17 08:51
燃气表抄表吧,这么做功耗能控制的住么。
Malo
3楼-- · 2019-12-17 13:18
scsdwxj2005_5 发表于 2018-12-13 15:24
燃气表抄表吧,这么做功耗能控制的住么。

一眼就被看穿了哈,是燃气抄表没错的,之前这种机械的表头都是看起始拍照做对比呢。
后面因为市场需求,出现了光电头检测铁片,一圈一个脉冲解放人工记录。
现在因为转动慢的时候实在太慢了,一圈转下来要个把小时,计量时间就打打增加了。
所以目前要转动一个数字就一个脉冲的,不需要转动一圈只需要转动过几个数字就能计量。
然后我就妥妥的出现问题求助广大坛友提供好的方案支持啦
Malo
4楼-- · 2019-12-17 14:28
 精彩回答 2  元偷偷看……
lcw_swust
5楼-- · 2019-12-17 15:24
Malo 发表于 2018-12-13 08:38
处理30帧是摄像头1秒只能传输30帧数据到MCU,这个是官方数据,靠DMA完成的。
处理红 {MOD}小框内的数据是花不 ...

每秒25帧的速度还是不慢的,建议二值化后作一个重心或中心检测。
hexenzhou
6楼-- · 2019-12-17 16:19
本帖最后由 hexenzhou 于 2018-12-13 20:53 编辑

搞得这么麻烦,直接在抄表的时候拍整张图片识别就好了,只在需要抄表的时候拍照,平时休眠,识别这个图片难度不高。单片机玩这个不合适,树莓派+摄像头最适合了,树莓派上运行python + opencv。

一周热门 更多>