论文部分内容阅读
【摘 要】总结目前的网络数字视频监控系统的基础,总结常用的数字视频监控系统的优缺点,提出多路网络数字监控系统的设计方案,该系统是基于TI公司DSP 的四路视频压缩PCI板卡的设计的,通过使用两线总线多路复用器LTC4305,视频卡实现四路同时压缩,并可以通过PCI总线直接与主机相连,将视频压缩流传输给主机,可方便地完成本地存储或者远程传输。
【关键词】数字监控 多路系统 数据采集
一、设计方案选择
目前市面上流行的各种数字视频监控系统的设计方案,可以知道,总体来说有三种设计方案。一是,采用现有的图像采集卡,利用高速的CPU,采用纯软件的方法来完成图像的压缩存储工作。二是,利用现有的图像压缩芯片,自行设计并制作图像采集压缩卡,并且编写相应的软件完成对硬件的控制和用于用户之间的交互工作。三是,以现有的可编程图像采集压缩卡为基础,编写软件完成对硬件的控制和与用户之间的交互工作,而利用硬件完成所需要的图像采集压缩功能,这样做即充分利用了前人的工作成果,又充分发挥了硬件和软件两者的长处,可以快速进行系统的开发工作,当然它的缺点是受到了图像采集压缩卡的限制。使得系统的功能和稳定性受到限制。
比较三种总体方案,可以看出方案三是一个折中方案,它所开发出的功能在可以满足用户要求的前提下是一个切实可行的方案。采用方案三,在监控系统的视频接受端,有两种方法来实现解码,其一是采用硬解压卡,即通过硬件来解压缩;其二是采用软解压,即通过软件来解码,实现视频回放。第一种方法会导致系统成本加大,但解码速度较快,而且系统更稳定;采用第二种方法,可以减少系统的成本,但在解码时会有1~2秒钟的延时。由于在多数应用环境下,这1~2秒钟的延时是允许的,所以本文采用第二种方法。
二、多路数字监控系统设计
本文涉及的多路实时视频监控系统包括监控前端即客户端和监控中心即服务器端,如图1所示。
图1 视频结构系统示意图
监控前端的任务是通过分布在各处的摄像头采集实时监控录像,并根据监控中心发来的监控信号,对视频信号进行相应的压缩,然后进行视频输出。监控前端使用的PC机上可以安装多块视频采集卡,而每块视频采集卡可以实现一卡四路的视频采集和压缩,从而实现多路视频实时监控。
本文所使用的视频压缩卡是一种基于TI公司DSPTMS320DM642的四路视频压缩PCI板卡,该视频卡适用多种压缩算法,例如MPEG1、MPEG2、MPEG4以及H.264等。
摄像头与VideoDecoder SAA7114相连,每个SAA7114对应一个摄像头,即一路输入。SAA7114是飞利浦公司出品的高性能视频解码器。该产品具备高性能梳状滤波器、增强型检测和先进的垂直消隐区间(VBI)数据分片功能。飞利浦半导体的SAA7114可提供双9位低噪音、2x过抽样模拟到数字转换的视频解码器。
经过SAA7114转换得到的数字信号在DSP进行软压缩,适用JPEG、MPEG2、MPEG4、H.264等压缩标准。本视频卡使用的DSP选用了新一代多媒体DSPTMS320DM642。DM642有着基于第二代高性能的VLIW体系结构,该结构使得DSP在数字视频方面有出色的处理能力。
DM642同时实现了一些特定的硬件逻辑,片上存储器和附加的与C6000系列其它芯片类似的外设。DM642内部集成有PCI接口。DM642的PCI接口支持PCI2.2版的33MHz的32位传输。DM642上的I2C模块被DSP用来控制本地外设ICs(比如DACs,ADCs),DM642的SCL0引脚和SDA0引脚上的信号分别被用作I2C总线的时钟与数据。在设计中,I2C总线被用来配置视频解码器SAA7114。I2C包含两条线(SCL与SDA),总线上可以连接多个设备,每个设备有一个唯一的地址,在I2C传输中首先传地址以确定要与哪一个I2C设备通信。
每个连接到I2C总线上的设备,包括通过I2C模块连接到总线上任何C6000DSP,都必须有唯一的地址供其它设备通过I2C总线访问。根据SAA7114用户手册可知,用户可以通过控制视频解码器SAA7114的管脚RTCO来选择SAA7114的从属地址(slave address),即默认情况下,RTCO=0时,从属地址为42H(写地址)/43H(读地址),当RTCO=1时,从属地址为40H(写地址)/41H(读地址),因此连接到一条I2C总线上的SAA7114的数量最多为两个(连接两个SAA7114的时候,可以通过选择管脚RTCO来选择不同的读写从属地址),否则将会产生地址的冲突。本视频卡可以同时采集四路数据,如果把四个视频解码器SAA7114连接到同一根I2C总线上,就无法解决地址冲突问题,也就无法完成四个视频解码器的配置工作。为解决这一困难,采用了两线总线多路复用器LTC4305。
鉴于DSP内部存储器的大小十分有限,因此通过DM642的外部存储器接口连接了外部存储器32MSDRAM。
视频卡插在宿主机上工作时,宿主机通过PCI下载压缩程序并唤醒DSP,然后通过PCI获取压缩程序编码后得到的视频码流,宿主机可以对截取的视频码流进行存储、解码回放、编辑以及远程传输。
三、多路压缩的软件实现
该视频卡支持多种压缩算法例如MPEG1、MPEG2、MPEG4、H.264等。多路压缩可以基于DSP/BIOS的程序来开发。在TASK模块创建三个任务进程(Input Task、Process Task、Output Task),并在SEM模块创建旗语对象来进行线程之间的通信,在DEV模块配置所需的外设,这里包括视频采集端口VP0和VP1。示意图如图2。实现的方案有两种。
图2多路压缩示意图
(一)多路循环压缩方式 在处理线程中,处理线程循环的读取输入线程的数据并依次进行处理。
处理线程的主要代码(C语言)如下:
for(i = 0; i {
//获取第i 路输入缓冲区地址
pMsgBuf =SCOM_getMsg(
fromInputtoProc[i], SYS_FOREVER);
//对输入的数据进行压缩
CHAN_execute (
chanHandle, frameIdx );
//通知输入线程数据已经压缩
SCOM_putMsg(
fromProctoIn[i],
&(thrProcess.scomMsgTx));
}
其中有一点需要指出的是,在上述代码中SCOM_getMsg中的参数SYS_FOREVER是控制变量,表示假如该线程输入数据没有准备好处理线程等待的时间,可以根据实际情况任意设置时间。
(二)多路合并压缩方式
多路合并,需要在压缩之前对四路视频数据进行合并,即将多路输入视频数据合并成一路数据,然后输入到处理线程进行处理,宿主机通过PCI读取产生的视频流。
显然,这两种方法各有优缺点。多路循环比多路合并更加简单,多路合并需要在宿主机上实现多幅图像的分离,加重了宿主机的负担;同时,多路循环产生的数据量要比多路合并产生的数据量略大。
四、结束语
本文完整地介绍了基于DSP的四路视频监控系统的设计与实现。多路食品监控系统中如何处理和传输庞大的视频数据是整个系统的重点和难点。在目前的条件下,由于有限并经常波动的网络带宽以及服务器端实时解码、回放的巨大压力,因而服务器端不能根据自己的网络条件得到一个满意的视频质量。所以在视频监控系统中如何处理好大数据的管理是以后研究的方向。
参考文献:
[1]陈龙.数字化和网络化是安防系统发展的大趋势.电气与智能建筑.2001.5
[2]陈龙.为什么数字监控系统正取代模拟系统.智能建筑资讯 第6 期.2002.7
【关键词】数字监控 多路系统 数据采集
一、设计方案选择
目前市面上流行的各种数字视频监控系统的设计方案,可以知道,总体来说有三种设计方案。一是,采用现有的图像采集卡,利用高速的CPU,采用纯软件的方法来完成图像的压缩存储工作。二是,利用现有的图像压缩芯片,自行设计并制作图像采集压缩卡,并且编写相应的软件完成对硬件的控制和用于用户之间的交互工作。三是,以现有的可编程图像采集压缩卡为基础,编写软件完成对硬件的控制和与用户之间的交互工作,而利用硬件完成所需要的图像采集压缩功能,这样做即充分利用了前人的工作成果,又充分发挥了硬件和软件两者的长处,可以快速进行系统的开发工作,当然它的缺点是受到了图像采集压缩卡的限制。使得系统的功能和稳定性受到限制。
比较三种总体方案,可以看出方案三是一个折中方案,它所开发出的功能在可以满足用户要求的前提下是一个切实可行的方案。采用方案三,在监控系统的视频接受端,有两种方法来实现解码,其一是采用硬解压卡,即通过硬件来解压缩;其二是采用软解压,即通过软件来解码,实现视频回放。第一种方法会导致系统成本加大,但解码速度较快,而且系统更稳定;采用第二种方法,可以减少系统的成本,但在解码时会有1~2秒钟的延时。由于在多数应用环境下,这1~2秒钟的延时是允许的,所以本文采用第二种方法。
二、多路数字监控系统设计
本文涉及的多路实时视频监控系统包括监控前端即客户端和监控中心即服务器端,如图1所示。
图1 视频结构系统示意图
监控前端的任务是通过分布在各处的摄像头采集实时监控录像,并根据监控中心发来的监控信号,对视频信号进行相应的压缩,然后进行视频输出。监控前端使用的PC机上可以安装多块视频采集卡,而每块视频采集卡可以实现一卡四路的视频采集和压缩,从而实现多路视频实时监控。
本文所使用的视频压缩卡是一种基于TI公司DSPTMS320DM642的四路视频压缩PCI板卡,该视频卡适用多种压缩算法,例如MPEG1、MPEG2、MPEG4以及H.264等。
摄像头与VideoDecoder SAA7114相连,每个SAA7114对应一个摄像头,即一路输入。SAA7114是飞利浦公司出品的高性能视频解码器。该产品具备高性能梳状滤波器、增强型检测和先进的垂直消隐区间(VBI)数据分片功能。飞利浦半导体的SAA7114可提供双9位低噪音、2x过抽样模拟到数字转换的视频解码器。
经过SAA7114转换得到的数字信号在DSP进行软压缩,适用JPEG、MPEG2、MPEG4、H.264等压缩标准。本视频卡使用的DSP选用了新一代多媒体DSPTMS320DM642。DM642有着基于第二代高性能的VLIW体系结构,该结构使得DSP在数字视频方面有出色的处理能力。
DM642同时实现了一些特定的硬件逻辑,片上存储器和附加的与C6000系列其它芯片类似的外设。DM642内部集成有PCI接口。DM642的PCI接口支持PCI2.2版的33MHz的32位传输。DM642上的I2C模块被DSP用来控制本地外设ICs(比如DACs,ADCs),DM642的SCL0引脚和SDA0引脚上的信号分别被用作I2C总线的时钟与数据。在设计中,I2C总线被用来配置视频解码器SAA7114。I2C包含两条线(SCL与SDA),总线上可以连接多个设备,每个设备有一个唯一的地址,在I2C传输中首先传地址以确定要与哪一个I2C设备通信。
每个连接到I2C总线上的设备,包括通过I2C模块连接到总线上任何C6000DSP,都必须有唯一的地址供其它设备通过I2C总线访问。根据SAA7114用户手册可知,用户可以通过控制视频解码器SAA7114的管脚RTCO来选择SAA7114的从属地址(slave address),即默认情况下,RTCO=0时,从属地址为42H(写地址)/43H(读地址),当RTCO=1时,从属地址为40H(写地址)/41H(读地址),因此连接到一条I2C总线上的SAA7114的数量最多为两个(连接两个SAA7114的时候,可以通过选择管脚RTCO来选择不同的读写从属地址),否则将会产生地址的冲突。本视频卡可以同时采集四路数据,如果把四个视频解码器SAA7114连接到同一根I2C总线上,就无法解决地址冲突问题,也就无法完成四个视频解码器的配置工作。为解决这一困难,采用了两线总线多路复用器LTC4305。
鉴于DSP内部存储器的大小十分有限,因此通过DM642的外部存储器接口连接了外部存储器32MSDRAM。
视频卡插在宿主机上工作时,宿主机通过PCI下载压缩程序并唤醒DSP,然后通过PCI获取压缩程序编码后得到的视频码流,宿主机可以对截取的视频码流进行存储、解码回放、编辑以及远程传输。
三、多路压缩的软件实现
该视频卡支持多种压缩算法例如MPEG1、MPEG2、MPEG4、H.264等。多路压缩可以基于DSP/BIOS的程序来开发。在TASK模块创建三个任务进程(Input Task、Process Task、Output Task),并在SEM模块创建旗语对象来进行线程之间的通信,在DEV模块配置所需的外设,这里包括视频采集端口VP0和VP1。示意图如图2。实现的方案有两种。
图2多路压缩示意图
(一)多路循环压缩方式 在处理线程中,处理线程循环的读取输入线程的数据并依次进行处理。
处理线程的主要代码(C语言)如下:
for(i = 0; i
//获取第i 路输入缓冲区地址
pMsgBuf =SCOM_getMsg(
fromInputtoProc[i], SYS_FOREVER);
//对输入的数据进行压缩
CHAN_execute (
chanHandle, frameIdx );
//通知输入线程数据已经压缩
SCOM_putMsg(
fromProctoIn[i],
&(thrProcess.scomMsgTx));
}
其中有一点需要指出的是,在上述代码中SCOM_getMsg中的参数SYS_FOREVER是控制变量,表示假如该线程输入数据没有准备好处理线程等待的时间,可以根据实际情况任意设置时间。
(二)多路合并压缩方式
多路合并,需要在压缩之前对四路视频数据进行合并,即将多路输入视频数据合并成一路数据,然后输入到处理线程进行处理,宿主机通过PCI读取产生的视频流。
显然,这两种方法各有优缺点。多路循环比多路合并更加简单,多路合并需要在宿主机上实现多幅图像的分离,加重了宿主机的负担;同时,多路循环产生的数据量要比多路合并产生的数据量略大。
四、结束语
本文完整地介绍了基于DSP的四路视频监控系统的设计与实现。多路食品监控系统中如何处理和传输庞大的视频数据是整个系统的重点和难点。在目前的条件下,由于有限并经常波动的网络带宽以及服务器端实时解码、回放的巨大压力,因而服务器端不能根据自己的网络条件得到一个满意的视频质量。所以在视频监控系统中如何处理好大数据的管理是以后研究的方向。
参考文献:
[1]陈龙.数字化和网络化是安防系统发展的大趋势.电气与智能建筑.2001.5
[2]陈龙.为什么数字监控系统正取代模拟系统.智能建筑资讯 第6 期.2002.7