关于机械式表头的刻度位置识别
机械式表头一直在转动,边上有刻度,如图所示。借用正点原子的做法稍作改动,主控使用STM32F4,使用豪威的OV2640摄像头去读取影像信息,通过DMA的传输方式将摄像头图像信息搬运到屏幕上,最后识别显示屏上的颜 {MOD}判断刻度线是否在屏幕指定位置。
目前功能已经实现,每次出现刻度时候即发出一个脉冲信号给外部接受设备。比如刻度5的时候发出一个脉冲,6的时候发出一个。。以此类推。。
不过有个小麻烦,两次发出脉冲的时间间隔不一样,要求达到的精度是1%以内。例如转动到标准的两个刻度之间间隔为100s,故每间隔发出的脉冲信号必须落在99s到101s之间,现在做到的精度有时候会偏离范围。
分析原因:
1.由于表头转动速度太慢,所以可能会导致每次刻度出现的时间会有误差
2.摄像头数据采集只要30帧,加上处理应该只有25帧,处理过慢。
请教各位坛友,从软件处理方式上出发,有没有更好的识别思路呢?改良精度的问题。
检测位置为图片中小红框区域,转动到中间位置的时候被检测到。
之前的测试方法为使用光电头采集上面的反光片,出来的脉冲信号是在精度要求范围内的。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2:对于摄像头处理的信号误差大于1%,你怎么知道不是表盘本身转速引起的误差呢?
表盘转数快的情况下还好的,转一整圈10个数字5秒钟的情况下数据很好,因为是算整个过程的,中间有点误差按照平均算起来就不算什么了。
头疼是转动慢的情况下,100s钟转一个数字(不是一圈),满打满算给5分钟时间也就转动3个数字,如果提前297s或者超时303s检测完成,就在误差范围外了。
这点时间,就是判定区域方法不合适引起的。
一周热门 更多>