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

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条回答
xiaotaiyang
1楼-- · 2019-12-15 11:13
 精彩回答 2  元偷偷看……
Malo
2楼-- · 2019-12-15 15:30
armok 发表于 2018-12-13 08:59
“图片识别方法求助 ”不是合格标题,违反版规11。

如不修正将被封锁ID。 ...

收到,及时修改完。
wye11083
3楼-- · 2019-12-15 15:39
你这定点区域直接二值化不就成了。当1的个数大于2/3最大值认为是1,小于1/3时认为是0,消除潜在干扰。
hexenzhou
4楼-- · 2019-12-15 15:42
那就是若有若无的状态判断问题了,这种边缘状态要多试试调整状态机的判断方法,比如连续多少次“有”才判断为有效,连续多少次“无”才判断为无效,很像一般信号的毛刺处理问题,就是要想方法去抖。
Malo
5楼-- · 2019-12-15 20:55
wye11083 发表于 2018-12-13 09:13
你这定点区域直接二值化不就成了。当1的个数大于2/3最大值认为是1,小于1/3时认为是0,消除潜在干扰。 ...

你好,谢谢提出宝贵建议。
二值化是判定在不在范围内之前就做好的工作,不然也没有办法进行识别了。后面说的,我们假定总像素只有90个,当1的个数正好在临界点,也就是60个时候,多次二值化在59个到61个之间跳变很好理解的,这样就发出多个脉冲信号了。

针对这个情况,我用了小聪明去变通。当检测到大于60个点时,改变条件只要检测到40个点即在当前区域内;当检测到数量小于40个时,表明区域离开,发出一个脉冲信号,开始下一轮的刻度检测。

我发的这个求助帖子,归根结底,是每次最后检测到小于40个点的时间出现了误差,这个时候不知道怎么改善好。
Malo
6楼-- · 2019-12-16 01:52
 精彩回答 2  元偷偷看……

一周热门 更多>