藍(lán)麗金 江勇捷
摘要:為了提高圖片的傳輸速度和質(zhì)量,需對圖片信息先壓縮后傳輸,從而數(shù)據(jù)的儲存減少,傳輸速度提高,傳輸時間縮短,傳輸質(zhì)量大大提高。本文采用ARM作為主控芯片充分利用了它的硬件資源和軟件資源,實現(xiàn)圖像對圖像的編碼和解碼過程。本研究根據(jù)要求設(shè)計了一套實驗樣機,最后的測試結(jié)果表明,該方案設(shè)計基本合理,具有一定的可行性。實驗調(diào)試效果不錯,基本能滿足設(shè)計要求,且經(jīng)過處理過后的圖像能清晰的顯示。
關(guān)鍵詞:JPEG;圖像壓縮;圖像編碼;圖像解碼
中圖分類號:TP302 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2019)10-0105-02
0 引言
隨著多媒體技術(shù)的高速發(fā)展,靜態(tài)圖像的應(yīng)用越來越廣泛,圖像的存儲和圖像的傳輸是靜態(tài)圖像應(yīng)用的兩個重要方面;但根據(jù)現(xiàn)實應(yīng)用情況來看,靜態(tài)圖像的存儲過程中占用了我們越來越多的存儲空間[1]。因此,對靜態(tài)圖像的壓縮成為了一個研究熱點。
由于圖像文件傳輸占用大量帶寬,同時圖像文件存儲也占用了大量內(nèi)存空間,故近年來,研究人員對圖像壓縮技術(shù)越來越重視,而大部分信息行業(yè)依賴于圖像壓縮技術(shù)來解決圖像傳輸占用大量帶寬和浪費大量內(nèi)存空間的問題,這就進(jìn)一步推動了圖像壓縮技術(shù)的發(fā)展。有了圖像壓縮技術(shù),人們不再因移動存儲設(shè)容量不足而無法拷貝圖像等資料的困擾。此外,很多新的圖像處理技術(shù)也隨著數(shù)字化媒體技術(shù)的發(fā)展而逐步優(yōu)化,如圖像的建檔和遠(yuǎn)程診斷以及通信系統(tǒng)等應(yīng)用場合。本文采用JPEG標(biāo)準(zhǔn)對圖像進(jìn)行編、解碼的研究。圖像的解碼是編碼的逆過程,由于本文是對已壓縮的JPEG圖像進(jìn)行再次壓縮(有損壓縮),因此,只需要先熵解碼,反量化,然后進(jìn)行新的表量化,刪除了冗余圖像數(shù)據(jù),并再編碼,省去了DCT和IDCT、顏色轉(zhuǎn)換,使得讓轉(zhuǎn)換速度大大提高。
1 系統(tǒng)硬件組成
Tiny6410是一款以ARM11作為主處理器的核心控制器,該CPU設(shè)計是基于ARM1176JZF-S核,大量的多媒體處理單元集成在內(nèi)部,支持多種格式的視頻文件硬件編碼和解碼,可在LCD和TV端顯示;它同時帶有3D圖形加速器,以實現(xiàn)加速渲染功能,它支持2D圖形圖像的平滑縮放、翻轉(zhuǎn)等動作。它集成了128M DDR RAM,256M/1GB SLC Nand Flash存儲器。本文的圖片獲取采用天敏mini眼攝像頭,ARM采用Linux系統(tǒng),圖形界面使用QT。
2 圖像解碼
2.1 讀入圖像的標(biāo)志信息
根據(jù)JPEG專家組定義的JFIF交換格式,JPEG文件的組成有8個部分[2]:圖像開始SOI標(biāo)記、APP0標(biāo)記、APPn標(biāo)記(其中n=1~15任選)、一個或者多個量化表DQT、幀圖像開始SOF0、一個或者多個霍夫曼表DHT、掃描開始SOS、壓縮圖像數(shù)據(jù)、圖像結(jié)束EOI。通過這些標(biāo)志,把要解碼的文件的相關(guān)信息都讀出來,做好解碼工作的準(zhǔn)備。
不同的的變量結(jié)構(gòu)體首先被定義出來,該變量結(jié)構(gòu)體對應(yīng)各個標(biāo)記,用來存儲標(biāo)記內(nèi)表示的信息。其中有以下幾項信息是比較重要的,即圖像長寬、水平/垂直采樣因子、哈夫曼表和多個量化表等多項信息。(1)根據(jù)標(biāo)志位讀入圖像信息;(2)確定字的高低位;(3)掃描并讀出出哈夫曼表;(4)通過哈夫曼表建立哈夫曼樹。
2.2 熵解碼
由于8*8數(shù)據(jù)塊是JPEG圖片格式的一般結(jié)構(gòu),圖像數(shù)據(jù)是存儲信息的單位是位,同時,內(nèi)部數(shù)據(jù)實際是在編碼過程中實現(xiàn)時域到頻域的變換,從而得到結(jié)果。所以,1個直流分量與63個交流分量構(gòu)成了每個單元顏色分量。而查找哈夫曼樹的思路其實就是解碼的步驟。
各個顏色分量所相應(yīng)的直流和交流分量使用的哈夫曼樹編號是通過先獲取標(biāo)記段SOS中的各個顏色分量的信息而獲取的,如表1所示,為各個顏色分量對應(yīng)的編號。
以下為解析一個顏色分量單元的步驟:
(1)從需要的顏色分量單元數(shù)據(jù)流的開頭開始一位一位的讀取,然后再查直流哈夫曼樹,直到該分量直流哈夫曼樹的某個碼字與讀入的編碼進(jìn)行比較而一致時獲得該碼字對應(yīng)的權(quán)值。通過8個位的位數(shù)來表示權(quán)值直流分量數(shù)值,這也是作為接下來所讀入的解碼位數(shù)。
(2)再繼續(xù)的一位位的讀入數(shù)據(jù),直到該分量交流哈夫曼樹的某個碼字(葉子結(jié)點)與讀入的編碼一致,然后用交流哈夫曼樹取得該碼字的權(quán)值。權(quán)值的低4位表示該交流分量數(shù)值的二進(jìn)制位數(shù),高4位表示當(dāng)前數(shù)值前面有多少個連續(xù)的零,因此,第低4位就是接下來要讀入的位數(shù)。
(3)連續(xù)不斷重復(fù)以上第2個步驟,直到滿足兩個交流分量數(shù)據(jù)結(jié)束條件其中一個即可,兩個結(jié)束條件為:
第一,當(dāng)讀入碼字的權(quán)值為零時表示接下來的交流分量全部為零;
第二,已經(jīng)讀入63個交流分量。
2.3 直流系數(shù)的差分解碼
把所有單元的顏色分量分別按Y分量、Cr分量、Cb分量進(jìn)行分類。每種分量內(nèi),兩個相鄰的顏色分量的直流變量的編碼方式為差分方式,意味著,熵解碼出來的直流變量數(shù)值只是當(dāng)前顏色分量單元的相鄰兩個單元的差值。所以當(dāng)前得到的變量值需要加上他們的差分變量[3]進(jìn)行校正,即如公式(1)所示。
2.4 反量化
從獲取的JPEG的文件信息中,在標(biāo)記段SOF中的信息字段可以查出亮度和色度各自使用不同的量化表。
圖像的所有圖片數(shù)據(jù)都要進(jìn)行反量化,反量化的過程相對比較簡單,只需要對8*8的顏色分量單元里的64個值一一對應(yīng)的乘以所對應(yīng)的量化表內(nèi)相同位置的值即可。
3 圖像編碼
3.1 量化
由于人眼視覺特性,JPEG針對此特性設(shè)計了相應(yīng)的量化表。量化對于前面得到的64個空間頻率振幅值按比例縮小,并取四舍五入的整數(shù)值的處理過程稱為量化。JPEG標(biāo)準(zhǔn)中推薦的量化表[5]如表2所示。共有64個元素,按照從上到下,從左到右的順序與FDCT變換后的幅值對應(yīng),每一元素記為Q(u,v),u和v對應(yīng)行和列,量化公式[4]為式(2):
本設(shè)計采用有損壓縮,亮度量化表采用Q=100,色彩量化表Q=50。這樣,圖像看起來就跟灰度圖像差不多,把色度都過濾掉。大大壓縮了圖片。
3.2 熵編碼
熵編碼也可以說是哈夫曼編碼,其編碼步驟是重復(fù)使用的數(shù)據(jù)采取較短的代碼代替,較長的代碼代替較少使用的數(shù)據(jù),每個數(shù)據(jù)的代碼各不相同。由于這些代碼都是二進(jìn)制碼,同時代碼的長度是可變的,所以就實現(xiàn)了代碼壓縮的目的[5]。
以下為具體的哈夫曼編碼步驟:
第一步,每個符號出現(xiàn)頻率首先被統(tǒng)計出來;
第二步,按從小到大的順序排列上述得到的從左到右的頻率;
第三步, 每一次選出最小的兩個值就是二叉樹的兩個葉子節(jié)點,這就是它們的根節(jié)點,該節(jié)點不再參與比較,而新的根節(jié)點參與比較。
(4)重復(fù)(3),直到最后得到和為1的根節(jié)點。
產(chǎn)生哈夫曼編碼需要對原始數(shù)據(jù)掃描兩遍。第一遍掃描要精確地統(tǒng)計出原始數(shù)據(jù)中每個值出現(xiàn)的頻率,第二遍是建立哈夫曼樹并進(jìn)行編碼。需要建立二叉樹并遍歷二叉樹生成編碼,因此數(shù)據(jù)壓縮和還原速度都較慢,但簡單有效,因而得到廣泛應(yīng)用。
4 實驗測試及結(jié)果分析
圖1中左邊為經(jīng)過解碼之后再編碼的的圖像,右邊為攝像頭直接獲取的圖片??梢詮膱D片看出,經(jīng)過處理后的圖像色彩已經(jīng)失真的,是由于本設(shè)計采用的是有損壓縮,而且為了達(dá)到更大的壓縮比,把原始圖像里面的色度給剔除。
圖2為處理前后的圖片的大小,abc.jpg為處理后的圖像,bac.jpg為原始圖像??梢钥闯?,把原始圖像從19.3K壓縮到4.7K左右。剔除色彩后,可以再次壓縮4倍。這使得網(wǎng)絡(luò)傳輸?shù)乃俣却蟠筇岣吡恕?/p>
參考文獻(xiàn)
[1] 陳雪松,王海巍.JPEG壓縮編碼算法應(yīng)用及發(fā)展前景研究[J].計算機應(yīng)用與數(shù)字工程,2009,1:57-90.
[2] 許剛,廖斌,李承毅.JPEG圖象文件格式分析[J].計算機系統(tǒng)應(yīng)用,1998(10):37-39.
[3] 劉方敏,等.JPEG2000圖像壓縮過程廈原理概述[J].計算機輔助設(shè)計與圖形學(xué)報,2002:3-6.
[4] 吳樂南.數(shù)據(jù)壓縮[M].電子工業(yè)出版社,2005.
[5] 嚴(yán)劍.Huffman算法及其在數(shù)據(jù)壓縮中的應(yīng)用[J].計算機與現(xiàn)代化,1996(48):15-20.