《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 一種提高視頻壓縮速度的改進(jìn)算法

一種提高視頻壓縮速度的改進(jìn)算法

2008-07-17
作者:江加加,,楊成忠,,周 韻

??? 摘 要: 分析了噪聲對視頻圖像壓縮速度的影響及傳統(tǒng)去噪" title="去噪">去噪方法的性能缺陷,提出了使用二次殘差算法來改進(jìn)由于噪聲引起誤判的思想,以提高壓縮速度,。實(shí)驗(yàn)結(jié)果說明,該方法能有效地減少由噪聲帶來的誤判,在壓縮速度上也較傳統(tǒng)方法有一定的改善。
??? 關(guān)鍵詞: 視頻圖像? 壓縮速度? 殘差算法

?

??? 隨著全世界安防事業(yè)的迅猛發(fā)展,,視頻監(jiān)控" title="視頻監(jiān)控">視頻監(jiān)控系統(tǒng)的應(yīng)用越來越廣泛,視頻卡的需求也隨之增加,。由于原始視頻數(shù)據(jù)量很大,,直接對其進(jìn)行存儲與傳輸實(shí)現(xiàn)起來比較困難。故在保證圖像質(zhì)量的前提下,,減少圖像的數(shù)量,,提高壓縮速度將成為研究的重點(diǎn)。
??? 視頻圖像之所以可以被壓縮,,是因?yàn)樗鼈兇嬖谥芏鄶?shù)據(jù)冗余[1]:視覺冗余,、空間冗余、時間冗余以及編碼冗余[2-3],。在視頻壓縮過程中,,最重要的是減少視頻的時間冗余,即同一像素點(diǎn)在不同時刻具有很大的相關(guān)性,,稱為時間上的冗余,。由于視頻是一系列的圖像序列,很多時候前一幀與后一幀的差別并不大,,如果每一幀圖像都傳送將會存在很多冗余,。故對有運(yùn)動的塊進(jìn)行編碼傳輸,忽略沒有運(yùn)動的塊,,就可以達(dá)到比較高的壓縮比率,。
??? 在判斷宏塊" title="宏塊">宏塊是否有運(yùn)動的時候,通常采用殘差計(jì)算,,當(dāng)結(jié)果超過閾值時就進(jìn)行后續(xù)運(yùn)算編碼,。但是在視頻監(jiān)控中的視頻壓縮與通常的影片視頻壓縮有很大的不同,在實(shí)際使用中會有很多圖像噪聲,。而噪聲的引入會對判斷宏塊是否有運(yùn)動造成影響,增加了許多額外的運(yùn)動向量估計(jì),,減緩了壓縮速度,。本文針對如何減少圖像噪聲帶來的影響,提出了一種改進(jìn)的殘差計(jì)算方法,,有效地優(yōu)化了視頻壓縮速度,。
1 殘差算法改進(jìn)的原因
1.1 圖像的噪聲

??? 在視頻監(jiān)控系統(tǒng)中,攝像頭中的CCD感光器件將光信號轉(zhuǎn)換成電信號形成了圖像信號,,但是在這個過程中卻不可避免地引發(fā)了噪聲問題,。圖像中的噪點(diǎn)一般是由CCD噪聲形成的,主要有散粒噪聲、暗電流噪聲,、轉(zhuǎn)移噪聲,。當(dāng)CCD在低光照、低反差下應(yīng)用時,散粒噪聲成為主要的噪聲源,,它是CCD敏感器件所固有的噪聲,不能被后續(xù)電路所抑制或抵消[4],。因此,在視頻監(jiān)控實(shí)際使用過程中,,圖像的噪點(diǎn)主要是由CCD形成的散粒噪聲所引起的,。
??? 圖像去除白噪聲" title="白噪聲">白噪聲的方法已經(jīng)有很多經(jīng)典的算法,如平均濾波,、中值濾波以及頻域?yàn)V波等,。但是傳統(tǒng)的去噪方法不能完全適用,主要原因:(1)去噪算法本身需要增加很多運(yùn)算量,,因此很難加快壓縮速度,。(2)由于白噪聲的隨機(jī)性,即使運(yùn)用去噪算法,,后兩幀所得的結(jié)果不會一致,,還是會造成前后幀的殘差過大。(3)對于需要傳輸?shù)膱D像或者圖像的某一部分,,壓縮算法都會進(jìn)行離散余弦變換DCT(Discrete Cosine Transform),,并且對高頻分量的量化步長會比較大,這也將影響圖像的去噪效果,。
??? 因此傳統(tǒng)的去噪方法不會提高視頻壓縮的速度,,故達(dá)不到所要求的目的。
1.2 殘差算法
??? 在視頻壓縮的過程中,,最重要的工作是消除時間上的冗余性,,即盡量去除幀與幀之間的冗余。對于XVID編碼格式,,幀分成VOP_I與VOP_P,。VOP_I采用幀間編碼模式,VOP_P采用幀內(nèi)編碼模式,。幀內(nèi)編碼采用的是類似于JPEG壓縮算法即將一幀圖像傳輸過去,,而幀間編碼是將兩幀之間的差值傳送過去。在幀間編碼的過程中,,首先對圖像分成16×16的宏塊,,然后判斷該宏塊是否相對于前一幀運(yùn)動,如果沒有運(yùn)動,,則設(shè)置成SKIP模式不進(jìn)行編碼,;如果視頻能夠盡可能地使用幀間編碼方式,,同時又有許多的宏塊是SKIP模式的,則可以不進(jìn)行最為耗時的運(yùn)動估計(jì)算法" title="估計(jì)算法">估計(jì)算法,,而視頻流將會比較小,,編碼的速度也會大大增加。
??? 在幀間編碼方式上,,判斷一幀圖像是否有運(yùn)動,,需要將其編碼成SKIP模式,主要是與前一幀圖像進(jìn)行如下殘差計(jì)算:

???

??? 由前面的分析可知,,圖像的噪點(diǎn)主要是由散粒噪聲所引起的,,特別是在光線不足的情況下噪點(diǎn)越發(fā)明顯。由于噪點(diǎn)的引入使得原本沒有變化的兩幀圖像計(jì)算得到的殘差SAD很大,,超過了判斷閾值,,被誤判為運(yùn)動塊,進(jìn)行了非常耗時的DCT或者運(yùn)動向量估計(jì)算法,,造成了視頻壓縮速度的降低以及傳輸碼流的增大,。為此,提出了對SAD殘差算法的改進(jìn),。
2 殘差SAD算法的改進(jìn)
??? 由于噪點(diǎn)的引入,,使得原有SAD算法判斷圖像運(yùn)動與否的過程出現(xiàn)了很多誤判,為了減少這種誤判提出了對原有SAD算法的改進(jìn),,增加了二次殘差判斷SAD′,。二次計(jì)算殘差的SAD′算法如下:

???

??? 式(2)與式(1)原有的SAD相比只是將取絕對值放到了對所有點(diǎn)殘差求和之后。其實(shí)驗(yàn)結(jié)果:兩幀沒有變化的圖像如圖1所示,,將圖1中圖像的每個像素相減求差后得到結(jié)果如圖2所示,。

?

?


??? 由圖2可以看出,差值基本符合白噪聲的規(guī)律,。SAD算法是將每個差值取絕對值后累加得到的SAD(MBM×N),,其值將遠(yuǎn)遠(yuǎn)大于運(yùn)動閾值。而在本文提出的改進(jìn)SAD′算法中是將每個差值直接累加后取絕對值,。由于白噪聲的統(tǒng)計(jì)特性,,所得到的結(jié)果SAD′(MBM×N)非常接近于0。即式(2)可以等效于式(3),。

???

式中,,Y(x,y)為當(dāng)前幀圖像,,Ypre(x,y)為前一幀圖像,,N(x,,y)為當(dāng)前幀散粒噪聲,Npre(x,y)為前一幀散粒噪聲,。由于圖像未運(yùn)動Y(x,,y)=Y(jié)pre(x,y),,又因?yàn)榘自肼暤慕y(tǒng)計(jì)特性因此SAD′(MBM×N)理論值為0,,與實(shí)驗(yàn)結(jié)果相吻合。
??? 在運(yùn)算殘差過程中,,如果SAD值大大超過閾值,,則需要進(jìn)行二次閾值判斷SAD′;如果是噪聲引起的殘差值,,則可以很有效地避免誤判,,而不需要進(jìn)行耗時的運(yùn)動向量估計(jì)算法。
3 改進(jìn)殘差算法的應(yīng)用
??? 本文選用MPGE-4編碼器作為視頻編碼器,,并采用源碼開發(fā)的XVID壓縮格式,。為了提高壓縮速度,選用XVID中的single pass編碼方式[5],。
3.1 MPGE-4編碼器工作流程
??? 首先判斷采用幀內(nèi)編碼模式還是幀間編碼模式,,即判斷是否對整一幅圖像進(jìn)行編碼還是對某些部分進(jìn)行編碼。若采用幀內(nèi)編碼其原理如JPEG算法,;若采用幀間編碼,,則需要將圖像分塊判斷該塊是否運(yùn)動,通過殘差計(jì)算與前一幀圖像進(jìn)行比較,。如果是靜止塊則設(shè)置成SKIP模式進(jìn)行簡單的處理,;如果是運(yùn)動塊則進(jìn)行運(yùn)動向量估計(jì)。編碼器的工作流程如圖3所示,。

?


3.2 二次殘差算法的驗(yàn)證
??? 在整個編碼流程中有兩處用到了殘差算法:
??? (1)在判斷是采用幀間編碼還是幀內(nèi)編碼時調(diào)用了MEanalysis函數(shù),。MEanalysis的原理是:如果某個宏塊的殘差的sad大于該宏塊的平均值的偏離,則使用intra方式,;否則使用inter方式,,然后對這些宏塊進(jìn)行統(tǒng)計(jì),得到整幀的編碼方式,,即if(sSAD>IntraThresh2) return I_VOP,;//IntraThresh=90。
??? (2)在采用幀間編碼確定SKIP模塊時,,每個宏塊調(diào)用sad16v計(jì)算本宏塊與參考幀對應(yīng)位置的宏塊的亮度的殘差,,將其保存在相應(yīng)的數(shù)組中;然后調(diào)用sad8兩次,,分別計(jì)算u分量和v分量的殘差,,也保存在相應(yīng)的數(shù)組中,。如果該宏塊的量化差值為0,并且所記錄的最大亮度塊殘差沒有超過SKIP模式的閾值,,則使用xvid_me_SkipDecisionP確認(rèn)符合SKIP模式,。即:
??? if(iSAD>=BFRAME_SKIP_THRESHHOLD?鄢pMB->quant)
??? { bSkip=0;/?鄢could not SKIP?鄢/}//BFRAME_SKIP_THRESHHOLD=30
?? ?通過上述函數(shù)分析可知,,在幀內(nèi)編碼模式和幀間編碼的確定過程中,,都是通過計(jì)算殘差SAD得到的,而且在判斷宏塊是否為SKIP模式時還需要通過Y,、U,、V三次計(jì)算殘差。
??? 在本應(yīng)用中將上述兩個判斷引入二次殘差算法計(jì)算SAD′,,同時加大了閾值門限IntraThresh和BFRAME_SKIP_THRESHHOLD(分別增加了10%),,并分別設(shè)為99和33,并且在判斷宏塊是否為SKIP模式時只對亮度信號進(jìn)行殘差運(yùn)算忽略色度信號,,達(dá)到了一定效果,。其編碼器速度優(yōu)化結(jié)果如表1所示。

?


??? 表1是在低照度,、分辨率為360×288的情況下得到的結(jié)果,。從表中數(shù)據(jù)可以看出,改進(jìn)以后壓縮速度提高了40%以上,,因此,,在保證視頻顯示效果的同時,增加二次殘差計(jì)算能夠大大減少誤判,,可有效提高壓縮速度,。
??? 在保證圖像不失真的前提下,提高壓縮速度是當(dāng)前視頻編碼的熱點(diǎn)問題,。本文在原有殘差算法的基礎(chǔ)上,,給出了一種適用于MPEG環(huán)境的二次殘差算法。與傳統(tǒng)算法相比,,該方法可以更有效地避免由于噪聲引起的運(yùn)動塊誤判,。應(yīng)用表明,改進(jìn)后的算法可以明顯提高壓縮速度,,有效解決由CCD噪聲引起的運(yùn)動誤判問題,。
參考文獻(xiàn)
[1] 薛文通,宋建社,,袁禮海,,等.圖像壓縮技術(shù)的現(xiàn)狀與發(fā)展.計(jì)算機(jī)工程與應(yīng)用,2003,,(2).
[2] TORRES L,,KUNT M.Video coding:the second generation?approach[M].Englewood Cliffs,,NJ:Kluwer,,1996.
[3] SALEMBIER P,,TORRES L,MEYER F,,et al.Region-based video coding using mathematical morphology[J].Proc.IEEE,,1995,83(6):843-857.
[4] 謝小權(quán).低照度CCD圖像采集及噪聲預(yù)處理.電子技術(shù)應(yīng)用,,2000,,26(8):11-12.
[5] 王文慶,毛文林,,張利飛.基于MPEG-4的視頻監(jiān)控系統(tǒng)模型及實(shí)現(xiàn).計(jì)算機(jī)工程,,2006,(11).

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。