内容发布更新时间 : 2024/12/23 2:37:19星期一 下面是文章的全部内容请认真阅读。
图像处理算法总结
一、 简介
根据第九届全国大学生“飞思卡尔”杯智能车竞赛要求,针对摄像头平衡组的车模要求,我们小组需要自主设计一辆两轮平衡直立的由摄像头自主识别路径并以较快速度行进的智能小车。其中图像数据的处理是摄像头组能否取得好成绩的关键。
我们这次使用的是野火鹰眼ov7725硬件二值化摄像头(如图1所示),基于飞思卡尔K60单片机控制,并通过IAR6.3编译,编译界面如图2所示。
图1.鹰眼摄像头
图2.iar编译界面
二、 设计要求
对鹰眼摄像头采集回来的一副二值化的图像数据进行解压,图像处理,求
出赛道中线和车体中心线的偏差,通过PID调节,将转向控制量返回,从而实现转向控制。其中图像处理包括:黑线提取,赛道类型判断,计算转向偏差。
三、 算法设计 3.1 黑线提取
我们采用的是跟踪边缘检测算法。由于黑色的目标引导线是连续曲线,所以相邻两行的左右边缘点比较靠近。跟踪边缘检测正是利用了这一特性,对直接边缘检测进行了简化。其思路是:若已寻找到某行的左边缘,则下一次就在上一个左边缘附近进行搜寻。这种方法的特点是始终跟踪每行左边缘的附近,去寻找下一列的左边缘,所以称为“跟踪”边缘检测算法。该算法的优点:在首行边缘检测正确的前提下,该算法具有较强的抗干扰性,能更有效地消除垂直交叉黑色引导线的干扰,以及引导线外黑色图像的影响,始终跟踪目标引导线。另外,与直接边缘检测法比较,跟踪边缘检测算法的时间复杂度更低,因此效率更高。且通过多次试验,中心线提取基本没有出现大的问题。如图3,为一次拍摄的赛道图像,经图像处理后将计算的中线显示在上位机上,
图3
3.2赛道类型判断
影响赛车速度成绩的一个重要因素就是对弯道和直道的提前识别判断,从而实现安全过弯,快速过直道、S弯道,以提高比赛成绩。我们通过小液晶模块,或者摄像头上位机将拍回来的赛道图像反复仔细地对比查看,提取出相关的特征作为判断条件,从而完成赛道类型的判断。另外,由于智能车上安装的摄像头相对于赛道存在一定的倾斜角度,因此会造成采集到的赛道图像具有一定的梯形失真,即图像中的赛道远端窄、近端宽,因而也会对路径的正确识别产生影响。对于这种失真,可以通过对每行提取的赛道位置添加一个线性修正值来消除,一般
通过实验的方法确定线性补偿的系数。
3.3 控制算法
PID控制是比例、积分、微分控制的简称。在自动控制领域中,PID控制是历史最久,生命力最强的基本控制方式。 就小车的转向控制而言,我们只需要利用PD控制。经过图像处理算法后,得到的信息是关于前瞻范围内的中线的具体位置,它一般是个一维数组。现在就是要从这个一维数组中提取出智能车前方的路径信息,以便于后面转向和速度的控制。为了使小车运行得快而稳,可以从中提炼出一个中线距离车身中心轴的偏差量dev1,给它乘一个比例系数Tp,用前后两幅图片偏差量dev1的差值作为dev2给它乘以一个微分系数Td,将他们的和作为总的偏差量dev输出,并通过多次实验的方法确定最佳的PD参数。具体代码见图4。
图4
四.算法设计遇到的问题 4.1中线不连续
代码实际调试中,总存在中心线提取不连续的问题。如图5所示,
后来,多次修正补线数组,通过不同赛道类型的判断,进行二次巡线的算法,最终将这类问题基本解决。但是,解决思路过于简单、操作繁琐,甚至需要对着摄像头拍回来的图像一个点一个点的数,来确定某一行丢边情况下补线的数值。效率确实有待加强。