?
Research on JPEG baseline image compression method in DMB system
Abstract:The paper realized of the progressive JPEG and baseline JPEG mode sending and decoding display. The method is economical and feasible, improving the different coding modes JPEG breadth of scope and enhancing the user experience.
Key words:Joint Picture Experts Group ;TPEG; software and hardware co-design
重慶郵電大學(xué)微電子實驗室開發(fā)的DMB多媒體廣播技術(shù),可通過廣播傳輸音頻、JPEG圖片、視頻?,F(xiàn)有的很多終端是JPEG硬解碼,由于計算能力經(jīng)濟(jì)成本等方面的限制,只支持基線格式,因此需要在發(fā)射端把漸進(jìn)式轉(zhuǎn)換成基線式,因此本文設(shè)計這樣一個算法,這個算法可以直接嵌入到DMB 發(fā)射軟件中。
除了傳送高質(zhì)量的聲音節(jié)目,數(shù)字廣播還可傳送數(shù)據(jù)業(yè)務(wù),如數(shù)據(jù)圖像業(yè)務(wù)、視頻業(yè)務(wù)。圖片數(shù)據(jù)業(yè)務(wù)終端在接收到數(shù)據(jù)包后,根據(jù)每個數(shù)據(jù)包攜帶屬于何種業(yè)務(wù)的標(biāo)識、地址,將這些包所攜帶的的有用數(shù)據(jù)組織在一起就可以得到一張完整的JPEG圖片,然后對JPEG圖片解碼即可。JPEG文件有兩種保存方式,分別是Baseline JPEG(標(biāo)準(zhǔn)型)和Progressive JPEG(漸進(jìn)式)。這兩種文件掃描區(qū)別如圖1所示。
圖1 baseline jpeg和progressive jpeg顯示jpeg的區(qū)別
Baseline jpeg逐行掃描。Progressive JPEG文件多次掃描,文件的缺點就是占用用戶的CPU和內(nèi)存大,這對嵌入式接收終端來說是非常寶貴的。
基本思路為在JPEG Encoder加入LibJPEG庫,讀取不同編碼模式的JPEG數(shù)據(jù),然后按照基本JPEG系統(tǒng)編碼流程(如圖2所示),解析為終端可解碼的連續(xù)壓縮模式的JPEG。
圖2 基本JPEG算法環(huán)節(jié)
2.1 色彩變換與部分?jǐn)?shù)據(jù)取樣
色彩變換將計算機屏幕顯示使用的RGB色彩數(shù)據(jù)按照(1)式給定的關(guān)系,轉(zhuǎn)換成JPEG中使用的YCbCr數(shù)據(jù),其中Y是顏色的亮度,CbCr是色調(diào)。
Y=0.2999R+0.5870G+0.1140
Cb=-0.1687R-0.3313G+0.5000B+128
Cr=0.5000R-0.4187G-0.0813B+128
2.2 離散余弦變換(DCT)和頻率量化
基于DCT的JP EG基線壓縮算法首先把原始圖像分割成8X 8的像素快,然后對各分塊做前向二維DCT變換得到8X 8的DCT變換系數(shù)矩陣(正變換和逆變換式如下式(1)(2))。
式中:
C(v)=1(其它情況);f8×8為原始矩陣,F(xiàn)8×8為頻域矩陣。
頻率量化是JPEG算法得高壓縮比和可控壓縮的主要手段。量化器通過對CB的每個數(shù)據(jù)除以給定的量化值(量化粒度)完成量化,如式(3):
式中,B8×8是量化結(jié)果;F8×8是待量化的數(shù)據(jù);Q8×8是量化表元表元素。經(jīng)過量化以后,矩陣B8×8中將出現(xiàn)很多值為0的高頻分量。為了提高游程編碼的編碼效率,將量化結(jié)果保存為序列Z。Z為矩陣B8×8的自左上角開始的折形排列:
2.3 熵編碼
經(jīng)DCT變換量化后低頻分量主要集中在變換塊的左上角。左上角第一個系數(shù)稱為直流(DC)系數(shù),是8X 8子塊的平均值,要對它單獨編碼,采用差分編碼( DPCM )。其他63個系數(shù)稱為交流(AC)系數(shù),進(jìn)行行程編碼。
為了對信息進(jìn)行進(jìn)一步的壓縮,還要對RLC編碼的中間格式進(jìn)行熵編碼。熵編碼采用包括查分編碼、游程編碼、變長編碼、哈夫曼編碼在內(nèi)的許多編碼技術(shù)。JPEG基本順序編碼解碼器具體規(guī)定用Huffman編碼。Huffman編碼用較少的二進(jìn)制碼字表示出現(xiàn)頻率較高的信元,從而達(dá)到縮減數(shù)據(jù)量的目的。
JPEG文件結(jié)構(gòu)的每個標(biāo)記都是由2個位元組組成,其前一個位元組是固定值0xFF。每個標(biāo)記之前還可以添加數(shù)目不限的0xFF填充位元組。轉(zhuǎn)baseline jpeg命令行:jpegtran-copy none -optimize <source.jpg><result.jpg>,通過ultraedit分析軟件處理前后的JPEG文件對比,Procressive JPEG 有FFC2漸進(jìn)壓縮模式標(biāo)記碼,Baseline jpeg沒有FFC2標(biāo)記碼,達(dá)到了設(shè)計要求。
圖3 Progressive DCT JPEG
圖4 Baseline DCT JPEG
圖5 解碼示例
將文件分別上傳到發(fā)射系統(tǒng)客戶端,Progressive DCT JPEG無法解碼顯示,輸出Baseline DCT JPEG終端解碼顯示效果如圖5所示。
本文提出了DMB發(fā)送端軟件處理圖像,終端硬件JPEG解碼協(xié)同工作。實現(xiàn)了progressive 編碼模式JPEG轉(zhuǎn)為終端可解碼的baseline JPEG,該方法經(jīng)濟(jì)可行提高了不同編碼模式JPEG適用范圍的廣泛性,提升了用戶體驗度。
參考文獻(xiàn)
[1]王國裕,張紅升,陸明瑩.我國數(shù)字廣播的發(fā)展方向[J].科學(xué)通報,2014,59(23):2320-2327.
[2]趙恒陽,劉華.Baseline JPEG壓縮器在Xilinx FPGA上的設(shè)計與實現(xiàn)[J].電子設(shè)計工程,2014(10): 153-156.
張殿堯(1988—),重慶郵電大學(xué)光電工程學(xué)院碩士研究生在讀,主要研究方向:集成電路工程,熟悉vc++編程、圖像處理。
程康(1993—),重慶郵電大學(xué)光電工程學(xué)院碩士研究生在讀,主要研究方向:集成電路系統(tǒng)與芯片設(shè)計,熟悉windows編程,unix編程,音視頻封裝。
作者簡介: