《電子技術(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年微型機(jī)與應(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ù)器,、手機(jī)客戶端組成。給出了系統(tǒng)總體原理圖,,主要分析了移動監(jiān)控系統(tǒng)中視頻數(shù)據(jù)的采集,、去抖動處理、壓縮以及備份等設(shè)備端軟件設(shè)計部分,。在去抖動的過程中使用了改進(jìn)的灰度投影法,,解決了傳統(tǒng)投影法中易受到移動前景干擾的問題。通過實際測試驗證了方案的可行性,。
Abstract:
Key words :

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

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

0 引言

  隨著計算機(jī)網(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)智能分析、由實地操作到遠(yuǎn)程遙控的過程[2],。移動通信系統(tǒng)已經(jīng)開始更新?lián)Q代,,中國3家不同運營商旗下基于不同標(biāo)準(zhǔn)的3G網(wǎng)絡(luò)也全面步入商用時代,同時隨著LTE(Long Term Evolution)技術(shù)的發(fā)展和4G標(biāo)準(zhǔn)化的來臨,,基于新型系統(tǒng)的基礎(chǔ)網(wǎng)絡(luò)建設(shè)必將保持高速發(fā)展[3],。無線網(wǎng)絡(luò)的發(fā)展極大地促進(jìn)了移動監(jiān)控系統(tǒng)的發(fā)展。移動監(jiān)控系統(tǒng)不僅能夠擴(kuò)大監(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é)合的方法,直接從像面上通過檢測被比較圖像與參考幀圖像的運動矢量,,并對被比較圖像進(jìn)行運動補(bǔ)償,,從而獲得清晰穩(wěn)定的視頻圖像序列[5],。視頻穩(wěn)像中最重要的一步是運動估計,,灰度投影法是一種比較常見的運動估計方法,它是利用圖像的整體信息進(jìn)行運動估計,主要是利用相鄰兩幀圖像重合區(qū)域內(nèi)圖像信息分布相同的原理[6],。但是灰度投影法容易受到前景運動物體的影響,。本文對灰度投影法進(jìn)行了改進(jìn),有效地減緩了前景運動物體對運動估計的影響,。

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

  移動監(jiān)控系統(tǒng)主要由前端移動監(jiān)控設(shè)備,、3G無線網(wǎng)絡(luò)、服務(wù)器以及手機(jī)客戶端組成,。系統(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è)備視頻軟件主要負(fù)責(zé)對視頻數(shù)據(jù)的采集、去抖動,、編碼以及存儲等工作,。這些工作主要是由encode進(jìn)程完成。encode進(jìn)程包含了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ù)進(jìn)入等待狀態(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線程并不會進(jìn)入等待狀態(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線程在完成了這些準(zhǔn)備工作后就會再次調(diào)用等待函數(shù)Rendezvous_meet(hRendezvousInit)等待其他線程到達(dá)預(yù)定的等待點,。

  主線程被Capture線程喚醒后會接著創(chuàng)建Video線程,,并將視頻數(shù)據(jù)的分辨率參數(shù)傳給Video線程,然后調(diào)用Rendezvous_meet(hRendezvousWriter)等待函數(shù)進(jìn)入等待狀態(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線程完成上述準(zhǔn)備工作后就會調(diào)用等待函數(shù)Rendezvous_meet(hRendezvousInit)等待其他線程到達(dá)預(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ā)送程序讀取。在完成了上述準(zhǔn)備工作后,,Write線程會調(diào)用等待函數(shù)Rendezvous_meet(hRendezvousInit)進(jìn)入等待狀態(tài),。

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

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

  Capture線程首先采集一幀736x576 UYVY格式的數(shù)據(jù),,然后對視頻數(shù)據(jù)進(jìn)行電子穩(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),,等待其他線程一起進(jìn)行清理工作,。

  Video線程在進(jìn)入主循環(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),等待其他線程一起進(jìn)行清理工作,。

  Write線程進(jìn)入主循環(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),,等待其他線程一起進(jìn)行清理工作。

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

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

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

005.jpg

  將每個宏塊在水平方向和垂直方向上分別進(jìn)行灰度投影,并通過互相關(guān)運算求出其運動參數(shù),。下式為進(jìn)行行,、列互相關(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ù)中的高頻抖動部分,,得到低頻的攝像機(jī)正常掃描運動參數(shù),。然后通過總運動參數(shù)和正常掃描的運動參數(shù)得到視頻數(shù)據(jù)的抖動參數(shù)。最后進(jìn)行運動補(bǔ)償處理,,本文通過對穩(wěn)定的前一幀補(bǔ)償?shù)玫较乱环€(wěn)定幀,,為了避免錯誤向后續(xù)幀的傳播,選取每15幀利用一次原始幀做補(bǔ)償,。運動補(bǔ)償以后就得到了穩(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è)備在不同的地方進(jìn)行測試,系統(tǒng)都可以穩(wěn)定運行,。本系統(tǒng)可以廣泛地應(yīng)用于一些無法鋪設(shè)線路的偏遠(yuǎn)地區(qū),,解決了傳統(tǒng)監(jiān)控系統(tǒng)中難以鋪設(shè)線路的問題。

參考文獻(xiàn)

  [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] 梁振濤,,樊澤明,,任永亮,等.基于單片機(jī)的移動監(jiān)控系統(tǒng)硬件設(shè)計[J].微型機(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)載,。