基于OMAP3530平台的车道线识别检测的实现
ht = IMAGEHEIGHT;
fmt.fmt.pix.width = IMAGEWIDTH;
fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;
ioctl(fd, VIDIOC_S_FMT,
———————————————————————
程序段2设置像素格式
(4)申请缓存区,并获取每个缓存的信息
V4l2捕获的数据,是存放在内核空间里的,用户不能直接访问该段内存,必须通过某些方法来转换地址。这里我们采用mmap映射方式,相关代码见程序段3.
图1车道线识别算法流程图
图2路面边缘示意图
图3干扰直线
———————————————————————
req.count=4;
req.type=V4L2_BUF_TYPE_VIDEO_CAPTURE;
req.memory=V4L2_MEMORY_MMAP;
ioctl(fd,VIDIOC_REQBUFS,
———————————————————————
程序段3映射内核空间到用户空间
(5)开始采集视频
type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
ioctl (fd, VIDIOC_STREAMON,
(6)取出缓冲区中已经采样的缓存
ioctl(fd,VIDIOC_DQBUF,
(7)停止采集和关闭设备
int close_v4l2(void)
{ ioctl(fd, VIDIOC_STREAMOFF,
…}
实验测试
本文设计的视频图像采集模块及测试演示系统实物图如图4所示。
在学校外的新兰路上采集到了回旋曲线、抛物线、直线三种结构化道路图像,对采集到的三种道路图像应用车道线识别算法处理,提取出车道标志线,效果图如5所示。从效果图中可以看出该算法基本上对由光照的强弱、对阴影区域和对道路的质量等造成的问题影响不大,表现出很好的识别效果。
图4视频图像采集演示系统
图5三种结构化道路车道线提取效果图
(一)识别效果分析此分析的实验是在MATLAB上进行的。测试评估是通过本文的识别算法的效果与人工扫描获得的图像真实值进行比较得出算法的各项指标。判断识别正确与否的原则是:
(1)当识别的结果与实际值误差在0.5m之内,并且角度变化在8°之内的目标认为是正确识别,否则认为是误识别。
(2)真实值中存在而系统没有识别出来的认为是漏检,误检和漏检都认为是错误识别。
(3)真实值中没有,但是系统识别出来的车道线算是误识别。
根据本文提出的车道线识别算法,分别选取了上述三种结构化道路场景的500帧图像进行测试,识别率对照表如下所示。
(二)响应速度分析
运行MATLAB软件需要耗费很多的系统资源,使得算法在其下的运行速度比较慢,所以不适合用MATLAB进行算法的响应速度测试。本文提出的算法先用C语言实现,然后在Linux环境下使用gettimeofday()函数来计算运行时间。本文算法在Ubuntu Linux平台上的处理时间平均约为27.8ms.
本文提出的车道线识别算法在识别能力和响应速度上都比以往的算法有所提高,能够满足实际应用的需要,但性能还需要进一步的优化。
结束语
基于达芬奇技术的OMAP3530实现了车道线识别检测的功能。ARM核控制OV7670摄像头捕获到道路图像,然后经由DSP/BIOS Link传输到DSP核,由DSP核完成车道线的识别检测,最后提取到清晰的车道标志线。试验结果表明,本算法可以保证车道线识别的准确性、实时性和鲁棒性,能够满足实际需要。
表1两种算法识别率对照表
- 基于移动应用处理器OMAP3530的视频解决方案(06-04)
- QNX 下嵌入式视频监控系统研究(12-07)
- Linux嵌入式系统开发平台选型探讨(11-09)
- 基于ARM体系的嵌入式系统BSP的程序设计方案(04-11)
- 在Ubuntu上建立Arm Linux 开发环境(04-23)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)