《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 多摄像头视频采集系统中摄像头 切换方案的设计与实现
多摄像头视频采集系统中摄像头 切换方案的设计与实现
陈 斌1,2,彭 宏1,2
(1.浙江工业大学 信息工程学院,浙江 杭州 310023; 2.浙江省通信网技术应用研究重点实验室,浙江 杭州 310023)
摘要: 目前使用的图像传感器主要有CMOS和CCD两类。CMOS器件功耗低、集成度高,但成像质量不如CCD器件好。因此该多摄像头视频采集系统采用了CCD和CMOS两种器件,以满足多种需求。提出了一种基于TI公司TMS320DM365处理芯片、采用CCD和CMOS器件的摄像头软硬件切换设计方案。
Abstract:
Key words :

  摘  要: 目前使用的图像传感器主要有CMOS和CCD两类。CMOS器件功耗低、集成度高,但成像质量不如CCD器件好。因此该多摄像头视频采集系统采用了CCD和CMOS两种器件,以满足多种需求。提出了一种基于TI公司TMS320DM365处理芯片、采用CCD和CMOS器件的摄像头软硬件切换设计方案。

  关键词: 视频采集;TMS320DM365;摄像头切换

  0 引言

  近年来,随着移动终端的快速发展,计算能力增强,移动网络传输速度大幅提高,移动视频监控技术发展迅速。目前国内外视频监控业务主要应用在公共领域、行业用户和个人用户。特别是在公共场所,国外设置了众多监控设备,以加强对公共领域安全的控制能力[1]。嵌入式视频采集系统具有高效、体积小、实时稳定、低成本等优点[2],自然而然地成为了视频监控设备的良好载体。

  目前使用的图像传感器有CMOS(互补金属氧化物半导体)和CCD(电荷耦合器件)两类。与CCD相比,CMOS器件具有功耗低、集成度高等优点,但是在噪点和成像质量方面不如CCD器件[3]。而CCD器件则刚好相反。所以在本设计中,采用了CCD与CMOS搭配的设计。其中CCD器件搭配TVP5151视频解码芯片,外置的CCD摄像头能够提供更灵活、更清晰的视频图像。CMOS则是采用了OV5640的模组,利用其集成度高、体积小的特点,作为内置的视频采集摄像头,满足视频聊天等一般成像需求。

1 硬件框架设计

  整个视频采集系统终端以TMS320DM365芯片作为处理器芯片,基本模块有DDR2、SDRAM、NAND Flash、网口、串口以及负责进行信令和视频数据传输的3G模块等。TI公司的基于DaVinci技术的TMS320DM365芯片,集成了一颗ARM926EJ-S内核,一个图像处理子系统(VPSS),一个H.264高清编码器协处理器HDVICP和一个MPEG-4/JPEG高清编码器协处理器MJCP,支持多格式编解码[4],所以特别适用于图像处理。视频采集部分主要由DM365的VPFE(视频处理前端)、一个多路转换器和两个视频数据采集芯片(OV5640和TVP5151)组成。摄像头硬件切换由DM365的GPIO口对多路转换器进行控制,选择输入到VPFE的数据源。

  系统硬件框架设计图如图1所示。

001.jpg

  DM365的VPFE采集驱动是一个V4L2设备驱动,可以对RGB和YUV数据进行采集。VPFE的简单框架如图2所示[5]。

002.jpg

  视频采集前端在接收到原始的YUV视频数据后,可以对数据进行存储,同时又将视频数据通过内部的数据总线传输到图像处理模块。此时可对图像数据进行裁剪、缩放等,以适应本地存储或者网络上传的需求。

  视频采集前端在接收到原始的YUV视频数据后,可以对数据进行存储,同时又将视频数据通过内部的数据总线传输到图像处理模块。此时可对图像数据进行裁剪、缩放等,以适应本地存储或者是网络上传的需求。

2 软件设计

  2.1 VPFE模块驱动

  TMS320DM365数字多媒体芯片包含一个视频处理模块用来处理视频数据,减轻主处理器的负担。它支持大多数主流的外置视频采集设备。而与外置视频采集设备直接相连的就是视频处理前端子系统(VPFE)。

  VPFE采集驱动通过标准的V4L2接口将底层硬件的功能暴露给了上层应用程序,在应用程序和设备驱动之间建立起了桥梁[6]。VPFE驱动初始化开始后,首先通过imp_get_hw_if()函数和ccdc_get_hw_interface()函数绑定imp和CCDC的接口函数组,随后对CCDC模块进行初始化。初始化CCDC模块之后,驱动会分配需要的内存用来存储采集上来的视频数据。最后,便是调用driver_register(&vpfe_driver)函数和platform_device_register(&_vpfe_device)函数注册驱动和平台设备。系统启动时,检测到其驱动和设备都存在后,就会调用vpfe_prob()函数,这个函数做的最重要的事情就是调用video_register_device()函数绑定了file_operations结构体,提供给应用程序访问内核与设备驱动的接口。同时生成一个设备文件节点(/dev/Video0),这样,应用程序就能通过访问/dev/Video0设备文件节点,配合Ioctl函数调用VPFE驱动中file_operations结构体成员函数来进行视频的采集。

003.jpg

  VPFE初始化流程图如图3所示。在此设计中采用了两种视频采集芯片,分别为德州仪器的TVP5151和豪威科技的OV5640。这两种芯片的驱动程序中,在完成标准的I2C设备注册的工作后,都会调用vpif_register_decoder(&ov5640_dev[i])或是vpif_register_decoder(&TVP5151 _dev[i])函数将采集芯片的各种操作函数接口封装成一个struct decoder_device结构体注册到前面提到的VPFE模块中。这样,应用程序就可以通过VPFE的设备文件节点(/dev/Video0)来调用VPFE的操作函数,进而再间接地调用采集设备的操作函数,完成视频采集芯片的配置工作,使得其能够正常工作。

  2.2 摄像头软切换

  此设计中使用了两种视频采集芯片TVP5151与OV5640,因此会有两个decoder_device结构体注册到VPFE模块中。摄像头的软切换,也就是对VPFE模块中注册的decodor_device结构体进行重新选择,决定该调用哪个采集芯片,并对CCDC模块进行相应的配置。于此同时,对多路选择器也要进行相应的配置,使其选择正确的通路。摄像头切换流程如图4所示。

004.jpg

  首先自然是通过3个GPIO口来配置多路选择器选择正确的通路,使得DM365可以获取到来自正确的采集芯片的视频数据。VIDIOC_ENUMINPUT命令会通过VPFE模块调用到注册到VPFE模块中的采集芯片驱动的操作函数enuminput,从而依次检索注册到VPFE中的各个decoder_device结构体中是否有需要的input_info,并返回对应的decoder_device的序号。所以只需要在调用VIDIOC_ENUMINPUT命令时传入与所需要采集芯片驱动中相同的input类型,便可以找到对应的decoder_device,从而切换到对应的摄像头。得到正确的decoder_device序号后,即可用VIDIOC_S_INPUT命令,调用到采集芯片驱动中的initialize函数,完成其初始化。

  切换到正确的视频数据源以后,还要对CCDC模块进行对应的设置。这时需要调用命令VIDIOC_S_STD:ioctl(fd,VIDIOC_S_STD,&std),它会调用到视频采集芯片驱动中的setstd函数,进而对驱动中的struct v4l2_standard结构体数组进行便利,找到其中数据成员ID与VIDIOC_S_STD命令传入参数std相同的项,返回其name成员,并将其作为ccdc_hw_if->setstd()函数的参数执行,便可以对CCDC模块的分辨率、帧率等信息进行设置。例如,当检索到的name值为“VGA-30”时,CCDC模块分辨率便会被设置成640×480,帧率为30 FPS。

  2.3 扫描方式的切换

  此设计方案中用到的两种视频采集芯片的扫描方式是不同的。TVP5151是隔行扫描,一帧分为奇偶两场,而OV5640是逐行扫描。VPFE模块对于这两种扫描方式的处理方式是不同的,所以完成摄像头的切换后,还要把CCDC模块扫描方式设定成与对应的视频采集芯片一致。在VPFE驱动中,有一个标志位frame_format就是用来表示扫描方式的,frame_format为0时表示隔行扫描,即使用TVP5151;为1时就表示逐行扫描,即使用OV5640。原本ccdc_hw_if->setstd()函数还可以对扫描方式进行设定,但是由于本设计所使用的内核版本的缺陷,设定无法生效,所以添加了一个小补丁:在内核VOFE驱动中声明了一个变量scanmode,并使用EXP ORT_SYMBOL(scanmode)使之成为内核全局变量。然后分别在TVP5151和OV5640驱动的intialize函数中对其进行赋值。TVP5151为隔行扫描,故对其赋0,OV5640则相反。这样,每次切换摄像头后,在初始化采集芯片的同时也会对CCDC的扫描方式进行选择。

3 测试结果

  测试在实验室的单兵设备上进行。在后置的OV5640摄像头模组和外置的TVP5151摄像头模组之间进行了切换,外置摄像头更清晰,也更灵活。而内置的则胜在方便、小巧。设计达到了预期目标。测试效果图如图5所示。

005.jpg

4 结论

  嵌入式芯片技术的快速发展,使其在视频监控设备总的应用越来越广泛。同样发展迅速的还有视频采集芯片。本文设计实现了基于TMS320DM365硬件平台的多摄像头软硬件切换方案,采用了CMOS和CCD两种器件,实现了不同厂家型号、不同扫描方式的视频采集芯片模组之间的顺畅切换。这在视频采集芯片发展越来越多样化的今天,有一定的意义。

  参考文献

  [1] 苗润生.3G移动视频监控业务的应用与发展[D].北京:北京邮电大学,2010.

  [2] 李佳林,刘永春.基于S3C2440网络视频采集系统的设计与实现[J].电脑知识与技术,2014(6):1314-1316, 1325.

  [3] 王旭东,叶玉堂.CMOS与CCD图像传感器的比较研究和发展趋势[J].电子设计工程,2010(11):178-181.

  [4] 徐凯,钱燕,魏宗群,等.基于TMS320DM365的3G实时视频传输系统设计与实现[J].浙江农业科学,2012(7):1056-1059.

  [5] Texas Instruments. Davinci Linux VPFE Capture Driver [EB/OL]. [2015-07-15]. http://www.ti.com/lit/an/sprs566a/ sprs566a. pdf.2015.2.

  [6] 潘力策,孟利民.基于DM365的双码流视频监控设备的设计与实现[J].微型机与应用,2015,34(10):41-43,47.


此内容为AET网站原创,未经授权禁止转载。