图像采集及处理方法简
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图像采集传感器可分为CCD型和CMOS型,其中CMOS型摄像头工艺简单,价格便宜,对于识别智能车赛道这样的黑白二值图像能力足够;
假设每场采样40行图像数据,为了方便软件程序的编写,可以均匀地采样288行视频信号中的40行,即每隔7个有效行采集一行。例如采样其中的第7行、第14行、第21行、…、第273行、第280行,即采样该场信号的第29行、第36行、第43行、…、第295行、第302行(每场开始的前22行视频为场消隐信号)。法1、二值化算法的思路是:设定一个阈值valve,对于视频信号矩阵中的每一行,从左至右比较各像素值和阈值的大小,若像素值大于或等于阈值,则判定该像素对应的是白色赛道;反之,则判定对应的是黑色的目标引导线。记下第一次和最后一次出现像素值小于阈值时的像素点的列号,算出两者的平均值,以此作为该行上目标引导线的位置。
该算法的思想简单,但是这种提取算法的鲁棒性较差,当拍摄图像中只有目标引导线一条黑线时,尚能准确提取出该目标引导线,但当光强有大幅度变化或图像中出现其他黑色图像的干扰时,该算法提取的位置就有可能与目标引导线的实际位置偏离较大。
法2、采用逐行搜索的算法,首先找到从白色像素到黑色像素的下降沿和从黑色像素到白色像素的上升沿,然后计算上升沿和下降沿的位置差,如果大于一定的标准值,即认为找到了黑线,并可求平均值算出黑线的中心点。
至于上升沿、下降沿的检测,可以通过上上次采样数与这次采样数的差值的绝对值是否大于一个阈值来判断,如果“是”且差值为负,则为上升沿;如果“是”且差值为正,则为下降沿。
这里,阀值可以根据经验设定,基本上介于30~46之间(当A/D模块的参考电压为2.5 V时),也可以采用全局自适应法设定,每次采样后首先都遍历一次图像,得到图像灰度值的平均值,然后用这个平均值乘以一个调试系数即可得到所要的阈值。
法3、第一次发帖说得不对的地方请谅解!
此贴发表的目的是希望大家能够互相讨论下赛道的数据识别与处理和控制,本人没啥能力,就会写写程序而已,第一次玩智能车,好多地方都做得不是很好,我加了几个群,发了半天,没一个人闹句话,可能大家都忙,希望在这里大家能够积极探讨。
我先发表一下我前几天对图像处理,赛道分析和舵机控制的心得,效果一般所以想和大家好好探讨有没有一种更有效的处理方法。我用的方法比较笨,就是大家通常所说的两点求斜率的办法,处理赛道数据的基本方法是,一行从左往右扫描通过连
续白点数目累积最大值(若为中有一黑点滤成白点途)的大小来确定前端赛道的中心位置,再和后面已经矫正好的中心进行较得出差值,以查表的方式控制舵机。开始控制得还可以,后来发现,车左转得时候特别灵活,左大弯都没得问题,但是后来发现右大弯始终跑不过去,原因是右弯时摄像头只能看到左边黑线(用的白底,若是蓝底的话,没有问题)把左边的白点当成了中心白点,所以车该右转时左转了,一直没有想到个有效的处理方法,今天突然觉得中间往两边判断可能不错,不过还没去实现,所以想问下大家的处理思路。有意加QQ:415949808
从中间向两边扫描很容易丢线
由近及远顺藤摸瓜的方法可以吗