基于摄像头的路径识别系统.docx
- 文档编号:23913573
- 上传时间:2023-05-22
- 格式:DOCX
- 页数:37
- 大小:1.14MB
基于摄像头的路径识别系统.docx
《基于摄像头的路径识别系统.docx》由会员分享,可在线阅读,更多相关《基于摄像头的路径识别系统.docx(37页珍藏版)》请在冰豆网上搜索。
基于摄像头的路径识别系统
基于摄像头的路径识别系统
摘 要
本文介绍了一种智能车路径识别系统。
在该系统中,以飞思卡尔16位单片机MC9S12XS128作为核心控制单元,以CodeWarriorIDE作为集成开发环境,使用CMOS摄像头采集路面信息,通过单片机读取摄像头数据并从图像中提取出边沿信息,最终通过计算得到不同赛道的斜率和曲率,以此作为智能车行驶的依据。
在程序的软件设计中,详细的阐述了图像采集,图像预处理,特征提取和路径判断。
其中,在图像采集中使用了中断的方法,在图像预处理中使用了中值滤波算法,并且在黑线提取中提出了直接边沿检测和跟踪边沿检测相结合的算法。
实验表明,系统能很好地满足智能车对路径识别性能和抗干扰能力的要求,具有较好的动态性能适应性。
关键词:
路径识别;边沿检测;摄像头;斜率;曲率
ThePathRecognitionSystemBasedonCamera
ABSTRACT
Akindofpathrecognitionsystemofintelligentvehicleisintroducedinthispaper.ThissystembasedonMC9S12XS128asthemicro-controllerunit.TheCodeWarriorIDEisusedastheintegrateddevelopmentenvironment.Inordertoreadandextracttheedgeinformation,aCMOSimagesensorisusedtoobtainlaneinformationfromtheimage.Finally,runningbasisisobtainedthroughcalculationofslopeandcurvatureofthetrack.Inthesoftwaredesignofprocess,theimageacquisitionandpreprocess,featureextractionandapproachesaredetaileddescribed.Amongthem,theinterruptmethodisusedinimageacquisitionandmedianfilteringalgorithmisusedinimageprocessing.Especially,directedgedetectionandtrackingedgedetectionarecombinedintheblacklineextraction.Experimentsshowthat,thesystemcanwellmeettherequirementsofintelligentvehiclepathidentificationperformanceandithasbetteradaptability,anti-jammingabilityanddynamicperformance.
Keywords:
pathrecognition;edgedetection;camera;slope;curvature
1 引言
机器视觉技术自起步起到现在已经有近20年的历史。
作为一种工程应用技术,机器视觉是随着工业自动化的发展而逐渐发展和完善的。
所谓机器视觉就是用视觉传感器代替人眼来做测量和判断,这也是模式识别的基础。
机器视觉系统是指通过图像传感器(分为CMOS摄像头和CCD摄像头两种)将被摄取的目标转换成图像信息,这个过程是由AD采样来完成的,然后再把结果传送给专用的图像处理系统,根据像素位置和颜色、亮度等信息,转换为数字信号;图像系统再对这些信号进行各种运算来提取目标图像的特征,进而根据判别的结果来实现对现场设备的控制。
据《2013-2017年中国机器视觉产业发展前景与投资预测分析报告》[1]数据显示,在国外,机器视觉技术的普及和应用主要在半导体技术及电子行业,其中半导体技术中能够占据50%的份额。
具体应用如PCB印刷电路板:
各种生产印刷电路板制作组装设备、技术;单双面及多层板,覆铜板及其所需的材料和辅料;辅助设施以及药水药剂、油墨、配件;电子封装技术与设备等。
电子生产加工设备:
半导体集成电路制造设备、电子元器件制造设备、元器件成型设备、电子工模具。
SMT表面贴装技术:
SMT工艺与设备、焊接设备、测试仪器、返修设备及各种辅助工具及配件、SMT材料、胶粘剂、贴片剂、焊剂、焊料及焊膏、防氧化油、清洗剂等;波峰焊机、再流焊机及自动化生产流水线设备。
机器视觉技术还广泛应用于质量检测的各个方面,并且其产品应用也占有重要地位。
另外,机器视觉技术还用于其它各个领域。
而在中国,上述行业则属于一些新兴的领域,再加上机器视觉的普及程度不够等因素,以至于以上各行业的应用几乎为空白,即便是有,也只是一些低端的应用。
而随着我国配套基础设施建设的不断完善,资金、技术实力的不断积累,再加上各种行业开始广泛出现对采用机器视觉技术的工业生产自动化、智能化的大量需求,国内有关高校、科研院所和大型企业近几年在机器视觉领域给予了足够的重视,并积极的进行了大胆的思索和尝试,使其开始逐步出现在工业现场。
现阶段主要用于制药、印刷等领域。
这些应用大多都集中在如药品的检测分装、印刷色彩的检测等实际生产过程。
比较高端的应用还比较少,因此,上述有关行业的应用前景还比较广。
当然、其他领域如指纹识别等领域也有着很好的发展空间。
在智能车导航技术方面,机器视觉技术由于其能提供丰富的信息、价格相对低廉、能与其他传感器方便的进行数据融合等特点,成为当前有着广泛应用前景的导航技术之一。
2 系统硬件设计及方案选择
2.1 路径识别系统总体方案
该系统以飞思卡尔MCS12XS128单片机为控制核心,由CMOS摄像头采集路径视频信号,在行场同步信号的时间基准下将经过采样处理的视频信号送入单片机进行路径信息处理,于是MCU将摄像头所获得的一场路径画面转换成一张存有路径信息的二维坐标表格,然后在表格中选取合适的点,采用边沿跟踪算法检测出赛道两条边沿,并归中拟合成一条线,跟据该线计算出赛道的斜率和曲率,以此作为智能车控制的依据。
系统基本过程如图2-1所示。
图2-1 系统总体方案
2.2 电源管理电路
良好的电源是系统能够稳定运行的保障,因此系统电源设计至关重要。
如图2-2所示,本系统的供电电源为7.2V镍镉电池,需要降压后给摄像头和单片机供电。
为满足摄像头和单片机对电源性能的不同要求,摄像头的电源由LM2940获得,单片机电源由TPS7350获得。
图2-2 电源结构框图
如图2-3,LM2940为输出电压固定的低压差三端稳压器;输出电压5V;输出电流1A;输出电流1A时,最小输入输出电压差小于0.8V;最大输入电压26V;工作温度-40~+125℃;内含静态电流降低电路、电流限制、过热保护、电池反接和反插入保护电路。
其效率要高于7805,压差也低于7805,可以很好地满足性能要求。
图2-3 LM2940稳压电路
如图2-4,TPS7350是微功耗低压差线性电源芯片,具有完善的保护电路,包括过流、过压、电压反接保护。
使用这个芯片只需要极少的外围元件就能构成高效稳压电路。
与LM2940及AMS1117稳压器件相比,TPS7350具有更低的工作压降和更小的静态工作电流,可以使电池获得相对更长的使用时间。
由于热损失小,因此无需专门考虑散热问题。
而且其纹波很小,又为线性稳压芯片,可为单片机提供非常可靠地电源,避免因电源波动引起的复位。
图2-4 TPS7350稳压电路
2.3 MCS12XS128单片机
由于系统需要处理的数据是由摄像头产生的,因此会产生大量的数据,选择一款性能优良的单片机可以是数据处理部分更加便利。
本方案中采用飞思卡尔半导体公司的16位单片机MC9S12XS128,其供电电源3.135~5.5V,工作温度-40°~125°C,主要由中央处理单元(CPU12X)、128KB程序Flash(P-lash)、8KBRAM、8KB数据Flash(D-lash)组成。
主要功能模块包括:
内部存储器、内部PLL锁相环模块、2个异步串口通讯SCI、1个串行外设接口SPI、MSCAN模块、1个8通道输入/输出比较定时器模块TIM、周期中断定时器模块PIT、16通道A/D转换模块ADC、1个8通道脉冲宽度调制模块PWM、输入/输出数字I/O口。
全部引脚如图2-5所示。
图2-5 MC9S12XS128管脚图
2.4 摄像头
2.4.1 摄像头选型
路径识别系统的传感器部分由摄像头担当,因此挑选一款合适的摄像头关系到系统检测部分优劣。
感光芯片即图像传感器,是摄像头的重要组成部分,根据其不同原理可分为CCD和CMOS摄像头。
摄像头实物如图2-6所示。
图2-6 摄像头
由表2-1可知,CCD具有噪声小,灵敏度高,动态性能好的优点。
但是生产工艺复杂、功耗高、成本高。
而CMOS具有集成度高、功耗低、成本低等优点。
但是噪声较大、灵敏度较低、对光线要求高。
因可通过CMOS技术将像素阵列与外围支持电路(图像传感器控制核心、时钟单元、逻辑时序、可编程寄存器和A/D)集成在同一块芯片上,所以CMOS图像传感器与CCD图像传感器相比,具有体积小、重量轻、功耗低、编程简单、便于控制等优点;同时,可通过I2C、SPI等接口配置其曝光时间、增益控制等功能,可控性强。
因此,因此本文采用CMOS摄像头作为路径识别的传感器。
表2-1 摄像头优劣对比
优点
缺点
CMOS
摄像头
接口电路简单,无需外加接口芯片
动态特性差
5V电压供电,可直接降压
容易产生噪声
广角镜头,视角范围宽
功耗小
CCD摄像头
动态特性好
需外加接口电路,电路设计相对复杂
图像清晰
12V电压供电,需升压电路
视角范围窄,不能够完全看清赛道
功耗大
2.4.2 摄像头工作原理
图2-7 摄像头模拟输出信号波形图
摄像头按照一定的分辨率,以隔行扫描的方式采集图像上的像素点,通过图像传感器将该像素点的灰度转换成相应的电压值,然后将该电压值输出到视频信号输出端。
由图2-7可知,摄像头每扫描图像上的一行后,输出一串电压信号,而电压信号的高低变化则反映了电压值的变化,进而反映了该行图像像素点灰度的变化。
摄像头每扫描一行图像,视频信号输出端输出一个相对较低的电平,并保持片刻。
随后在每行图像信号之后会产生一个电压“凹槽”,此“凹槽”即为行同步脉冲,该信号是扫描换行的标志。
然后,跳过一行开始扫描新的一行,如此往复,直到扫描完该场的全部视频信号,紧接着会出现一段场消隐区。
该消隐区中含有若干个复合消隐脉冲,其中有个脉冲持续时间远长于其它的消隐脉冲,称为场同步脉冲,该脉冲信号是扫描换场的标志。
场同步脉冲标志着新的一场的到来,场消隐区恰好跨在上一场的结束和下一场的开始,等场消隐区过去,下一场的视频信号才真正到来。
摄像头每秒钟扫描30帧图像,每帧图像分为奇偶两场,奇场在前偶场在后,所以每秒钟扫描60场图像。
奇场时只扫描每帧图像的奇数行,偶场时则只扫描每帧图像的偶数行。
3 图像采集与处理
3.1 路径识别概述
路径识别,可以认为就是图像的模式识别,它是模式识别技术在图像领域的具体运用。
模式识别的研究对象基本上可概括的分为两大类:
一类是有直觉形象的,如文字、相片、图像等;另一类是没有直觉形象而只有数据信息或波形信息,如话语、心电波、地震波等。
而对于模式识别来说,不管是数据、信号还是平面图形或着立体事物,都是除去其共性,把具有同一共性的归为一类,而具有另一种同一共性的归为另一类。
模式识别的研究目的是研制出能够自动处理某些信息的机器系统,从而代替人完成分类和识别的任务。
从狭义的方面来讲,图像识别技术中所研究的模式就是图像。
第一部分是图像信息的获取。
其相当于对被研究对象的调查和了解,从中获得数据和信息。
对图像识别而言,就是把图像等信息经系统输入设备数字化后输入到计算机系统以等待处理。
第二部分是图像的预处理。
图像预处理的目的是去除噪声、干扰及差异等,将原始图像转换为适合于计算机特征提取的方式。
其包括图像的增强、变换、恢复等。
第三部分则是图像的特征提取。
其作用在于将获得的数据信息进行加工、整理、分析、归纳以去伪存真,提取出能反映事物本质的特征。
提取什么特征,保存多少特征与采用何种判断有很大关系。
第四部分是分类判断。
即根据提取的特征信息,采用某种分类判断函数和判断规则,对图像信息进行分类和辨识,得到识别到的结果。
其相当于人们从感性认识上升到理性认识从而做出结论的过程。
总图流程如图3-1所示。
图3-1 路径识别总体结构框图
3.2 图像采集
本方案中采用Omnivision公司的OV7620作为图像采集的传感器,分辨率可以达到640×480,传输速率可以达到30帧,由于图像数据量大,仅凭XS128不可能将整幅图像信息全部采集回来,故本系统在保证不漏检黑色引导线的前提下,采用如下一些措施:
(1)单片机超频运行,通过配置锁相环,将主频设为80MHz;
(2)隔行采集,通过预先设定要采集的行数,当行计数变量与所需采集的行数相等时开始采集。
实际测试,采集与赛道上等间隔的40行对应的图像上的行;
(3)改进采集程序算法,提高采集效率,缩短采集需要的指令。
由图3-2所示,根据摄像头的工作时序,采集算法采用中断的方法,当单片机检测到场同步脉冲时,进入场中断服务子程序。
当进入场中断后,清除标志位,行计数值置零,场计数加1,行间隔计数置0,然后关闭场中断,打开行中断,使单片机得以接受行中断信号。
图3-2 摄像头工作时序图
OV7620摄像头每秒钟30帧画面,每帧画面分为奇场和偶场,在每场的开始有一个脉冲。
当场中断到来时需要将行计数器置为0以便读取新一场的数据,同时还需要读取脉冲累加器中的数据获取当前智能车的速度值,关闭场中断等待行中断的响应。
场中断服务程序流程如图3-3所示。
图3-3 场中断流程图
与场中断类似,为了区分行与行之间的数据在每行的开始会有一个行中断信号。
在行中断中要完成图像灰度值得读取。
在采集完最后一行数据之后再对数据进行分析处理,通常情况下白色的赛道灰度值较大,黑色的边沿灰度值较小,通过灰度值的不同来提取赛道边缘信息。
行中断服务程序如图3-4所示。
随后,不断的重复上面的过程,直至采集到180×40的表格数据。
将其存放在数组中后续的图像处理中使用。
图3-4 行中断流程图
3.3 图像预处理
在图像采集的过程中,由于摄像头受光线影响以及受自身性能的限制致使摄像头采集的图像中含有噪声,本系统采用中值滤波的方法去除噪声。
中值滤波算法原理:
首先确定一个以某像素点为中心点的邻域,然后将邻域中各像素点的灰度值排序,取中间值作为中心点像素灰度的新值。
采用中值滤波的方法去除噪声具有很高的抗干扰能力,具体优点如下:
(1)对于过于复杂的图像,通过多次使用不同的中值滤波,最后综合所得的结果作为输出,这样可以获得更好的平滑和保护边缘的效果;
(2)在去除噪声的同时,可以较好地保留边缘的锐度和图像的细节;
(3)算法简单,实时性好、可靠性高等。
3.4 特征提取
3.4.1 图像二值化算法
二值化算法是将像素的灰度值按一个固定的阈值分成两种,比阈值大的认为是白色记为1,比阈值小的认为是黑色记为0。
这样就将原有的8位的灰度图像转化为1位的灰度图像,因为智能车只需要判别白色的赛道和黑色的引导线,所以单片机很容易就能判断出赛道的形状。
该算法思想简单容易实现,资源开销较少。
但是这种算法的适应能力差、稳定性差。
极容易受到外界不利因素的干扰而产生大量的噪点。
3.4.2 直接边缘检测算法
由于路径信息经摄像头采集处理之后,是一幅黑白的灰度图像,故采用边缘检测,即寻找跳变沿算法较为简单。
如图3-5所示,该算法的主要过程如下:
因赛道黑带分布于两侧,所以从中间的第一个有效数据点开始依次向右进行阀值判断,由于实际中黑白物体边缘可能会出现模糊偏差,导致阀值并不是简单的介于两相邻点之间,很可能要相隔一个点。
因此以第line为原点,判断line和line+3的差是否大于该阀值,如果是则将line+3记为i,然后再从下一行的中心位置开始检测,如果line和line+3的差大于该阈值则将line+3记为j,在比较i和j的差值,如果差值小于5则说明i和j的纵向距离比较小,符合实际,所以记i和j为有效数据。
重复此过程直至将黑带检测完毕。
左侧黑带检测同右侧。
利用该算法所得到的路径提取效果可靠,但是每行180个点都进行采集,如果把有效路径的位置都提取出来,就要把整场整行的数据都进行采集和分析处理,这样就使得单片机的负担很重。
图3-5 单行黑线数据
3.4.3 跟踪边缘检测算法
这种算法与直接边缘检测算法一样,也是寻找出目标引导线的边缘,仍然用边缘的位置代表目标引导线的位置。
但跟踪边缘检测法从视频信号数组中寻找边缘的方法与上述方法不同。
因为目标引导线是连续的曲线,所以相邻两行的边缘像素点比较靠近。
跟踪边缘检测法正是利用了这一特征,因此对直接边缘检测进行了改进。
其思想是:
若已经寻找到某一行的边缘,则下一行就在上一个左边缘附近进行扫描,这种方法的优点是始终跟踪在每行边缘的附近,再去寻找下一列的边缘,所以称为“跟踪”边缘检测算法。
经过实验可知,该算法占用单片机时间较短,但容易受干扰,以至于跟丢有效路径,使之后的路径信息也检测错误。
3.4.4 直接边缘检测和跟踪边缘检测结合
考虑到以上两种方法的优缺点,所以将两种算法进行互补,找出一种既不占用单片机太多时间,又使得有效路径的信息不易受干扰。
首先通过直接边缘检测法找出第一行的路径位置,然后在它的基础上使用跟踪边缘检测法检测路径。
如果跟踪检测不到,就再用直接边缘检测法继续检测本行。
使用这个方法之后,能够达到预期的目标。
检测基本过程如图3-6所示。
图3-6 直接边沿检测与跟踪边沿检测结合
3.5 路径识别
3.5.1 起跑线识别
图3-7 赛道起始线检测
由图3-7可知,在距离赛道中心线左右各4.5厘米处,有两条10厘米长的黑色引导线。
因赛道总宽度为45厘米,而两侧的黑色引导线可以通过上述边沿检测算法得到,将左右边沿相加取平均值可以得到赛道中心线,可以通过计算得到黑色引导线与中心线的中线,即左中心线与右中心线,如图中红线所示。
左右中心线必经过左右起始的黑色引导线,所以可以通过连续扫描左右中心线的方式检测起始线,当扫描到有从白色到黑色的跳变沿时即为找到起始线。
3.5.2 曲率的计算
在提取黑色引导线的基础上,系统需要识别出弯道和直道,不同弯道的参数等。
由几何知识可知,由不在同一条直线上的3个点可以确定出1个圆,同一个圆上任意不同的3个点确定的均为同一个圆。
因此可以通过赛道上的3个点确定出一个圆,进而计算出这3个点确定的圆的半径,半径的倒数即为曲率。
采用平面三角形面积公式计算曲率:
设平面上的3点及其坐标分别为A(x1,y1),B(x2,y2),C(x3,y3),定义S(A,B,C)=(x1-x3)×(y2-y3)-(y1-y3)×(x2-x3)
则三角形的外心为:
x=S((x1×x1+y1×y1,y1),(x2×x2+y2×y2,y2),(x3×x3+y3×y3,y3))/2×S(A,B,C)
y=S((x1,x1×x1+y1×y1),(x2,x2×x2+y2×y2),(x3,x3×x3+y3×y3))/2×S(A,B,C)
求出三角形外心后,进而求出其外接圆半径,最后求出曲率。
在计算的过程中需要注意,摄像头采集的图像和真实的图像会有一定的差别,有近大远小的失真形变。
最终计算出的小弯半径在70~85cm之间,大弯道半径在32~50cm之间。
3.5.3 斜率的计算
图3-8 不同弯道特征
由图3-8可看出,通过远中近三点连线的斜率可以来判断弯道类型,通常来说,S弯的三点连线斜率异号,普通弯道的两条连线斜率同正同负。
然而当S弯弯度较小时同样会出现斜率同正同负的现象,因此应分三段计算斜率,从而可以很好地识别出路径。
定义:
设平面上的4点及其坐标分别为:
A(x1,y1),B(x2,y2),C(x3,y3),D(x4,y4)斜率为k1=(y2-y1)/(x2-x1),k2=(y3-y2)/(x3-x2),k3=(y4-y3)/(x4-x3)。
根据k1、k2、k3可区分不同的弯道。
4 系统整体调试
在系统总体设计完成后,可以说只是完成了一半,因为还有相当一部分的工作是在“调”。
要想使系统运行更稳定,路径识别月准确,没有合适的调试工具时不行的,调试工具充当了智能车与计算机及人脑之间的媒介,而调试方法更是调试过程的灵魂。
好的调试方法可以事半功倍。
4.1 电源模块调试
最初设计的电路只用一片LM2940为单片机、摄像头供电,电路虽然简单但是存在许多问题。
其中单片机总是莫名其妙的就烧了,事后用数字示波器观测电源的纹波,发现电源纹波较大偶尔还有尖峰脉冲。
经分析感觉各负载互相干扰,于是重新设计了电路分模块供电,单片机用一片TPS7350供电,摄像头用一片LM2940供电。
为了追求电路的稳定做了各种滤波电路将各个模块隔离开。
经过调试最终得到了比较稳定的电源系统。
电源模块调整前后的文波如图4-1所示。
图4-1 调整前的电源纹波(左)调整后的电源纹波(右)
4.2 软件部分优化调试
调试部分主要依靠BDM(图4-2)和CodeWarrior(图4-3、4-4)集成开发环境,可以分为两项:
一是在新的算法完成之后,检验程序代码是否可以正常运行,能否得到预期的结果。
这部分的检验主要依靠检查内存中变量的数值以及在程序中设置断点检验程序流程来完成的。
另一是在整体程序基本编写完成,可以基本实现寻线跟踪,异常判别等功能后,调试程序运行中的各个参数,以尽可能提高精准度和稳定度。
在调试过程中,如果出现错误,会按照以下步骤进行检查。
首先确认硬件电路是否是工作正常的。
其次认清楚错误现象,包括发生的时间、地点、光线强度,是有规律的发生还是随机发生等等。
然后对错误进行分析,判断错误可能产生的原因和位置,并对分析结果进行检验。
最后确定程序产生错误时的执行路线,对错误区域进行仔细检查,排除错误,最后再用实验验证程序是否正确。
图4-2 USBBDM
图4-3 CodeWarriorIDE
图4-4 TrueTimeSimulator&RealTimeDebugger
4.3 上位机显示调试
OV7620数字摄像头留有模拟输出端,因此可附接上USB视频卡(图4-5)将摄像头实时采集的图像传输到上位机(4-6)。
配合使用会声会影将视频录制下来,可以翻看各帧图像,进而寻找原因,起到一个“黑匣子”的作用。
图4-5 USB视频卡
图4-6 UleadVideoStudioSEDVD
为了能够实时观察图像采集和处理的某些变量和参数,本设计同时采用SCI总线串口调试助手发送反应系统动态性能的数据,其上位机的人机界面如图4-7,操作简单,功能强大。
采集到的数据传输到上位机如图4-8和4-9所示。
图4-7 串口调试助手
图4-8 串口显示数据——小S
图4-9 串口显示数据——大S
5 结论
从最初的方案论证,各种方案的对比选择,具体电路的设计,各种算
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 摄像头 路径 识别 系统