基于局域网的视频监控系统的设计与实现
2014-09-27刘意先邹鹏
刘意先++邹鹏
摘要: 为了在网络条件较好的局域网或专用网络上快速开发视频监控系统,提出一种不需要视频编码协议和特殊监控摄像设备的设计方案。该方案在Windows平台上使用普通摄像头进行图像的视频采集,并使用开源的图像处理库程序CxImage对图像帧进行处理,通过网络套接字接口进行传输并在Windows系统上进行显示,并能对监控系统的接入进行身份验证。经过测试该方案能提供稳定的视频监控效果,说明该方法能在网络状态稳定的局域网条件下通过无视频编码协议的方式进行应用,降低了系统开发的复杂度和成本。
关键词: 视频监控; 局域网; 视频编码; JPEG
中图分类号: TN919⁃34; TN964⁃34 文献标识码: A文章编号: 1004⁃373X(2014)08⁃0035⁃03
Design and implementation of video surveillance system based on LAN
LIU Yi⁃xian1, ZHOU Peng2
(1. Information Security and Countermeasure Experiment Teaching Center, Xian University of Posts and Telecommunications, Xian 710121, China;
2. Lanzhou Branch Company of Gansu Subsidiary, China Telecom Corporation Limited, Lanzhou 730030, China)
Abstract: For rapidly developing a video surveillance system on LAN or special network which has good condition, a design approach which doesnt need video encoding protocol and special surveillance camera device is proposed in this paper. In this approach, a normal camera is used in Windows platform to capture the video image, the open source image processing library program CxImage to compress the image frames, and then the data is transfered through network socket interface and displayed on Windows operating system. It also can verify the identity of accesser which wants to access the surveillance system. The testing result indicates that the approach can provide stable video surveillance effect, and shows that this approach can be used in the mode without video encoding protocol under the condition of LAN with stable network state. This approach decreased the development complexity and cost.
Keywords: video surveillance; LAN; video encode; JPEG
0引言
随着网络技术发展和相关基础设施的完善,网络监控技术的应用得到了越来越多的应用。目前视频监控技术研究的方向包括如何对视频图像的内容进行智能的处理,提高监控的效果[1⁃3],另一方面是针对视频数据进行编码,降低需要传输的数据量[4⁃7]。而对于基于网络的监控系统在实际应用中,为了保证监控的实时性,多将系统架设在网络条件较好的局域网或专用网上。本文设计并实现了一个在常用的Windows系统下借助高速以太网,利用现有的摄像头等硬件设备,来实施快速架设的远程监控系统。系统利用VFW(Video for Windows)来捕捉视频。将视频的每一帧通过CxImage库压缩成JPEG图像格式,很大程度的减小数据体积便于网络传输。服务器在进行数据链接时,还要对客户端进行必要的质询握手验证措施。以保证客户端用户为合法用户防止隐私泄露。
1系统的结构和原理
1.1系统的总体设计
系统的总体结构如图1所示。在整体设计中,整个视频监控系统分为两个大的部分:客户端和和服务器,在客户端或服务器上又分为二大模块:认证模块和数据处理模块。其中数据处理模块包括数据的获取和还原,数据的压缩和解压以及数据的传送和接收三个相互配合的模块。
图1 系统的总体结构
1.2挑战握手认证过程
由于本文所设计的是一个在局域网内能快速开发和搭建的视频监控系统,所以系统要进行必要的身份认证以保证安全。该挑战响应握手认证过程,类似于PPPoE中的CHAP方式。旨在向用户提供认证时不需要用户的明文密码,或者不需要用户密码在不安全的网络空间内传输。该过程如图2所示。
图2 挑战响应握手认证过程
1.3通过VFW对图像数据进行采集
在VFW中,可以有三种方式实现视频录像[8]。其中,最简单的方式是调用capFileSetCaptureFile函数和capCaptureSequence函数。该种方式存在许多缺点,例如,在录像时无法响应用户界面,无法实现视频压缩等。第二种方式是调用capCaptureSetSetup函数,将CAPTUREPARMS结构的fYield成员设置为TRUE,启动后台线程来实现录像,然后调用capDlgVideoCompression函数让用户选择压缩器进行压缩,最后调用capFileSetCaptureFile函数和capCaptureSequence函数开始录像。第二种方式的缺点是每次录像时都需要弹出一个对话框,让用户选择一种压缩器。第三种方式是注册回调函数capSetCallbackOnVideoStream,在回调函数中压缩数据并写入AVI文件。相对于前两种方式,第三种方式更为灵活和实用,因此在进行视频录像时,通常采用该种方式实现。
1.4图像数据的压缩
捕捉后的数据流每帧大约有230 KB。若直接将此数据在网络中传输,带宽需求为6 MB/s左右(25 f/s)。对于局域网普遍100 Mb/s和10 Mb/s的带宽来说,占用资源较为明显。因此考虑要对数据进行压缩。本文通过使用开源CxImage类库进行处理。使用它可以轻松的进行图片的各种格式转换。
CxImage类库是一个优秀的图像操作类库[9]。它可以快捷地存取、显示、转换各种图像。CxImage类库是完全免费的,而且作者完全公开了源代码。可以很方便地处理图像并理解相关原理。系统采用CxImage将捕获到的位图文件压缩为JPEG格式,数据约为原来的5%,完全能满足网络资源状况。
1.5图像的显示
本文设计的系统是在Windows平台上进行应用,要在Windows对话框上画图,使用DrawDibDraw是一种比较简单的方法。它只需要三步就可以简单的将图像显示在屏幕上。首先,需要一个HDRAWDIB类型的变量来存储操作过程中的句柄。然后调用DrawDibDraw函数来真正实现绘图。在调用完该函数绘图完毕后还需调用DrawDibClose函数来释放资源[10]。
2系统的实现
2.1服务器端的实现
服务器端运行连接到视频设备后,将开始监听对远端用户进行身份验证。验证结束后将进行下一步数据发送工作,首先要进行VFW的初始化工作。由函数完成:
capCaptureGetSetup(pDlg⁃>m_hWndVideo,¶ms,sizeof(params));
在通过设定回调函数并开始捕获之后,VFW会在捕捉到视频后开始自动调用指定的回调函数VS_JPEGCallback。在VS_JPEGCallback函数中通过capGetVideoFormat来获取给予参数的数据情况如分辨率色深等信息。将这些信息通过重新组合合并为一个BMP位图格式的数据流。将此数据流用CxImage的数据处理函数来重新进行编码,从而得到经过压缩的JPEG数据流。将每一帧的数据流前加入其长度。然后将此数据发送出去。
2.2客户端的实现
客户端在系统启动的时候也需要初始化socket。然后会显示界面,等待用户输入IP地址、用户名和口令等数据。当用户点击连接按钮时。程序会初始化套接字并试图连接远程计算机。当连接成功后就开始认证过程。程序会在验证成功后,来启动数据处理线程recivethread来处理接收到的数据。recivethread所做的工作是接收数据、解压缩数据和显示数据,因此需要一个无限循环来反复调用。收取数据难点是要保证图像的前后可分辨,因为各帧数据是连在一起的,当recv返回后在返回的地址空间里不仅有第一帧的数据还有可能有第二帧甚至第三帧的数据。因此需要程序根据数据中包含的长度信息,来界定每一帧的开始和结束。具体方法如图3所示。
图3 循环取帧的方法
2.3系统测试
测试时先通过本地回环的方法单机测试,然后再通过单机虚拟机的方式进行测试,最后又在局域网内不同终端上测试,都能得到稳定的测试效果,图像显示稳定。本地回环测试的的图像效果如图4所示。
图4 测试效果
在局域网内进行测试,局域网带宽为100 Mb/s,经网络测试工具测试,每秒可传数据为8 MB。 监控系统所采集原始图像大小为320×240,图像质量为24位,所采集的数据量为5.5 MB,经压缩后每秒需传输的数据为249 KB,可以看出若不进行图像压缩对网络的传输压力较大,经压缩后,仅占带宽的3%左右,完全能够满足需求。
3结语
本文提出了一种基于局域网的视频监控系统的设计方案并加以实现,该方案主要特点是能在网络条件较好的局域网或专用网络上快速开发并构建一个实用的视频监控系统,对硬件设备和相关资源的要求较低,实用性强,并且简化了视频图像编码的过程。下一步的研究工作是优化该方案在无线网络下的应用效果,并开发出能够支持移动终端的视频监控系统。
参考文献
[1] PARK Su⁃Wan, HAN Jong Wook, SHIN Sang⁃Uk. Secure service mechanism of video surveillance system based on H.264/SVC [C]// 2011 International Conference on Information Technology and Multimedia. Kuala Lumpur: [s.n.], 2011: 1⁃4.
[2] SHEININ V, ALLMAN L, JAGMOHAN A, et al. Digital video surveillance platform based on cell processor and H.264 video compression [J]. SPIE Proceedings, 2006, 6209 : 111⁃117.
[3] BALES M R, WATKINS S E. Spatial mask and diffusion filtering in surveillance video compression [J]. SPIE Proceedings, 2012, 8347: 1⁃16.
[4] HUANG Shih⁃Chia, CHEN Bo⁃hao. Automatic moving object extraction through a real⁃world variable⁃bandwidth network for traffic monitoring systems [J]. IEEE Transactions on Industrial Electronics, 2014, 61(4): 2099⁃2112.
[5] GENKOV D G. Using network monitoring application for detection of anomalies in surveillance video traffic [C]// Proceedings of 2011 19th Telecommunications Forum. Belgrade:TELFOR, 2011: 1527 ⁃ 1529.
[6] AN Tae⁃Ki, KIM Moon⁃Hyun. Context⁃aware video surveillance system [J]. Journal of Electrical Engineering & Technology, 2012, 7(1): 115⁃123.
[7] XU Wei⁃guang, ZHANG Ya⁃fei, LU Jian⁃jiang, et al. A framework of simple event detection in surveillance video [C]// International Conference on Intelligent Computing and Information Science. [S.l.]: Springer Berlin Heidelberg, 2011: 556⁃561.
[8] 宋坤,刘锐宁,马文强.Visual C++视频技术方案[M]:北京:人民邮电出版社,2008.
[9] Anon. Code project [EB/OL]. [2012⁃01⁃01]. http://www.codeproject.com/Articles/1300/CxImage.
[10] Anon. MSDN [EB/OL]. [2013⁃05⁃01]. http:// www.MS.VSCC.v90/MS.MSDNQTR.v90.
CxImage类库是一个优秀的图像操作类库[9]。它可以快捷地存取、显示、转换各种图像。CxImage类库是完全免费的,而且作者完全公开了源代码。可以很方便地处理图像并理解相关原理。系统采用CxImage将捕获到的位图文件压缩为JPEG格式,数据约为原来的5%,完全能满足网络资源状况。
1.5图像的显示
本文设计的系统是在Windows平台上进行应用,要在Windows对话框上画图,使用DrawDibDraw是一种比较简单的方法。它只需要三步就可以简单的将图像显示在屏幕上。首先,需要一个HDRAWDIB类型的变量来存储操作过程中的句柄。然后调用DrawDibDraw函数来真正实现绘图。在调用完该函数绘图完毕后还需调用DrawDibClose函数来释放资源[10]。
2系统的实现
2.1服务器端的实现
服务器端运行连接到视频设备后,将开始监听对远端用户进行身份验证。验证结束后将进行下一步数据发送工作,首先要进行VFW的初始化工作。由函数完成:
capCaptureGetSetup(pDlg⁃>m_hWndVideo,¶ms,sizeof(params));
在通过设定回调函数并开始捕获之后,VFW会在捕捉到视频后开始自动调用指定的回调函数VS_JPEGCallback。在VS_JPEGCallback函数中通过capGetVideoFormat来获取给予参数的数据情况如分辨率色深等信息。将这些信息通过重新组合合并为一个BMP位图格式的数据流。将此数据流用CxImage的数据处理函数来重新进行编码,从而得到经过压缩的JPEG数据流。将每一帧的数据流前加入其长度。然后将此数据发送出去。
2.2客户端的实现
客户端在系统启动的时候也需要初始化socket。然后会显示界面,等待用户输入IP地址、用户名和口令等数据。当用户点击连接按钮时。程序会初始化套接字并试图连接远程计算机。当连接成功后就开始认证过程。程序会在验证成功后,来启动数据处理线程recivethread来处理接收到的数据。recivethread所做的工作是接收数据、解压缩数据和显示数据,因此需要一个无限循环来反复调用。收取数据难点是要保证图像的前后可分辨,因为各帧数据是连在一起的,当recv返回后在返回的地址空间里不仅有第一帧的数据还有可能有第二帧甚至第三帧的数据。因此需要程序根据数据中包含的长度信息,来界定每一帧的开始和结束。具体方法如图3所示。
图3 循环取帧的方法
2.3系统测试
测试时先通过本地回环的方法单机测试,然后再通过单机虚拟机的方式进行测试,最后又在局域网内不同终端上测试,都能得到稳定的测试效果,图像显示稳定。本地回环测试的的图像效果如图4所示。
图4 测试效果
在局域网内进行测试,局域网带宽为100 Mb/s,经网络测试工具测试,每秒可传数据为8 MB。 监控系统所采集原始图像大小为320×240,图像质量为24位,所采集的数据量为5.5 MB,经压缩后每秒需传输的数据为249 KB,可以看出若不进行图像压缩对网络的传输压力较大,经压缩后,仅占带宽的3%左右,完全能够满足需求。
3结语
本文提出了一种基于局域网的视频监控系统的设计方案并加以实现,该方案主要特点是能在网络条件较好的局域网或专用网络上快速开发并构建一个实用的视频监控系统,对硬件设备和相关资源的要求较低,实用性强,并且简化了视频图像编码的过程。下一步的研究工作是优化该方案在无线网络下的应用效果,并开发出能够支持移动终端的视频监控系统。
参考文献
[1] PARK Su⁃Wan, HAN Jong Wook, SHIN Sang⁃Uk. Secure service mechanism of video surveillance system based on H.264/SVC [C]// 2011 International Conference on Information Technology and Multimedia. Kuala Lumpur: [s.n.], 2011: 1⁃4.
[2] SHEININ V, ALLMAN L, JAGMOHAN A, et al. Digital video surveillance platform based on cell processor and H.264 video compression [J]. SPIE Proceedings, 2006, 6209 : 111⁃117.
[3] BALES M R, WATKINS S E. Spatial mask and diffusion filtering in surveillance video compression [J]. SPIE Proceedings, 2012, 8347: 1⁃16.
[4] HUANG Shih⁃Chia, CHEN Bo⁃hao. Automatic moving object extraction through a real⁃world variable⁃bandwidth network for traffic monitoring systems [J]. IEEE Transactions on Industrial Electronics, 2014, 61(4): 2099⁃2112.
[5] GENKOV D G. Using network monitoring application for detection of anomalies in surveillance video traffic [C]// Proceedings of 2011 19th Telecommunications Forum. Belgrade:TELFOR, 2011: 1527 ⁃ 1529.
[6] AN Tae⁃Ki, KIM Moon⁃Hyun. Context⁃aware video surveillance system [J]. Journal of Electrical Engineering & Technology, 2012, 7(1): 115⁃123.
[7] XU Wei⁃guang, ZHANG Ya⁃fei, LU Jian⁃jiang, et al. A framework of simple event detection in surveillance video [C]// International Conference on Intelligent Computing and Information Science. [S.l.]: Springer Berlin Heidelberg, 2011: 556⁃561.
[8] 宋坤,刘锐宁,马文强.Visual C++视频技术方案[M]:北京:人民邮电出版社,2008.
[9] Anon. Code project [EB/OL]. [2012⁃01⁃01]. http://www.codeproject.com/Articles/1300/CxImage.
[10] Anon. MSDN [EB/OL]. [2013⁃05⁃01]. http:// www.MS.VSCC.v90/MS.MSDNQTR.v90.
CxImage类库是一个优秀的图像操作类库[9]。它可以快捷地存取、显示、转换各种图像。CxImage类库是完全免费的,而且作者完全公开了源代码。可以很方便地处理图像并理解相关原理。系统采用CxImage将捕获到的位图文件压缩为JPEG格式,数据约为原来的5%,完全能满足网络资源状况。
1.5图像的显示
本文设计的系统是在Windows平台上进行应用,要在Windows对话框上画图,使用DrawDibDraw是一种比较简单的方法。它只需要三步就可以简单的将图像显示在屏幕上。首先,需要一个HDRAWDIB类型的变量来存储操作过程中的句柄。然后调用DrawDibDraw函数来真正实现绘图。在调用完该函数绘图完毕后还需调用DrawDibClose函数来释放资源[10]。
2系统的实现
2.1服务器端的实现
服务器端运行连接到视频设备后,将开始监听对远端用户进行身份验证。验证结束后将进行下一步数据发送工作,首先要进行VFW的初始化工作。由函数完成:
capCaptureGetSetup(pDlg⁃>m_hWndVideo,¶ms,sizeof(params));
在通过设定回调函数并开始捕获之后,VFW会在捕捉到视频后开始自动调用指定的回调函数VS_JPEGCallback。在VS_JPEGCallback函数中通过capGetVideoFormat来获取给予参数的数据情况如分辨率色深等信息。将这些信息通过重新组合合并为一个BMP位图格式的数据流。将此数据流用CxImage的数据处理函数来重新进行编码,从而得到经过压缩的JPEG数据流。将每一帧的数据流前加入其长度。然后将此数据发送出去。
2.2客户端的实现
客户端在系统启动的时候也需要初始化socket。然后会显示界面,等待用户输入IP地址、用户名和口令等数据。当用户点击连接按钮时。程序会初始化套接字并试图连接远程计算机。当连接成功后就开始认证过程。程序会在验证成功后,来启动数据处理线程recivethread来处理接收到的数据。recivethread所做的工作是接收数据、解压缩数据和显示数据,因此需要一个无限循环来反复调用。收取数据难点是要保证图像的前后可分辨,因为各帧数据是连在一起的,当recv返回后在返回的地址空间里不仅有第一帧的数据还有可能有第二帧甚至第三帧的数据。因此需要程序根据数据中包含的长度信息,来界定每一帧的开始和结束。具体方法如图3所示。
图3 循环取帧的方法
2.3系统测试
测试时先通过本地回环的方法单机测试,然后再通过单机虚拟机的方式进行测试,最后又在局域网内不同终端上测试,都能得到稳定的测试效果,图像显示稳定。本地回环测试的的图像效果如图4所示。
图4 测试效果
在局域网内进行测试,局域网带宽为100 Mb/s,经网络测试工具测试,每秒可传数据为8 MB。 监控系统所采集原始图像大小为320×240,图像质量为24位,所采集的数据量为5.5 MB,经压缩后每秒需传输的数据为249 KB,可以看出若不进行图像压缩对网络的传输压力较大,经压缩后,仅占带宽的3%左右,完全能够满足需求。
3结语
本文提出了一种基于局域网的视频监控系统的设计方案并加以实现,该方案主要特点是能在网络条件较好的局域网或专用网络上快速开发并构建一个实用的视频监控系统,对硬件设备和相关资源的要求较低,实用性强,并且简化了视频图像编码的过程。下一步的研究工作是优化该方案在无线网络下的应用效果,并开发出能够支持移动终端的视频监控系统。
参考文献
[1] PARK Su⁃Wan, HAN Jong Wook, SHIN Sang⁃Uk. Secure service mechanism of video surveillance system based on H.264/SVC [C]// 2011 International Conference on Information Technology and Multimedia. Kuala Lumpur: [s.n.], 2011: 1⁃4.
[2] SHEININ V, ALLMAN L, JAGMOHAN A, et al. Digital video surveillance platform based on cell processor and H.264 video compression [J]. SPIE Proceedings, 2006, 6209 : 111⁃117.
[3] BALES M R, WATKINS S E. Spatial mask and diffusion filtering in surveillance video compression [J]. SPIE Proceedings, 2012, 8347: 1⁃16.
[4] HUANG Shih⁃Chia, CHEN Bo⁃hao. Automatic moving object extraction through a real⁃world variable⁃bandwidth network for traffic monitoring systems [J]. IEEE Transactions on Industrial Electronics, 2014, 61(4): 2099⁃2112.
[5] GENKOV D G. Using network monitoring application for detection of anomalies in surveillance video traffic [C]// Proceedings of 2011 19th Telecommunications Forum. Belgrade:TELFOR, 2011: 1527 ⁃ 1529.
[6] AN Tae⁃Ki, KIM Moon⁃Hyun. Context⁃aware video surveillance system [J]. Journal of Electrical Engineering & Technology, 2012, 7(1): 115⁃123.
[7] XU Wei⁃guang, ZHANG Ya⁃fei, LU Jian⁃jiang, et al. A framework of simple event detection in surveillance video [C]// International Conference on Intelligent Computing and Information Science. [S.l.]: Springer Berlin Heidelberg, 2011: 556⁃561.
[8] 宋坤,刘锐宁,马文强.Visual C++视频技术方案[M]:北京:人民邮电出版社,2008.
[9] Anon. Code project [EB/OL]. [2012⁃01⁃01]. http://www.codeproject.com/Articles/1300/CxImage.
[10] Anon. MSDN [EB/OL]. [2013⁃05⁃01]. http:// www.MS.VSCC.v90/MS.MSDNQTR.v90.