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

一種提高視頻壓縮速度的改進算法

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

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

?

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

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

???

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

???

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

?

?


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

???

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

?


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

?


??? 表1是在低照度,、分辨率為360×288的情況下得到的結(jié)果,。從表中數(shù)據(jù)可以看出,,改進以后壓縮速度提高了40%以上,因此,,在保證視頻顯示效果的同時,,增加二次殘差計算能夠大大減少誤判,可有效提高壓縮速度,。
??? 在保證圖像不失真的前提下,,提高壓縮速度是當前視頻編碼的熱點問題。本文在原有殘差算法的基礎上,,給出了一種適用于MPEG環(huán)境的二次殘差算法,。與傳統(tǒng)算法相比,該方法可以更有效地避免由于噪聲引起的運動塊誤判,。應用表明,,改進后的算法可以明顯提高壓縮速度,有效解決由CCD噪聲引起的運動誤判問題,。
參考文獻
[1] 薛文通,,宋建社,袁禮海,,等.圖像壓縮技術的現(xiàn)狀與發(fā)展.計算機工程與應用,,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] 謝小權.低照度CCD圖像采集及噪聲預處理.電子技術應用,2000,,26(8):11-12.
[5] 王文慶,,毛文林,張利飛.基于MPEG-4的視頻監(jiān)控系統(tǒng)模型及實現(xiàn).計算機工程,,2006,,(11).

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