文献标识码: A
文章编号: 0258-7998(2011)01-0114-03
现有的远程监控系统在实现原理上大致分为两类,一类为基于传统Internet的有线式远程监控系统,另一类为基于GSM等无线移动网络的监控系统[1],后者在工程造价、产品维护和市场前景上有绝对的优势。但现有的无线监控设备功能相对单一。随着3G" title="3G" target="_blank">3G等高速无线网络的普及,基于无线网络的综合监控系统将成为新的研究热点。“远程无线综合监控系统”正是利用了无线网络,实现对多个分散的远程地点的综合监控,如视频、温度、电气设备使用情况等。还可以根据需要增加如湿度监测等其他监测。由于其具有良好的适应性以及相对低廉的价格,易于进行推广,有广阔的市场前景。
1 系统整体设计
本系统采用两台计算机分别作为客户机和服务机,服务端由服务机及以单片机为中心的各个控制模块组成,包括摄像头采集图像模块、云台控制模块、无线发送和接收模块及现场监控模块。现场监控模块具有温度采集、人体红外检测、电气设备通断控制和声光报警功能。现场监控模块与服务机之间通过无线传输模块进行数据传输,使现场监控模块不受服务机位置的限制,而且可为多个,分别监控不同地点的数据。服务机接收到图像信息、温度和红外等数据后,将其压缩打包,通过3G网络发送给客户机。客户机接收到图像后通过双线性内插算法对图像进行呈现,并实时显示被检测环境数据,如绘制现场温度曲线、电气通断状态、有人进入时报警等,而且能远程控制现场电气的状态。系统整体框图如图1所示。
2 服务机编程实现
2.1 MFC程序构架
远程控制端MFC程序框架如图2所示。
2.2现场采集端程序构架的实现
图像采集使用数字视频软件开发包VFW(Video for Windows)提供的图像采集接口函数:
m_capwnd=capCreateCaptureWindow("Capture",WS_CHILD|
S_VISIBLE,x,y,WIDTH,HEIGHT,pDlg->GetSafeHwnd( ), 0);
为了实现图像的实时传输,必须减少发送图像的冗余信息,本系统的图像编码和压缩使用H.264编码图像[2],远程监控端通过注册回调函数,在采集到一帧图像后调用回调函数,在回调函数中调用图像压缩函数进行图像的编码压缩。
3 客户机编程实现
3.1 MFC程序构架
客户机端MFC程序构架如图3所示。
3.2 客户机程序构架的实现
客户机端接收到的图像数据必须经过解码才能进行预览,系统的解码器实现函数如下:
bool VideoCodec::EncodeVideoData(char* pin, int inlen, char*pout,long*outlen,BOOL*pKey) //配置解码器参数
系统采集的图像分辨率为176×144,图像的尺寸很小。为了能更好地预览图像,系统采用了双线性内插值算法[3]来放大图像。算法描述如下:
对于一个目的像素,设置通过反向变换得到的浮点坐标为(i+u,j+v)。其中,i、j均为浮点坐标的整数部分,u、v为浮点坐标的小数部分,为取值[0,1)区间的浮点数。则这个像素值f(i+u,j+v)可由原图像中坐标为(i,j)、(i+1,j)、(i,j+1)、(i+1,j+1)所对应的周围4个像素的值决定,即:
f(i+u,j+v)=(1-u)(1-v)f(i,j)+(1-u)vf(i,j+1)+u(1-v)f(i+1,j)+uvf(i+1,j+1)
其中,f(i,j)表示源图像(i,j)处的像素值,以此类推。双线性内插值算法的计算量大,但是比最邻近插值法[4]放大的图像好,不会出现像素不连续的情况。
4 传输协议的选择
4.1视频数据传输协议
视频监控系统处理后的图像需要通过网络进行传输。由于数字视频传输的信息量大而传输带宽有限,使得网络协议的选择成为视频在网络传输中的关键技术,它将直接影响到数字视频传输的实时性能和通过网络传输以后客户端接收的视频图像质量。由于TCP协议具有错误重传机制、拥塞控制机制、报文头比较大以及启动需要建立连接等特性,因此无法保证实时性,很难适应视频通信[5]。而实时传输协议RTP由底层协议UDP承载[6],由二者共同完成传输层协议功能。而UDP协议只是传输数据包,不管数据包传输的时间顺序,RTP协议则提供时间标签、序列号以及用于控制适时数据的流放的其他结构。UDP的多路复用可使RTP协议利用支持显式的多点投递,可以满足多媒体会话的需求。
RTP相关设置函数:
m_sessparams.SetOwnTimestampUnit(1.0/10.0);
//设置时间同步
m_sessparams.SetUsePollThread(1);
//开启Poll线程
m_sessparams.SetMaximumPacketSize(64*1024-1);
//设置最大包大小
m_transparams.SetPortbase(REMOT_PORT_VIDEO);
//本地端口
var=m_sess.Create(m_sessparams,&m_transparams);
//创建会话
4.2环境监测数据及客户控制数据传输协议
TCP协议提供了可靠的传输服务,包括报文序列、流控制、差错检验、优先级等。因无线采集端送到服务器端的数据量很小(大约12 B/s),在传输过程中监控数据不容许有丢包、误码等错误的发生,因此采用TCP作为监测数据及控制命令数据的传输协议,以保证传输过程中数据的可靠性。
TCP相关设置函数:
m_CtrlSocket.TcpSocketInit(LOCAL_PORT_CONTROL,0,0,
s_add); //TCP初始化
m_CtrlSocket.SetTimeOut(5); //设置连接超时时间
LRESULT CClientDlg::OnComSocket(WPARAM wParam,
LPARAM lParam); //事件通知函数
5 实验结果及分析
当监控系统独占网络运行时,通过网络数据抓包,根据数据包端口分析的视频数据每秒可达到30帧(每6帧一个关键帧),接收端图像大小为640×480,网络流量约为30 KB/s,如图4所示,而如图5所示的有线传输时流量约为35 KB/s。其原因是服务端上行速率远远小于下行速率,表现在宏观上,当用3G传输时较有线传输有约3 s的延迟。通过分析VC++输出,可知现场环境数据大约为每秒接收6个数据包(采集端1和采集端2各3个数据包),流量约为12 B/s。
通过分析以上实验数据可知,系统数据流量基本能适应3G网络的带宽,系统也基本实现了视频传输的快速性、实时性,而控制数据和监控端采集的数据包均无丢失,从而实现了监测与控制的可靠性,系统运行效果良好。
远程无线综合监控系统将会在众多领域中得到应用,例如无人车间、电站以及需要测量实时数据但不便于铺设线缆的场所。本系统采用的是采集端与服务器分离的结构,通过无线模块实现数据的传输,在空间上打破了利用电缆传输数据的局限性,所有的数据均经过特定的编码,编码范围为0~255。用户可以根据自己的需要配上合适的编码即可实现多点监控,具有良好的可扩展性。如果应用于工业生产,系统中的客户机和服务机均可由工控机代替,数据采集端为简单的单片机系统,用户在具备客户机与服务器的情况下若要增加监控端,仅需要增加数据采集端即可,价格非常低。另外,伴随着无线网络技术的发展,网络带宽会有更大的提高,而基于3G网络的无线智能综合监控系统可以利用网络的快速性,更好地满足人们的需求,实现实时、快速、准确。因此,在未来几年里,无线综合监控系统将会有极大的推广价值。
参考文献
[1] CHAVEZ J L. A remote irrigation monitoring and control system for continuous move systems. Part
A: description and development[J]. Precision Agriculture,2010,11(1):1-10.
[2] 斯文克.Visual C++ MFC编程实例[M].北京:机械工业出版社,2000.
[3] WANG J X. On parallelizing H.264/AVC rate-distortion optimization baseline profile encoder[J].
Jorunal of Information Science and Engineering, 2000,26(2):409-426.
[4] 冯永明, 杨东勇, 卢瑾.全方位图像展开的双线性内插值法[J].计算机工程与应用,2008,44
(15):54-55,78
[5] 刘丽君,骆婷.插值法在图像处理中的应用[J]. 电子科学,2009,15:9-10.
[6] 孙桂斌.基于TCP/IP协议多客户连接的服务端程序实 现[J].网络与通信,2009,29(7):83-85.
[7] SEO K D. A practical RTP packetization scheme for SVC video transport over IP networks[J].Etri Journal, 2010,32(2):281-291.