多摄像头视频采集系统中摄像头切换方案的设计与实现
2015-10-18浙江工业大学信息工程学院浙江杭州310023浙江省通信网技术应用研究重点实验室浙江杭州310023
陈 斌,彭 宏(1.浙江工业大学 信息工程学院,浙江 杭州 310023;2.浙江省通信网技术应用研究重点实验室,浙江 杭州 310023)
多摄像头视频采集系统中摄像头切换方案的设计与实现
陈 斌1,2,彭 宏1,2
(1.浙江工业大学 信息工程学院,浙江 杭州 310023;2.浙江省通信网技术应用研究重点实验室,浙江 杭州 310023)
目前使用的图像传感器主要有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所示。
图1 硬件框架设计图
DM365的VPFE采集驱动是一个V4L2设备驱动,可以对RGB和YUV数据进行采集。VPFE的简单框架如图 2所示[5]。
图2 VPFE视频处理前端框架图
视频采集前端在接收到原始的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结构体成员函数来进行视频的采集。
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 摄像头软切换
图3 VPFE驱动初始化流程图
此设计中使用了两种视频采集芯片 TVP5151与OV5640,因此会有两个 decoder_device结构体注册到VPFE模块中。摄像头的软切换,也就是对VPFE模块中注册的 decodor_device结构体进行重新选择,决定该调用哪个采集芯片,并对CCDC模块进行相应的配置。于此同时,对多路选择器也要进行相应的配置,使其选择正确的通路。摄像头切换流程如图4所示。
图4 摄像头软切换流程图
首先自然是通过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的扫描方式进行选择。
图5 测试效果图
3 测试结果
测试在实验室的单兵设备上进行。在后置的OV5640摄像头模组和外置的 TVP5151摄像头模组之间进行了切换,外置摄像头更清晰,也更灵活。而内置的则胜在方便、小巧。设计达到了预期目标。测试效果图如图5所示。
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.
Design and imp lementation of camera sw itch scheme in video capture system w ith multi camera based on TMS320DM 365
Chen Bin1,2,Peng Hong1,2
(1.College of Information Engineering,Zhejiang University of Technology,Hangzhou 310023,China;2.Zhejiang Provincial Key Laboratory of Communication Networks and Applications,Hangzhou 310023,China)
The image sensors used currently are mainly CCD and CMOS.The CMOS device has the advantages of low power consumption and high integration degree,but the image quality of CMOS device is not as good as CCD′s.In order to meet different demands,the video capture system with multi cameras proposed in this paper used both CCD and CMOS devices.And this paper proposed the switch scheme of hardware and software between two different kinds of devices,which is based on TMS320DM365 processor from Texas Instruments.
video capture;TMS320DM365;camera switch
TP37
A
1674-7720(2015)24-0047-03
陈斌,彭宏.多摄像头视频采集系统中摄像头切换方案的设计与实现[J].微型机与应用,2015,34(24):47-49.
2015-08-17)
陈斌(1991-),男,硕士研究生,主要研究方向:多媒体数字通信。
彭宏(1970-),女,硕士,副教授,主要研究方向:无线电通信。