APP下载

基于Android平台的车道线检测系统设计

2015-08-10黄惠迪官洪运

电子设计工程 2015年15期
关键词:中点车道分类器

黄惠迪,官洪运,邓 昶,薛 节

(东华大学 信息科学与技术学院,上海 201620)

随着社会的发展和交通工程的大量兴起,车辆行驶安全问题也日益突出,并已今成为当今汽车行业的一个关键问题。用于智能车辆导航系统的开发越来越受到研究者和厂商的关注,其中,基于图像处理的车道线检测以及车道偏离预警占据了重要的一个环节。通常汽车安全辅助系统需要高成本硬件设备来实现,使得安全驾驶辅助系统尚未广泛普及[1]。

作为移动设备搭载的主流操作系统之一,Android[1]是基于Linux平台的开放性操作系统。它由多个组织推动标准,达到了相当高的开放程度,配置不同的硬件架构都可以用以定制适用于自己的系统,可以应用与手机、平板电脑等多种移动智能终端设备之上。在Android系统对移动设备进行优化之后,非常适合于系统内存有限以及处理性能不高的移动芯片运行。因此,利用智能手持设备的便携性,本文在Android平台上,设计开发车道线检测和偏离预警的轻量级辅助驾驶应用,使人们可以直接利用自己的安卓手机便可达到智能驾驶,安全出行的目的。

为了能够在手机平台上达到检测准确性,必须考虑光照条件、路面状况、实时性等难点。对此,本文对传统的车道线的检测算法也做出了相应的改进,提高自适应性与鲁棒性。

1 车道线检测与跟踪算法

文中将利用OpenCV提供的函数库实现车道线检测的算法。先经过色彩空间转化、直方图过均衡化、增强对比、去除噪声、边缘检测等图像预处理过程,随后提出一种自适应非监督分类方法提取车道线。

1.1 图像预处理

在图像处理中,为了降低运算的复杂性,经常采用的方式是首先将彩色图像灰度处理,根据不同原色对视觉亮度的反应情况,彩色图像取灰度值 Y=0.3×R+0.59×G+0.11×B。

在实际车辆行驶过程中会遇到光源太强致使整体画面偏白,或者夜间行车光源太弱等情况降低车道线辨识度,本系统将会采用直方图均衡化和高斯滤波去噪,使车道特征更明显。

如果检测车道线时如果对整张图像进行检测,会受到大量背景杂物干扰增加系统计算量。考虑到车道线只出现在画面下方,系统设置感兴趣区域ROI范围为图像下方1/2矩形,在这个区域内进行图像边缘检测。

通常把边缘定义为图像中灰度产生急剧变化的区域边界,进行微分运算,求得二阶导数或梯度的最大值为零的点,再选取适当的阈值来提取边缘。常用的边缘检测算子有基于一阶微分的如Sobel算子、Prewitt算子,基于二阶阶微分Laplace算子,还有Canny算子[2]。使用OpenCV中的Canny边缘提取效果如图 1(b)。

车道线检测中最常用的识别方法之一是基于Hough变换。其原理是利用图像空间和Hough参数空间的点-线的对偶性,把图像空间中的问题转换到参数空间中去。OpenCV中提供了Hough的函数cvHoughLines2实现了用于直线检测的Hough变换方法[3],将极坐标空间中局部峰值点予以返回。它支持标准Hough变换和累计概率Hough变换,其中累计概率Hough变换是在一定的范围内进行霍夫变换,从而减少计算量,缩短计算时间。 直线检测效果如图 1(c)和 1(d)。

图1 车道图像预处理Fig.1 Image preprocessing

1.2 基于非监督直线分类器的车道线检测

上节由Hough变换获取的一个直线集合中仅有部分来自于所需提取的车道线,其他则是干扰线。在使用Hough变换过程中设置参数将虚线寻找出来,其中经计算虚线最大间距约有30像素。假设Hough变换结果表示为集合L:

其中L是直线集合,r是元素总数,Lx是点p0到pf点中的第x条直线。然后使用非监督分类器寻找在集合L中的最优直线。此处分类器共有两个类,分别用于左右两侧车道线,相应的定义为和C2,并对每个类的参数定义初始状态。

每个类各自有两个参数,第一个是直线中点,第二个是直线斜率。参数初始状态定义如下:

其中 Pmcx是 Cx 类的中点,Cx∈{C1,C2},Ix,max是图像中的列数,Iy,max是图像中的行数,Mcx是 Cx 类直线的斜率。公式(2)(3)中的比值系数由50张样例图像中计算均值得出。C1和C2两个类与其参数相对应的定义为:

根据每一帧的变化,参数对于实际车道线做出调整。本文为此使用自适应方法将类的参数更接近于实际值。如果直线lp满足(8)即可归类为类Cx,否则删除

dp,pmcx是直线 lp的中点与类 Cx的点 Pmcx之间的欧式距离,dP,Mcx是直线 lp的斜率与类 Cx的斜率 Mcx之间的差,dminpx是直线lp的中点与Pmcx之间最小距离,dminMx是斜率差的最小值。dminMx在这里设值为1.5,最小点间距是动态变化值,起始值设为对角线长度的85%。所用最小值均使用了启发式方法定义,第二个值随着下一帧的出现将会减小。参数Pmcx随图像变化而更新,由公式(9)获得,

决策因子 α 范围为(0,1)并基于二次方程定义为(10)。它作为权值取决于当前处理的直线中点和类Cx中点之间距离当距离缩短时,该点权值将在类的下一参数中提高。反之当该点在较远处时,这一点对于整体贡献较小。

为了避免在一些情况下可能出现对道路宽度估值增大,例如道路右侧有一条分叉路导致在车道上出现一条新的直线,在(11)中定义了由直线中点间保持距离Dk的张量Tk,其中Dk由(12)表示。这里张量Tk通过点P1和P2定义,其中每一直线的中点pmcxk由ΔD检查是否符合约束条件(13),ΔD为当前帧中求得的距离导数,g是目前ΔD中的最小值。

2 系统设计与实现

2.1 系统开发环境

系统在Windows7操作系统Eclipse IDE中,使用OpenCV-2.4.7-android-sdk,基于Android SDK进行开发。系统的核心算法代码调用了底层基于C/C++语言的OpenCV开源库来实现。虽然OpenCV提供了一部分支持Android环境的Java接口,但是考虑到优化系统性能,本系统将在原生代码上进行移植。系统开发时将会涉及C/C++与Java之间混合调用,解决方法是使用标准Java函数接口(JNI)来改写原生C/C++代码,随后使用集成了交叉编译器的Android NDK开发C/C++动态链接库 (so),将动态链接库文件和java应用打包成Android应用程序apk[4]。图2显示了代码编译和调用过程。

图2 Android应用程序调用流程Fig.2 Android application implementation

2.2 程序实现

OpenCV的库将Android自身的与相机相关的库进行了封装,通过SurfaceView显示在手机屏幕上,这里只需要继承Android.app中的Activity类并实现OpenCV提供的接口CvCameraViewListener2。启动时加载OpenCV库,在回调函数onManagerConnected中 调 用 CameraBridgeViewBase.enableView()连接相机获取图像[5-6]。

在NativeCameraView中的线程调用函数deliver And Draw Frame,更新其中发生变化的图像。可以在on Camera Frame(CvCameraViewFrame inputFrame)中实现系统所需的处理代码。

先将由CameraBridgeViewBase的setMaxFrameSize将输入图像inputFrame降低大小,随后转成灰度图像,再用Imgproc提供的函数进一步直方图均衡、平滑降噪、提取边缘、设置ROI等处理。利用Java提供的并发处理机制,建立线程池,ExecutorService对左右车道同时进行处理。

程序主要部分代码:

3 实验结果

测试硬件使用 Samsung GT-N7100,其 CPU为四核Quad-Core ARM Cortex-A9 主频 1.8 GHz,GPU 为 ARM Mali-400 MP4@533 MHz,操作系统为Android4.3,图像获取速率为30 fps。图3中(a)是对于第一帧车道线检测结果,此时分类结果来自于上文所设的类参数初始值。位于正中相交的两条直线左侧为C1类,右侧为C2类,图中同时标出了对应分类的直线中点位置。可以观察到在图像两侧边缘处有若干未经分类的直线中点。

图3中(b)是采集的第二帧图像,从中可以明显看出参数相对接近实际值,而在第四帧图像(c)中估测直线以及几乎与实际车道线重合。在实验的下一帧图像中,直线将更加接近于真实车道线。

图3 直线分类结果Fig.3 Result of lines classifier

表1 不同环境下实验结果对比Tab.1 Test result in different conditions

表1是在各个实验情景下车道线检测结果。在路面干扰较少情况下可以达到10f ps以上图像处理速度,光线较弱时判别率相对较低。而实验中由未经预处理的图像直接经Hough变换检测得到的干扰线较多,且每秒处理图像在5帧左右。

4 结 论

文中在Android平台上利用OpenCV库进行车道线检测系统的开发,充分说明了将车载安全预警系统移植到智能手机上的可行性。同时为解决在移动设备上图像处理的性能问题,提出了自适应的非监督直线分类器。对直线车道线,包括弯道的直线部分,有快速准确的判别效果。实验结果表明该算法与传统方法相比处理速度较快,判断正确率较高。

[1]Milanés,Vicente.Intelligent automatic overtaking system using vision for vehicle detection[M].Expert Systems with Applications,2012,39(3):3362-3373.

[2]Parker,Jim R.Algorithms for image processing and computer vision[M].John Wiley&Sons,2010.

[3]Topal, Cihan, Cuneyt Akinlar,Yakup Gen.Edge drawing:a heuristic approach to robust real-time edge detection[C]//Pattern Recognition (ICPR), 2010 20th International Conference on.IEEE,2010.

[4]Le,Quoc V.Building high-level features using large scale unsupervised learning [C]//Acoustics,Speech and Signal Processing (ICASSP), 2013 IEEE International Conference on.IEEE,2013.

[5]Deepthi R S,Sankaraiah S.Implementation of Real-Time Image Analyzer Graphical User Interface Using OpenCV on Android Mobile Phone[J].Advanced Science Letters,2013,19(8):2174-2179.

[6]Baggio,Daniel Lélis. Mastering OpenCV with practical computer vision projects[M].Packt Publishing Ltd,2012.

猜你喜欢

中点车道分类器
北斗+手机实现车道级导航应用
例谈圆锥曲线中的中点和对称问题
避免跟车闯红灯的地面车道线
浅谈MTC车道改造
中点的联想
基于实例的强分类器快速集成方法
加权空-谱与最近邻分类器相结合的高光谱图像分类
结合模糊(C+P)均值聚类和SP-V-支持向量机的TSK分类器
准PR控制的三电平逆变器及中点平衡策略
带续流开关的中点箝位型非隔离光伏逆变器