劉意先++鄒鵬
摘要: 為了在網絡條件較好的局域網或專用網絡上快速開發視頻監控系統,提出一種不需要視頻編碼協議和特殊監控攝像設備的設計方案。該方案在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.