專利名稱:一種攝像頭用應(yīng)急jpeg編碼方法
技術(shù)領(lǐng)域:
本發(fā)明涉及攝像頭圖像編碼技術(shù),具體涉及一種攝像頭用應(yīng)急JPEG編碼 方法。
背景技術(shù):
目前,在JPEG壓縮的視頻傳輸方式中,雖然提供了不同模式的比特率控制 機制,但它們的壓縮效果或者生效比較慢(如ABRC),或者壓縮后數(shù)據(jù)量嚴重依 賴于輸入圖像?,F(xiàn)有的JPEG壓縮編碼算法的基本步驟如下1) 將攝像頭采集的整圖劃分成8^8的圖像塊;2) 正向離散余弦變換(FDCT);3) 量化(Quantization》4) Z字形編碼(Zigzag Scan);5) 使用差分脈沖編碼調(diào)制(Differential Pulse Code Modulation, DPCM) 對直流系數(shù)(DC)進行編碼;6) ^吏用行程長度編碼(Run-Length Encoding, RLE)對交流系數(shù)(AC )進 《亍編碼;7) 熵編碼(Entropy Eoding);8) 編碼數(shù)據(jù)送入緩沖。在攝像頭、特別是PC camera的壓縮圖像傳輸中,由于JPEG的壓縮數(shù)據(jù)傳 輸時并不是按恒定的比特率進行的,有的時候可能會在短時間內(nèi)輸出大量的數(shù) 據(jù),形成一個峰值傳輸,這就對后一級處理模塊的緩沖區(qū)設(shè)計提出了很高的要 求,如果輸入緩沖區(qū)的數(shù)據(jù)速度高過輸出的速度,緩沖區(qū)會在一定時間后充滿, 造成緩沖區(qū)溢出。緩沖區(qū)溢出對于PC camera的應(yīng)用來說是不能被容忍的,因為緩沖區(qū)溢出 會導致視頻流中出現(xiàn)壞幀,而壞幀在視頻中非常顯眼,很容易被用戶觀察到。為了抑制緩沖區(qū)溢出,可以采取加大JPEG的壓縮比的方法減少獲取的數(shù)據(jù) 量,但是對于極其復雜或場景快速移動的圖像,普通的比特率控制方法通常并 不能將數(shù)據(jù)量及時并有效的減少,在某些情況下依然會造成緩沖區(qū)溢出的發(fā)生。 因此迫切需要一種能夠?qū)?shù)據(jù)量及時并有效壓縮的方法。發(fā)明內(nèi)容本發(fā)明的目的在于針對現(xiàn)有技術(shù)中存在的缺陷,提供一種攝像頭用應(yīng)急JPEG編碼方法,該方法能夠及時并有效地減少獲取的數(shù)據(jù)量,同時盡可能保 證圖像質(zhì)量。為實現(xiàn)以上目的,本發(fā)明所采取的技術(shù)方案如下 一種攝像頭用應(yīng)急 JPEG編碼方法,包4舌如下步驟(1 )將采集到的圖像按標準分成像素塊,使用正向離散余弦變換 (forward discrete cosine transform, FDCT)把空間域表示的圖變換成頻率 域表示的圖;(2) 對經(jīng)過正向離散余弦變換(FDCT)后的頻率系數(shù)進行量化,并對量 化后的系數(shù)進行重新編排;(3) 使用差分脈沖編碼調(diào)制(differential pulse code modulation, DPCM)對直流系數(shù)(DC)進行編碼;(4) 監(jiān)測緩沖使用率,選取交流系數(shù)(AC)的數(shù)量,使用行程長度編碼 (run-length encoding, RLE)對所選取的交流系數(shù)(AC)進行編碼;(5 )使用熵編碼對編碼后的直流系數(shù)和交流系數(shù)作進一步的壓縮。進一步,在上述攝像頭用應(yīng)急JPEG編碼方法中,如果步驟(4)中監(jiān)測 的緩沖使用率在警戒限值以內(nèi),則使用4亍程長度編碼(Run-Length Encoding, RLE)對全部交流系數(shù)(AC)進行編碼;如果超出警戒限值,則使用行程長度 編碼(Run-Length Encoding, RLE)對部分交流系數(shù)(AC)進行編碼。再進一步,在上述攝像頭用應(yīng)急JPEG編碼方法中,當步驟(4)監(jiān)測的 緩沖使用率超出警戒限值時,依據(jù)交流系數(shù)的頻率高低,由高至低丟棄交流 系數(shù),對余下的部分交流系數(shù)進行編碼。更進一步,在上述攝像頭用應(yīng)急JPEG編碼方法中,步驟(4)中所選取 的部分交流系數(shù)(AC)的數(shù)量固定不變;或者,在步驟(4)中首先獲取緩沖 使用率超出警戒限值的具體數(shù)值,每次選取的交流系數(shù)(AC)的數(shù)量根據(jù)緩 沖使用率超出警戒限值的具體數(shù)值的不同而變化,交流系數(shù)數(shù)量的變化是通 過查詢預(yù)置的對應(yīng)表來確定的。本發(fā)明的效果在于采用本發(fā)明所述的方法,可以將圖像壓縮到只剩下 直流系數(shù)(DC)和至少一個交流系數(shù)(AC),這種方法在^L頻流壓縮中可以大 大減少數(shù)據(jù)量,避免傳輸緩沖區(qū)溢出而導致的壞幀,同時又可以讓用戶察覺 不到圖像質(zhì)量的變化。而且由于對緩沖區(qū)的使用率隨時監(jiān)測,因此可以根據(jù) 緩沖區(qū)的使用率靈活的調(diào)整壓縮方案,從而進一步減小對圖像質(zhì)量的影響。
圖l是本發(fā)明所述方法的流程圖。
具體實施方式
下面結(jié)合附圖和具體實施例對本發(fā)明作進一步詳細說明。如圖l所示,本發(fā)明所提供的攝像頭用應(yīng)急JPEG編碼方法具體包含以下步驟1. 將攝像頭采集的整圖劃分成8 x 8的像素塊JPEG編碼規(guī)則采用的是8x8大小的子塊的二維離散余弦變換DCT (discrete cosine transform )。在編碼器的輸入端,把原始圖像順序地分割 成一系列8x8的子塊,設(shè)原始圖像的釆樣精度為P位,是無符號整數(shù),輸入時 把[O, 2M]范圍的無符號整數(shù)變成[-2M, 2卜1-l]范圍的有符號整數(shù),以此作為正 向離散余弦變換FDCT ( forward DCT)的輸入。在解碼器的輸出端經(jīng)離散余弦逆 變換(IDCT) ( Inverse DCT)后,得到一系列8 x 8的圖像數(shù)據(jù)塊,需將其數(shù)值 范圍由[-2P—、 2卜1-l]再變回到[O, 2P—1范圍的無符號整數(shù),來獲得重構(gòu)圖像。2. 正向離散余弦變換(FDCT)4吏用正向離散余弦變4奐(forward discrete cosine transform, FDCT)把空間域表示的圖變換成頻率域表示的圖。3. 量化(Quantization)量化是對經(jīng)過FDCT變換后的頻率系數(shù)進行量化。量化的目的是減小非"0" 系數(shù)的幅度以及增加"0"值系數(shù)的數(shù)目。量化是圖像質(zhì)量下降的最主要原因。對于有損壓縮算法,JPEG算法使用均勻量化器進行量化,量化步距是按照 系數(shù)所在的位置和每種顏色分量的色調(diào)值來確定。因為人眼對亮度信號比對色 差信號更敏感,因此使用了兩種量化表亮度量化值和色差量化值。此外,由 于人眼對低頻分量的圖像比對高頻分量的圖像更敏感,因此圖中的左上角的量 化步距要比右下角的量化步距小。4. Z字形編碼(Zigzag Scan)量化后的系數(shù)要重新編排,目的是為了增加連續(xù)的"0"系數(shù)的個數(shù),就是 "0"的游程長度,方法是按照Z字形的式樣編排。這樣就把一個8 x 8的矩陣 變成一個1 x 63的矢量,頻率較低的系數(shù)^:在矢量的頂部,詳細內(nèi)容可參照JPEG 編碼算法標準。5. 孑吏用差分脈沖編碼調(diào)制(Differential Pulse Code Modulation, DPCM) 對直流系數(shù)(DC)進行編碼8 x 8圖像塊經(jīng)過DCT變換之后得到的DC直流系數(shù)有兩個特點, 一是系數(shù)的 數(shù)值比較大,二是相鄰8 x 8圖像塊的DC系數(shù)值變化不大。根據(jù)這個特點,JPEG 算法使用了差分脈沖調(diào)制編碼(DPCM)技術(shù),對相鄰圖像塊之間量化DC系數(shù)的差 值(Delta)進行編碼。6. 判斷緩沖使用率是否超出警戒限值,以此來確定進行編碼的交流系數(shù) (AC )的數(shù)量本發(fā)明的具體特點即集中在該步驟當中,使得可以及時地獲知緩沖使用率 是否超出警戒限值,在可能出現(xiàn)傳輸緩沖區(qū)溢出而導致的壞幀之前,及時調(diào)整 交流系數(shù)(AC)的獲取數(shù)量,而不是一味的采集全部的交流系數(shù)UC),所謂的 交流系數(shù)(AC )即是變換后各個頻率分量的權(quán)重。針對攝像頭、特別是PC camera的特殊應(yīng)用,直接丟棄圖像數(shù)據(jù)在JPEG模塊中量化后的交流系數(shù)(AC )來減少 數(shù)據(jù)量這種方法有可能造成單幀圖像清晰度變差,但是對于人眼來說, 一幅質(zhì) 量不怎好的圖像在視頻流一閃而過要遠比一幅壞幀的出現(xiàn)更難讓人察覺,因此 針對攝像頭、特別是PC camera的應(yīng)用中,這種方法是可行的。在該技術(shù)方案中,可以根據(jù)各個交流系數(shù)(AC)的頻率進行選擇性的獲取, 比如,如果根據(jù)緩沖使用率超出警戒限值的具體數(shù)值,需要在每個8x8的塊中 獲取直流系數(shù)(DC)和62個量化后的交流系數(shù)(AC),那么我們會丟掉頻率最高 也就是包含能量最少的交流系數(shù)(AC),而僅獲取其余的62個量化后的交流系 數(shù)(AC);如果要獲取直流系數(shù)(DC)和61個交流系數(shù)(AC),那么我們會丟掉頻 率最高的兩個交流系數(shù)(AC),而僅獲取其余的61個量化后的交流系數(shù)(AC); 依此類推。最極端的情況下甚至可以丟掉所有的63個交流系數(shù)(AC),只留下 直流系數(shù)(DC),這時數(shù)據(jù)量極度減少,而圖像本身仍有讓人滿意的質(zhì)量。通常 情況下,如果需要丟掉所有的63個交流系數(shù)(AC)只留下直流系數(shù)(DC),則說 明該攝像頭的硬件設(shè)計存在技術(shù)缺陷,因此雖然丟掉所有的63個交流系數(shù)(AC) 只留下直流系數(shù)(DC)是可以選擇的技術(shù)方案,但通常不會出現(xiàn)這種極端的特殊 情況。在上述技術(shù)方案的基礎(chǔ)上,獲取多少個交流系數(shù)(AC)也是有幾種可以選 擇的方案的,例如,可以先獲取緩沖使用率超出警戒限值的具體數(shù)值,然后再 獲取63個交流系數(shù)(AC)中的部分交流系數(shù)(AC),且每次獲取的交流系數(shù)(AC) 凄t量固定不變,使用行程長度編碼(Run-Length Encoding, RLE)對獲取的交 流系數(shù)(AC)進行編碼。也就是說,不論緩沖使用率超出警戒限值的具體數(shù)值 如何波動,只要緩沖使用率超出警戒限值,則后續(xù)的圖象采集就會獲取直流系 數(shù)(DC)和固定個數(shù)的交流系數(shù)(AC )。先獲取緩沖使用率超出警戒限值的具體數(shù)值是可選擇的步驟,而非必備步 驟,該步驟的存在可以為后續(xù)的處理提供更為靈活、便利的有利條件。例如 獲取緩沖使用率超出警戒限值的具體數(shù)值后,再獲取63個交流系數(shù)(AC)中的 部分交流系數(shù)(AC),且每次獲取的交流系數(shù)(AC)數(shù)量根據(jù)緩沖使用率超出警 戒限值的具體數(shù)值的不同而變化,4吏用4亍程長度編碼(Run-Length Encoding, RLE)對獲取的交流系數(shù)(AC)進行編碼。也就是說,隨著緩沖使用率超出警戒 限值的具體數(shù)值波動,則后續(xù)的圖象采集就會獲取直流系數(shù)(DC)和特定個數(shù)的 交流系數(shù)(AC),而特定個數(shù)的交流系數(shù)(AC)的具體數(shù)值則是隨著緩沖使用率超出警戒限值的具體數(shù)值變化的,例如在使用本發(fā)明所述的技術(shù)方案采集圖 象后(也就是說已經(jīng)出現(xiàn)了緩沖使用率超出警戒限值的情況),如果緩沖使用率 超出警戒限值越來越高,則獲取的交流系數(shù)UC)個數(shù)會越來越少,比如說緩 沖使用率警戒限值為80%,而通過監(jiān)測發(fā)現(xiàn)緩沖使用率從81%已經(jīng)上升到87 %,則相應(yīng)的獲取的交流系數(shù)(AC)個數(shù)會從58個減少到22個。上述具體數(shù) 值只是舉例說明,不同的攝像頭可以結(jié)合自身的硬件情況自行設(shè)定具體的數(shù)值, 通常每次獲取的交流系數(shù)(AC)數(shù)量根據(jù)緩沖使用率超出警戒限值的具體數(shù)值 的不同而變化是通過查詢預(yù)置的對應(yīng)表而獲得的,也可以采用其它公知技術(shù)實 現(xiàn)。在上述技術(shù)方案的基礎(chǔ)上,我們還可以在緩沖使用率超出警戒限值的某個 較小范圍內(nèi),采用獲取直流系數(shù)(DC)和固定個數(shù)的交流系數(shù)(AC)的方案,當 緩沖使用率超出警戒限值較大時,采用獲取直流系數(shù)(DC)和特定個數(shù)的交流系 數(shù)UC)的技術(shù)方案,這樣可以在保證圖象質(zhì)量的前提下,更合理的盡可能減 少獲取的數(shù)據(jù)量。7.熵編碼(Entropy Eoding)為了進一步達到壓縮數(shù)據(jù)的目的,需要對量化后的DC碼和AC行程編碼的 碼字再作基于統(tǒng)計特性的熵編碼。JPEG建議使用兩種熵編碼方法哈夫曼 (Huffman)編碼和自適應(yīng)二進制算術(shù)編碼(adaptive binary arithmetic coding)。熵編碼可分成兩步進行,首先把DC碼和行程碼字轉(zhuǎn)換成一個中間符 號序列,然后給這些符號賦以變長碼字。本發(fā)明所述的方法可以有效避免傳輸緩沖區(qū)溢出而導致的壞幀,可以根據(jù) 緩沖區(qū)的使用率靈活的調(diào)整壓縮方案,提高視頻效果。應(yīng)該說明的是,本發(fā)明 并不限于具體實施方式
中所述的實施例,本領(lǐng)域技術(shù)人員根據(jù)本發(fā)明的技術(shù)方 案得出其他的實施方式,同樣屬于本發(fā)明的技術(shù)創(chuàng)新范圍。
權(quán)利要求
1. 一種攝像頭用應(yīng)急JPEG編碼方法,包括如下步驟(1)將采集到的圖像按標準分成像素塊,使用正向離散余弦變換把空間域表示的圖變換成頻率域表示的圖;(2)對經(jīng)過正向離散余弦變換后的頻率系數(shù)進行量化,并對量化后的系數(shù)進行重新編排;(3)使用差分脈沖編碼調(diào)制對直流系數(shù)進行編碼;(4)監(jiān)測緩沖使用率,選取交流系數(shù)的數(shù)量,使用行程長度編碼對所選取的交流系數(shù)進行編碼;(5)使用熵編碼對編碼后的直流系數(shù)和交流系數(shù)作進一步的壓縮。
2. 如權(quán)利要求1所述的攝像頭用應(yīng)急JPEG編碼方法,其特征在于如 果步驟(4)中監(jiān)測的緩沖使用率在警戒限值以內(nèi),則使用行程長度編碼對全 部交流系數(shù)進行編碼。
3. 如權(quán)利要求1所述的攝像頭用應(yīng)急JPEG編碼方法,其特征在于如 果步驟(4)中監(jiān)測的緩沖使用率超出警戒限值,則使用行程長度編碼對部分 交流系數(shù)進行編碼。
4. 如權(quán)利要求3所述的攝像頭用應(yīng)急JPEG編碼方法,其特征在于當 步驟(4)監(jiān)測的緩沖使用率超出警戒限值時,依據(jù)交流系數(shù)的頻率高低,由 高至低丟棄交流系數(shù),對余下的部分交流系數(shù)進行編碼。
5. 如權(quán)利要求4所述的攝像頭用應(yīng)急JPEG編碼方法,其特征在于步驟 (4)中所選取的部分交流系數(shù)的數(shù)量固定不變。
6. 如權(quán)利要求4所述的攝像頭用應(yīng)急JPEG編碼方法,其特征在于在步 驟(4)中首先獲取緩沖使用率超出警戒限值的具體數(shù)值,每次選取的交流系數(shù) 的數(shù)量根據(jù)緩沖使用率超出警戒限值的具體數(shù)值的不同而變化。
7. 如權(quán)利要求6所述的攝像頭用應(yīng)急JPEG編碼方法,其特征在于所述 的交流系數(shù)數(shù)量的變化是通過查詢預(yù)置的對應(yīng)表來確定的。
8. 如權(quán)利要求1所述的攝像頭用應(yīng)急JPEG編碼方法,其特征在于步驟(1 )中將采集到的圖像劃分成8 x 8的像素塊。
9.如權(quán)利要求1所述的攝像頭用應(yīng)急JPEG編碼方法,其特征在于步驟 (2 )中是通過Z字形編碼對量化后的系數(shù)進行重新編排。
全文摘要
本發(fā)明涉及攝像頭圖像編碼技術(shù),具體涉及一種攝像頭用應(yīng)急JPEG編碼方法。該方法將采集到的圖像按標準分成像素塊,使用正向離散余弦變換把空間域表示的圖變換成頻率域表示的圖;對經(jīng)過正向離散余弦變換后的頻率系數(shù)進行量化,并對量化后的系數(shù)進行重新編排;使用差分脈沖編碼調(diào)制對直流系數(shù)進行編碼;監(jiān)測緩沖使用率,選取交流系數(shù)的數(shù)量,使用行程長度編碼對所選取的交流系數(shù)進行編碼;使用熵編碼對編碼后的直流系數(shù)和交流系數(shù)作進一步的壓縮;將編碼數(shù)據(jù)送入緩沖。該方法可以有效避免傳輸緩沖區(qū)溢出而導致的壞幀,可以根據(jù)緩沖區(qū)的使用率靈活的調(diào)整壓縮方案,提高視頻效果。
文檔編號H04N7/26GK101287121SQ20081010543
公開日2008年10月15日 申請日期2008年4月30日 優(yōu)先權(quán)日2008年4月30日
發(fā)明者吳大畏 申請人:北京中星微電子有限公司