计算机应用研究
APPLICATION RESEARCH OF COMPUTERS
2000 Vol.17 No.3 P.73-75




分布式智能监控系统视频多画面显示的设计与实现
卢选民　张原　史浩山
摘　要：详细讨论了基于计算机网络的分布式智能视频监控系统视频多画面显示的设计原理和实现方法，给出了在局域和广域网络环境下分布式智能视频监控系统的硬件结构和视频切换卡的设计与应用，并给出了最终采用分时机制和消息映射模式实现视频多画面显示的软件编程。
关键词：视频监控 视频切换 分时机制 消息映射
1　引言
　　计算机技术、通信技术和网络技术的快速发展，加快了数字监控取代模拟监控的步伐，数字化视频监控已成为视频监控发展的必然趋势。数字化监控不仅可以利用计算机网络和先进的视音频压缩、解压缩技术实现远程视频监控，还可根据报警功能需求设置灵活多样的报警联动，生成详细的报警记录和操作记录数据库，设计完善的系统用户权限管理等功能。在充分考虑数字化监控系统所应有特点的前提下，我们设计了基于C/S模式的分布式智能视频监控系统。本系统多媒体软件的设计以Microsoft Windows 95为操作控制平台，设计的显示图象和图形界面规范、友好。对视频、音频多媒体信息的编程采用了Windows下的VFW多媒体开发制作平台和Visual C++语言编写，采用先进的窗口技术和计算机管理控制技术，实现了多媒体监控网络系统的功能要求。系统不仅具有数字监控系统所必备的特点，还具有动态视频路由选择、视频桥和远程视频代理功能。并具有1～16多窗口视频显示和动、静态视频捕捉功能，灵活的报警信息过滤功能，外接电视墙、监视器功能，图形化的报警布防信息设置和显示功能，以及完善的系统和外设异常处理功能，在实际应用中取得了比较满意的效果。
　　系统图象监视功能包括计算机屏幕上实时显示多幅动态图象；实现多画面与单画面的相互切换；视频图象信号的输入输出以8(8为基本单元，并可根据需要随意扩展；循环显示多路视频图象画面和音频声音等。
　　在VGA监视器上实现多画面的显示，就是在VGA监视器的不同区域上显示多路CCD摄像头图象信号，以便对多个地点同时进行观测。一般有两种实现方法：
　　第一种是通过多块视频叠加卡实现多路图象信号同时显示，即每块视频卡接一路图象信号。这种方法效果好，多路图象信号在监视器不同区域上各自独立地同步显示，彼此不受影响。缺点是实现代价太高，多一路图象信号就要多一块视频叠加卡，而且还受计算机扩展槽个数的限制。
　　第二种方法是采用一块视频叠加卡实现多路信号分时显示，即在一块视频叠加卡的图象来源上接入视频切换卡，通过视频切换卡接入多个视频源信号。这种方法的优点是成本低，可以直切到某个视频源上单幅画面动态显示，也可以通过轮切的方式实现多幅画面的同时显示，最多可达16画面，并且各个图象视窗的尺寸可根据需要用鼠标拖动随意缩放；缺点是多画面显示时，各个图象信号是在VGA监视器不同区域上分时显示，因而图象有跳动感。当画面的个数比较少，并且采用高速切换开关，同时分时的时间控制恰当时，还是可以做到多画面同时动态显示的效果。其工作原理如图1所示。

图1　视频多画面显示工作原理
2　视频多画面显示的硬件结构
2.1　系统硬件结构
　　根据系统的具体要求，我们采用第二种方法实现视频的多画面显示功能。依此我们构架了系统的硬件结构(如图2所示)，视频主机作为本地局网上的一个结点，可以通过LAN与本地其它视频主机以10/100Mbps速率交换信息，可通过DDN、PSTN、ATM等广域网或园区网与远程视频主机相连。系统中每台视频主机视具体情况可分别接8、16、32、64、128路视频输入，系统以定时轮切和手动切换方式在1～16多窗口中动态实时显示一路视频输入，系统对接入视频的监控是通过视频矩阵切换卡实现的，矩阵切换卡可实现输入输出端的全连通性。

图2　系统硬件结构
2.2　视频切换卡
　　视频切换卡是专为视频信号切换而设计的。它是由一组视频开关矩阵组成的16路输入8路输出开关阵列。在16路输入中，每一路都可以根据不同的控制命令切换到8路输出中的任何一路。其原理框图如图3所示。

图3　视频切换卡原理框图
　　输入和输出组成了一个阵列。输入相当于行，输出相当于列。在行列交叉点上都有一个开关。开关的接通与否由控制寄存器控制。在输出所在的列上，每次只能有一行接通。这样，每路输出都可以与任何一路输入接通。从而达到信号的切换。
　　目前市面上有多种视频矩阵切换芯片可供选择，我们选择了MAXIM公司的MAX456芯片，它不但具有串、并行数字接口，还具有通道隔离度高等特点，MAX456有8个输入端和8个输出端，通过多块MAX456可以设计出16(8(16输入，8输出)、32(16等多种规格的视频矩阵切换卡，为达到输入输出的全连通性，16(8需要2片MAXIM456，32(16需要8片MAXIM456，当需要更多的输入输出时，考虑到切换卡不能太大，可以采用多块32(16级连的方式。
　　最后，我们设计实现的视频切换卡引线插座位置可如图4所示。

图4　视频切换卡引线插座示意图
　　1)输出输入引线
　　输出输入引线为DB-51型插座，其对应关系为：引脚1～8对应输出第一路到第八路；引脚11～26对应输入第一路到第十六路。其余引脚为地线。
　　2)扩展引线
　　IN1、IN2、OUT为扩展插座，用以扩展输入输出通道数使用。
　　3)DIP拨码开关
　　本开关用以选择本卡地址编码。具体使用见地址选择部分。
　　4)负载跳线开关
　　LOAD1为内外负载跳线开关，用来选择内外负载。当单块卡独立使用时，LOAD1接“+”，断开“-”。当扩展使用时，如果几块卡输出相连(即扩展输入时)，只能有一块卡LOAD1接“+”，其余卡均接“-”。
　　每块视频切换卡都用一个8位DIP拨码开关来选择该卡的地址码，其对应关系为：DIP开关的第一位对应PC机地址总线的A2。第八位对应A9。用户可以根据实际情况选择不同地址。当用户要求输入大于16路，输出大于8路时，可用多块卡来扩展输入或输出的数目。扩展连接示意如图5所示。

图5　视频切换卡的扩展连接
　　该图是一扩展为32路输入，16路输出的示意图。如图把左半部或右半部取掉，就是一个16路输入16路输出的扩展。如果把上半部或下半部取掉，就是一个32路输入8路输出的扩展。用户也照此办法，将其扩展到更大的组合。
3　视频多画面显示的软件实现
　　要实现视频多画面分时显示，首先必须有分时的机制。在本系统中，通过Set Timer函数建立定时器，每隔一定时间发送一次WM_TIMER消息。
Void TVideoWindow::WMCreate(RTMessage) 
　　　　　　　　　　　　　　//接收WM_CREATE消息
{
Twindow::Setup Window();
　if(SetTimer(Hwindow,VIDEO,TIMEGAP1,NULL)==NULL)
MessageBox(NULL,“定时器建立不成功”,
　　　　　　　　“错误信息提示”,MB_OKCANCEL);
}
　　当消息处理函数接收到WM_TIMER消息后，用FreezeVideo( )冻结目前的活动图象，然后用SetVideoSource( )函数把视频来源切换到下一个，并用SetVideoScaling( )设置图象长宽的大小，最后用SetCaptureAddress( )函数设置下一个活动图象的显示位置。这样，活动画面就由前一个转到后一个，实现视频图象的分时显示。程序逻辑如图6所示。

图6　程序实现流程图
Void TVideoWindow::WMTimer(Tmessage&msg)
　　　　　　　　　　　　　　　　//接收WM_TIMER消息
{
if(msg.Wparam==VIDEO)
　{
　　int i；
　　int Width=xWinWidth/2；
　　int skew=Width/10；
　　if(wVideoSource==2)wVideoSource=0；
　　FreezeVideo()；
　　SetVideoSource(wVideoSource)；
　　SetVideoScaling(Width-skew,yWinHeight,TRUE)；
　　if(wVideoSource==0)
　　　SetCaptureAddress(0,0)；
　　else
　　　SetCaptureAddress(Width+skew,0)；
　　i=wVideoSource；
　　UnFreezeVideo()；
　　WVideoSource++；
　}
}
　　在本系统的研制与开发中，我们采用视频矩阵切换芯片来实现视频切换。但是在实际应用中，我们发现其切换速度还是受到一定限制。在实现多画面动态显示的过程中，当画面的个数较多时图象还是无法消除跳动感，这主要是由于硬件原因造成的。要真正消除这种画面跳动感，只有从硬件着手。一种可选的方案就是采用目前正在发展并不断成熟的新型图象捕捉卡来代替视频切换卡，这种图象捕捉卡在实现视频多画面动态显示时的工作原理和多画面分割器基本类似，只不过多画面分割器是模拟的，而图象捕捉卡是数字的，并采用总线结构，可快速实现多路视频信号的输入和轮流采集，最后以时分复用方式输出一路数字信号。这样，通过软件编程分时，就可直接实现多画面在监视器不同分区以15帧/秒的速度显示，从而较好地解决了画面的跳动问题。但从软件编程角度来讲，与我们所采用的方法是一致的。
卢选民(西北工业大学电子工程系 西安 710072)
张原(西北工业大学电子工程系 西安 710072)
史浩山(西北工业大学电子工程系 西安 710072)
参考文献
1 Andrew S.Tanenbaum. Computer Networks(Third Edition), Prentice-Hall International, Inc., 1996
2 Microsoft Corparation, Visual C++ 6.0 Online Help
3 王中平, 魏 云, 王 毅. 计算机MULTIMEDIA多媒体实用技术. 西安：陕西电子出版社, 1993
收稿日期：1999年9月9日
