车载后视场景分布式视频监控系统 -
[导读] 引言据媒体报道,我国由于后视镜盲区造成的交通事故约占30%。而且,随着“考驾照”热不降温的现象出现,未来的汽车后视镜盲区问题更是不容小觑。数字社会的形成
引言
本文引用地址: http://www.21ic.com/app/auto/201505/624384.htm
据媒体报道,我国由于后视镜盲区造成的交通事故约占30%。而且,随着“考驾照”热不降温的现象出现,未来的汽车后视镜盲区问题更是不容小觑。数字社会的形成为数字化实时监控提供了契机,汽车后视场景的数字化实时监控成为解决后视镜盲区问题的研究热点。
目前,市场上已经出现了一些数字化的汽车监控系统,常见的有分屏显示的监控系统、有缝拼接的监控系统和第8代“卫星”全景行车安全系统。分屏显示的监控系统只是对图像进行简单的分屏显示,不能实时地将车辆周围的景象显示在屏幕上;有缝拼接的监控系统不是将图像简单地叠加,而是对图像拼接处理,形成中间是车子,周围是图像的全景图,缺点在于四个图像拼接之处存在明显的拼接缝;第8代“卫星”全景行车安全系统采用超广角摄像头,它能够更好地消除图像拼接之处的拼接缝,形成汽车全景俯视图。
Android系统具有平台开放性,而且谷歌的“开放汽车联盟(OAA)”致力于实现汽车与Android设备的无缝连接以及直接在汽车上内置Android车载系统;DM3730
集成了1GHz的ARM Cortex-A8核和800MHz的TMS320C64x+ DSP核,DSP在数字信号处理上具有无可比拟的优势,更适合进行图像处理。因此,基于Android和DM3730设计的车载分布式视频监控系统有着广阔的应用前景。
车载分布式视频监控系统集成了Android平台的开放性、ARM+DSP的高性能、以太网的可扩展性和USB摄像头的即插即用性,对实现汽车数字化实时监控有研究意义和应用价值。
1系统的整体设计
车载分布式视频监控系统由视频采集模块、视频传输模块、视频拼接模块和视频显示模块四个模块组成。图1展示了系统的整体设计,图2展示了系统各模块之间的硬件接口。

图1 车载分布式视频监控系统整体设计示意图

图2 车载分布式视频监控系统硬件接口框图
① 视频采集模块:AM3715开发板通过USB-HOST接口外接USB摄像头,通过Android操作系统的Java本地调用接口[3](JNI)和V4L2 (video 4 linux 2)视频驱动框架实时采集视频并显示。
② 视频传输模块:两个(或多个)AM3715和DM3730开发板之间通过以太网相连,利用RTP组播协议和自定义同步机制将USB摄像头采集的图像实时传输至DM3730开发板的ARM端。
③ 视频拼接模块:DM3730开发板的ARM端运行嵌入式Linux操作系统(或Android操作系统),通过TI Codec Engine模块同时在ARM端和DSP端映射共享内存,使得同步接收的两幅(或多幅)图像能够被ARM和DSP同时访问。针对车载应用扩充嵌入式计算视觉库(EMCV),并移植和优化SURF开源项目OpenSURF,DSP端能够实时拼接两幅(或多幅)图像,最后将拼接结果由共享内存返回ARM端。
④ 视频显示模块:视频显示是通过跨平台多媒体库SDL(Simple DirectMedia Layer)来完成的。其中,AM3715开发板显示分离的USB摄像头图像,DM3730开发板显示拼接完成的图像。
2 视频采集传输和显示
2.1 Android V4L2视频采集模块
V4L2从Linux 2.5.x版本的内核开始出现,为使能UVC驱动和V4L2编程框架,首先需检查Android内核配置选项,以生成视频设备文件/dev/videoX(X表示次设备号)。
利用V4L2进行USB摄像头视频采集的流程[7]包括:(1)打开视频设备文件;(2)检查设备属性;(3)设置视频格式;(4)帧缓冲区管理;(5)循环采集视频;(6)关闭视频设备。
V4L2介于应用程序和硬件设备之间,应用程序可以通过三种方式访问内核层的数据:直接读/写方式、内存映射方式和用户指针方式。直接读/写方式需要在用户空间和内核空间不断拷贝数据,效率低下;内存映射方式把内核地址映射到用户地址空间,进程可以直接读写内存,避免了数据的拷贝,具有较高的效率;用户指针方式的内存片段是由应用程序自己分配的。
车载分布式视频监控系统采用效率较高的内存映射方式,系统调用mmap()能够将内核地址映射到用户地址空间。
2.2 RTP视频传输模块
鉴于以太网具有高速的传输能力和良好的可扩展性能,车载分布式视频监控系统通过RTP组播的方式在Android系统与嵌入式Linux系统之间传输USB摄像头采集的图像。文献[8]描述了利用RTP库JRTPLIB实现视频实时传输的过程。为了确保两个AM3715开发板与DM3730开发板之间图像传输的同步性,车载分布式视频监控系统设计了同步传输协议,协议描述如下:
(1)发送端
① 每个发送端等待来自接收端的视频帧请求命令’R’,否则不执行发送操作。
② 收到帧请求命令后,发送端首先向组播地址发送视频帧传输开始标识0xFE,以标识一帧视频传输的开始。
③ 将YUY2格式的图像依次向组播地址传输,每次传输m行,传输n次,并在每个RTP数据包的首字节位置添加RTP包传输序号(序号从0开始,依次增1)。假设YUY2图像宽度为width,高度为height,由于平均一个像素占2B,所以每次传输的RTP包数据大小为(2m*width+1)B,传输次数n = height/m。
④ 传输结束时,向组播地址发送视频帧传输结束标识0xFF,以标志一帧视频传输的结束。
(2)接收端
① 接收端向组播地址发送帧请求命令’R’,然后启动软件电子狗,并处于阻塞等待状态。
② 若软件电子狗计时结束时仍未被喂狗,说明网络通信出现故障,重新向组播地址发送帧请求命令’R’,并重启软件电子狗。
③ 依次接收来自每个发送端的RTP数据包,并根据IP地址和RTP包传输序号还原每帧视频,直至收到视频帧传输结束标识0xFF。
2.3 SDL视频显示模块
YUV格式在存储方式上分为打包格式(Packed Format)和平面格式(Planner Format),打包格式的Y、U、V三个分量连续交叉存储,而平面格式的Y、U、V三个分量分开存储。实验中USB摄像头采集的图像格式是YUY2格式,而经过拼接完成的图像是YV12格式。YUY2格式是一种打包格式,以4:2:2方式打包,每个像素保留Y分量,而UV分量在水平方向上的采样率仅为Y分量的1/2,即存储顺序为[Y0 U0 Y1 V0] [Y2 U2 Y3 V2] ……[Y2n U2n Y2n+1 V2n]。YV12是一种平面格式,UV分量在水平方向和垂直方向上的采样率均为Y分量的1/2。特殊地,YV12格式在UV提取时,需先将图像划分为若干个2 x 2的方阵,然后在每个方阵上提取一个U分量和一个V分量。例如,对于6x4的图像,YV12的采样方式如下图所示,其存储顺序为[Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 Y13 Y14 Y15 Y16 Y17 Y18 Y19 Y20 Y21 Y22 Y23] [U0 U1 U2 U3 U4 U5] [V0 V1 V2 V3 V4 V5 V6]。
查看评论 回复