《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 移動監(jiān)控系統(tǒng)中設(shè)備端視頻軟件的設(shè)計與實現(xiàn)
移動監(jiān)控系統(tǒng)中設(shè)備端視頻軟件的設(shè)計與實現(xiàn)
2015年微型機與應(yīng)用第18期
楊云龍1,孟利民2
(1.浙江工業(yè)大學(xué) 信息工程學(xué)院,浙江 杭州 310023; 2.浙江省通信網(wǎng)技術(shù)應(yīng)用研究重點實驗室,浙江 杭州 310023)
摘要: 提出了一種移動視頻監(jiān)控系統(tǒng)中視頻數(shù)據(jù)處理軟件的設(shè)計方案。移動監(jiān)控系統(tǒng)主要由前端移動監(jiān)控設(shè)備、3G網(wǎng)絡(luò)、服務(wù)器、手機客戶端組成。給出了系統(tǒng)總體原理圖,主要分析了移動監(jiān)控系統(tǒng)中視頻數(shù)據(jù)的采集、去抖動處理、壓縮以及備份等設(shè)備端軟件設(shè)計部分。在去抖動的過程中使用了改進的灰度投影法,解決了傳統(tǒng)投影法中易受到移動前景干擾的問題。通過實際測試驗證了方案的可行性。
Abstract:
Key words :

  摘  要: 提出了一種移動視頻監(jiān)控系統(tǒng)中視頻數(shù)據(jù)處理軟件的設(shè)計方案。移動監(jiān)控系統(tǒng)主要由前端移動監(jiān)控設(shè)備、3G網(wǎng)絡(luò)、服務(wù)器、手機客戶端組成。給出了系統(tǒng)總體原理圖,主要分析了移動監(jiān)控系統(tǒng)中視頻數(shù)據(jù)的采集、去抖動處理、壓縮以及備份等設(shè)備端軟件設(shè)計部分。在去抖動的過程中使用了改進的灰度投影法,解決了傳統(tǒng)投影法中易受到移動前景干擾的問題。通過實際測試驗證了方案的可行性。

  關(guān)鍵詞: 移動監(jiān)控系統(tǒng);3G網(wǎng)絡(luò);視頻處理;去抖動處理;灰度投影法

0 引言

  隨著計算機網(wǎng)絡(luò)技術(shù)的發(fā)展和應(yīng)用,安全防范產(chǎn)品的逐漸豐富,“安防大眾化”已是大勢所趨,安全是一種需求,安全對于人們來說已是必不可少的商品[1]。視頻監(jiān)控系統(tǒng)在安防行業(yè)中具有重要地位。視頻監(jiān)控系統(tǒng)的發(fā)展經(jīng)歷了由模擬到數(shù)字、由錄像人工檢查到狀態(tài)智能分析、由實地操作到遠程遙控的過程[2]。移動通信系統(tǒng)已經(jīng)開始更新?lián)Q代,中國3家不同運營商旗下基于不同標準的3G網(wǎng)絡(luò)也全面步入商用時代,同時隨著LTE(Long Term Evolution)技術(shù)的發(fā)展和4G標準化的來臨,基于新型系統(tǒng)的基礎(chǔ)網(wǎng)絡(luò)建設(shè)必將保持高速發(fā)展[3]。無線網(wǎng)絡(luò)的發(fā)展極大地促進了移動監(jiān)控系統(tǒng)的發(fā)展。移動監(jiān)控系統(tǒng)不僅能夠擴大監(jiān)控范圍,也能節(jié)約成本,甚至還能減少許多不必要的損失[4]。

  移動監(jiān)控系統(tǒng)的前端設(shè)備在采集視頻數(shù)據(jù)的過程中難免會產(chǎn)生抖動,所以電子穩(wěn)像技術(shù)對移動監(jiān)控系統(tǒng)至關(guān)重要。目前的電子穩(wěn)像技術(shù)是利用電子設(shè)備和數(shù)字圖像處理技術(shù)相結(jié)合的方法,直接從像面上通過檢測被比較圖像與參考幀圖像的運動矢量,并對被比較圖像進行運動補償,從而獲得清晰穩(wěn)定的視頻圖像序列[5]。視頻穩(wěn)像中最重要的一步是運動估計,灰度投影法是一種比較常見的運動估計方法,它是利用圖像的整體信息進行運動估計,主要是利用相鄰兩幀圖像重合區(qū)域內(nèi)圖像信息分布相同的原理[6]。但是灰度投影法容易受到前景運動物體的影響。本文對灰度投影法進行了改進,有效地減緩了前景運動物體對運動估計的影響。

1 系統(tǒng)總體結(jié)構(gòu)

  移動監(jiān)控系統(tǒng)主要由前端移動監(jiān)控設(shè)備、3G無線網(wǎng)絡(luò)、服務(wù)器以及手機客戶端組成。系統(tǒng)總體結(jié)構(gòu)圖如圖1所示。

001.jpg

  前端移動監(jiān)控設(shè)備采集視頻數(shù)據(jù)并經(jīng)過壓縮后發(fā)送給服務(wù)器,供服務(wù)器管理人員分析。服務(wù)器按客戶端的要求將視頻壓縮數(shù)據(jù)發(fā)送給客戶端查看。

2 前端設(shè)備視頻軟件設(shè)計

  前端設(shè)備視頻軟件主要負責(zé)對視頻數(shù)據(jù)的采集、去抖動、編碼以及存儲等工作。這些工作主要是由encode進程完成。encode進程包含了Capture線程、Video線程和Write線程3個線程。

  主線程首先創(chuàng)建4個同步對象,分別為hRendezvousCap、hRendezvousWriter、hRendezvousInit和hRendezvous Cleanup,然后創(chuàng)建Capture線程,Capture線程一旦創(chuàng)建完成,主線程就會馬上調(diào)用等待函數(shù)Rendezvous_meet(hRendezvousCap)函數(shù)進入等待狀態(tài)。Capture線程的流程如圖2所示。

002.jpg

  Capture線程首先通過調(diào)用Capture_detectVideoStd()函數(shù)獲得視頻數(shù)據(jù)類型。然后再通過調(diào)用VideoStd_getResolution()函數(shù)得到將要采集的視頻數(shù)據(jù)的分辨率,并將該分辨率傳給主線程。再調(diào)用等待函數(shù)Rendezvous_meet(hRendezvousCap),這次調(diào)用等待函數(shù)時Capture線程并不會進入等待狀態(tài)而是將等待中的主線程喚醒。然后Capture線程會繼續(xù)調(diào)用Capture_create()函數(shù)創(chuàng)建視頻數(shù)據(jù)的采集對象。調(diào)用Resize_create()函數(shù)創(chuàng)建視頻數(shù)據(jù)的放縮對象。調(diào)用Framecopy_create()函數(shù)創(chuàng)建視頻數(shù)據(jù)的裁剪對象。Capture線程在完成了這些準備工作后就會再次調(diào)用等待函數(shù)Rendezvous_meet(hRendezvousInit)等待其他線程到達預(yù)定的等待點。

  主線程被Capture線程喚醒后會接著創(chuàng)建Video線程,并將視頻數(shù)據(jù)的分辨率參數(shù)傳給Video線程,然后調(diào)用Rendezvous_meet(hRendezvousWriter)等待函數(shù)進入等待狀態(tài)。Video線程的流程圖如圖3所示。

003.jpg

  Video線程首先通過調(diào)用Engine_open()函數(shù)開啟編碼引擎。然后將視頻分辨率參數(shù)傳給Venc1_create()函數(shù)來創(chuàng)建兩個編碼對象hVe1、hVe2。hVe1與hVe2分別用來將352×288 YUV420SP與720×576 YUV420SP兩種格式的視頻數(shù)據(jù)編碼成H.264格式。然后Video線程會調(diào)用Venc1_getOutBufSize()函數(shù)獲得編碼器輸出數(shù)據(jù)參數(shù),并傳給主線程。再調(diào)用等待函數(shù)Rendezvous_meet(hRendezvousWriter)喚醒主線程。當(dāng)Video線程完成上述準備工作后就會調(diào)用等待函數(shù)Rendezvous_meet(hRendezvousInit)等待其他線程到達預(yù)定的等待點。

  被喚醒的主線程還會繼續(xù)創(chuàng)建Write線程,并將Video線程的兩個編碼器的輸出參數(shù)outBufSize1、outBufSize2傳給Write線程。Write線程的流程圖如圖4所示。

004.jpg

  Write線程首先將參數(shù)outBufSize1與outBufSize2傳給BufTab_create()函數(shù)申請兩組緩存區(qū)。這兩組緩存區(qū)用于接收Video線程傳來的兩路H.264數(shù)據(jù)。然后Write線程會調(diào)用函數(shù)createShm()創(chuàng)建一塊共享內(nèi)存。這塊共享內(nèi)存用于存儲由352x288 YUV420SP格式數(shù)據(jù)編碼而來的H.264數(shù)據(jù),供數(shù)據(jù)發(fā)送程序讀取。在完成了上述準備工作后,Write線程會調(diào)用等待函數(shù)Rendezvous_meet(hRendezvousInit)進入等待狀態(tài)。

  當(dāng)?shù)却瘮?shù)Rendezvous_meet(hRendezvousInit)被第三次調(diào)用時,第三次調(diào)用等待函數(shù)的線程并不會進入等待狀態(tài),而是喚醒前兩個正在等待的線程。

  當(dāng)所有線程都被喚醒后就會同步進入主循環(huán)。Capture線程負責(zé)采集視頻數(shù)據(jù)和視頻穩(wěn)像,Video線程負責(zé)視頻數(shù)據(jù)編碼,Write線程負責(zé)數(shù)據(jù)存盤和將數(shù)據(jù)寫入共享內(nèi)存。

  Capture線程首先采集一幀736x576 UYVY格式的數(shù)據(jù),然后對視頻數(shù)據(jù)進行電子穩(wěn)像處理。得到穩(wěn)定的視頻數(shù)據(jù)后,通過調(diào)用Resize()函數(shù)改變穩(wěn)像后的視頻數(shù)據(jù)的分辨率和數(shù)據(jù)格式,并輸出兩路數(shù)據(jù),一路數(shù)據(jù)為352×288 YUV420SP格式,另一路數(shù)據(jù)為736×576 YUV420SP格式。然后將352×288 YUV420SP格式的視頻數(shù)直接傳給Video線程。將736×576 YUV420SP格式的視頻先裁剪成720×576 YUV420SP格式后再傳給Video線程。接著Capture線程判斷是否繼續(xù)采集下一幀視頻數(shù)據(jù),若是,則重復(fù)主循環(huán)中的內(nèi)容;若不是,則向其他線程發(fā)送結(jié)束信號并調(diào)用等待函數(shù)Rendezvous_meet(hRendezvousCleanup),等待其他線程一起進行清理工作。

  Video線程在進入主循環(huán)后首先會將自己創(chuàng)建的兩組空buffer傳給Capture線程,用于Capture線程向Video線程傳輸數(shù)據(jù)。然后接收Capture線程傳來的兩路視頻數(shù)據(jù),并分別用編碼對象hVe1與hVe2將這兩路視頻數(shù)據(jù)編碼成H.264格式。然后接收Write線程傳過來的兩塊buffer,并將兩路H.264格式數(shù)據(jù)分別存儲于這兩塊buffer中,再通過FIFO_put()函數(shù)傳給Write線程。然后Video線程判斷是否繼續(xù)編碼工作,若是,則對下一幀數(shù)據(jù)重復(fù)主循環(huán)中的編碼工作;若不是,則向其他線程發(fā)送結(jié)束信號并調(diào)用等待函數(shù)Rendezvous_meet(hRendezvousCleanup),等待其他線程一起進行清理工作。

  Write線程進入主循環(huán)后首先將兩塊空buffer傳給Video線程,用于Video線程向Write線程傳輸數(shù)據(jù)。然后接收Video線程傳來的兩路H.264數(shù)據(jù),第一路數(shù)據(jù)由352×288 YUV420SP格式編碼而來,將該H.264數(shù)據(jù)寫到共享內(nèi)存中供發(fā)送程序發(fā)送給服務(wù)器;第二路數(shù)據(jù)由720×576 YUV420SP格式編碼而來,將該數(shù)據(jù)寫到SD卡中用于備份,當(dāng)前幀處理結(jié)束。然后Write線程判斷是否繼續(xù)處理下幀數(shù)據(jù),若是,則重復(fù)主循環(huán)中的內(nèi)容;若不是,則向其他線程發(fā)送結(jié)束信號并調(diào)用等待函數(shù)Rendezvous_meet(hRendezvousCleanup),等待其他線程一起進行清理工作。

  當(dāng)?shù)却瘮?shù)Rendezvous_meet(hRendezvousCleanup)被第三次調(diào)用時,調(diào)用它的線程并不會進入等待狀態(tài),而是喚醒其他兩條正在等待的線程。然后三條線程同時進行各自的清理工作,釋放各自申請的資源,然后結(jié)束各自的線程,程序結(jié)束。

3 電子穩(wěn)像處理

  Capture線程采集的視頻數(shù)據(jù)為736×576 UYVY格式,由于移動監(jiān)控設(shè)備在采集視頻數(shù)據(jù)時難免會產(chǎn)生抖動,因此必須對采集的視頻數(shù)據(jù)進行電子穩(wěn)像處理。首先對當(dāng)前幀視頻圖像進行直方圖均衡化處理,以提高圖像的對比度。然后對圖像進行多分塊灰度投影。將一幀736×576 UYVY的視頻數(shù)據(jù)按圖5所示的方式劃分成24個100×110的宏塊,宏塊與視頻數(shù)據(jù)邊緣的最近距離為68個像素點。

005.jpg

  將每個宏塊在水平方向和垂直方向上分別進行灰度投影,并通過互相關(guān)運算求出其運動參數(shù)。下式為進行行、列互相關(guān)運算的計算公式:

  3R2P~}DW)6$21U6%NP]JXOL.png

  其中,Colkn(j)為第k幀圖像第n號宏塊第j列的灰度投影值,NC是宏塊列的長度。設(shè)Wmin為C(w)最小值時w的值,則第k幀圖像的第n號宏塊相對于參考幀圖像的第n號宏塊在垂直方向的位移矢量為:

  a=-Wmin(2)

  得到所有宏塊的運動參數(shù)后求出其平均運動參數(shù)。然后去除與平均運動參數(shù)相差最大的前30%的宏塊的運動參數(shù),取剩下70%宏塊的運動參數(shù)的平均值為當(dāng)前幀的運動參數(shù)。然后用均值濾波器去掉運動參數(shù)中的高頻抖動部分,得到低頻的攝像機正常掃描運動參數(shù)。然后通過總運動參數(shù)和正常掃描的運動參數(shù)得到視頻數(shù)據(jù)的抖動參數(shù)。最后進行運動補償處理,本文通過對穩(wěn)定的前一幀補償?shù)玫较乱环€(wěn)定幀,為了避免錯誤向后續(xù)幀的傳播,選取每15幀利用一次原始幀做補償。運動補償以后就得到了穩(wěn)定的視頻數(shù)據(jù)。

4 系統(tǒng)測試

  服務(wù)器端通過3G網(wǎng)絡(luò)接收前端移動設(shè)備發(fā)送的視頻壓縮數(shù)據(jù),并將其解碼和顯示。視頻圖像如圖6所示。

006.jpg

  其中圖6(a)是移動監(jiān)控設(shè)備對采集的視頻數(shù)據(jù)經(jīng)過電子穩(wěn)像處理過的連續(xù)3幀視頻數(shù)據(jù),圖6(b)是與圖(a)相對應(yīng)的未經(jīng)過設(shè)備端穩(wěn)像處理的視頻數(shù)據(jù)。由圖6可以看出電子穩(wěn)像操作解決了拍攝視頻時的抖動問題。將前端移動監(jiān)控設(shè)備在不同的地方進行測試,系統(tǒng)都可以穩(wěn)定運行。本系統(tǒng)可以廣泛地應(yīng)用于一些無法鋪設(shè)線路的偏遠地區(qū),解決了傳統(tǒng)監(jiān)控系統(tǒng)中難以鋪設(shè)線路的問題。

參考文獻

  [1] 何岳.移動監(jiān)控系統(tǒng)研究[J].信息通信,2012(5):126-127.

  [2] 姚楠,余勁.基于云的電力監(jiān)控視頻故障管理系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,2014,40(6):140-142.

  [3] 楊陽,胡永輝.移動監(jiān)控終端無線傳輸系統(tǒng)的設(shè)計與實現(xiàn)[J].時間頻率學(xué)報,2011,34(1):27-32.

  [4] 梁振濤,樊澤明,任永亮,等.基于單片機的移動監(jiān)控系統(tǒng)硬件設(shè)計[J].微型機與應(yīng)用,2014,33(2):25-30.

  [5] 葛虎龍,李安平.高清抖動視頻的實時穩(wěn)像算法[J].信息通信,2013(6):41-43.

  [6] 黃九林.基于塊匹配和直線特征的視頻穩(wěn)像方法研究[D].大連:大連理工大學(xué),2014.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。