999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種可移植的JPEG解碼庫的實現

2018-02-23 12:47:26顧燕卿
電子技術與軟件工程 2018年6期

顧燕卿

摘要 JPEG是一種圖片影像領域廣泛使用的壓縮標準,是如今互聯網和多媒體技術的基礎技術。越來越多的用于網絡軟件、數碼相機、消費型電子設備、激光掃描儀、醫院影像設備等多媒體系統中。目前JPEG在嵌入式設備中的編解碼多由專門的ASIC硬件實現,但此種硬件電路成本高、可拓展性差。本文提出了一種輕量級的、可移植、優化的JPEG軟件解碼庫,不依賴任何操作系統和芯片類型,具有較高的靈活度和更廣的適用性。

【關鍵詞】JPEG解碼 圖像編碼 DCT 變換Huffman

1 壓縮標準JPEG概述

JPEG即Joint Photographic Experts Group聯合圖像專家組,是由國際標準化組織制定的第一套靜態圖像壓縮的國際標準,適用于照片、傳真、印刷等各方面。JPEG壓縮是一種有損的壓縮,充分利用了人眼的視覺生理特性,去除了人眼不易覺察的圖像高頻數據,在保證了圖像顯示效果的同時大大壓縮了圖像的體積。

JPEG壓縮編碼不受長寬比和大小限制,適用于二值、灰度、彩色等各種圖像,具有連續色調、多級灰度、靜態圖像等特點。與其他的圖像壓縮格式相比,如bmp、 gif、 png、tiff等,JPEG在豐富地展現圖像內容的同時還能具有極高的壓縮比率。JPEG的優良品質使得它在互聯網、多媒體、人機交互等許多領域獲得廣泛的應用。

JPEG標準定義了三種編碼操作模式:基于DCT的基本順序模式、基于DCT的漸進拓展模式、無失真模式。在實際應用中,JPEG圖像使用的是基于DCT的順序模式,軟硬件解碼器都支持此種模式。本文討論和實現的是這種模式。

2 圖片存儲格式解析

JPEG只是一種壓縮標準,并沒有說明圖像文件的存儲格式。JFIF即JPEG FileInterchange Format,是事實上的JPEG文件格式標準,即以*jpg、*.jpeg、*.jfif后綴命名的文件。JFIF標準定義了一種格式,就如一種通用語言,用于JPEG圖片在計算機系統中的存儲和交換。想要對JPEG圖片解碼首要的就是解析JFIF格式存儲的文件。JFIF交換格式將JPEG解碼的必要信息按段的形式組織和存儲,每個段都由一個特殊的標記值打頭。表1是常用的JFIF段標記。

JFIF格式的各個段中,除了SOI、EOI,并沒有嚴格的順序要求,可以由用戶自行組織。除了JPEG標準定義的一些內容,如分辨率、量化表、Huffman表,JFIF還允許用戶自定義私有數據段,這就帶來了更多的靈活性。不過需要注意的是二進制值0xFF作為保留字,代表一個標記段的開始,如果用戶數據中恰巧包含0xFF,則需要在后面加上0x00,表明這是用戶數據以同段標記區分開。

以下是從JFIF文件提取關鍵信息的一個實例,字節流樣本來自IPHONE6S手機拍攝的一張JPEG原圖。JFIF文件中的原始數據為ffc0 0011 0805 0002 d003 0122 0002 1101 0311 01ffc400 lf00 0001 0501 0101 0101 0100 0000 0000 0000 0001 0203 0405 0607 0809 0a0bfaffdb00 4300 0202 0202 0202 0302 0203 0503 03030506 0505 0505 0608 0606 0606 0608 0a08 08080808 080a 0a0a 0a0a 0a0a 0a0e 0c0e 0c0e 0c0e0e0e 0e0e 0f0f 0f0f 0f0f 0f0f 0f0f。分析這段數據,發現有一個FFCO標記、FFDB標記和一個FFC4標記,說明包含了SOFO、DQT、DHT三個段,即一個圖像信息段、一張量化表和一張Huffman表,解析后如表2、表3、表4所示。

解析完JFIF文件中的SOFO、DQT、DHT標記后,再找到圖像數據段SOS,就獲得了解碼JPEG所需的全部信息和數據。從JFIF交換格式提取信息是實現JPEG編解碼的前提。同時,理解JFIF的格式對數據恢復、圖像重建、

3 解碼原理與實現細節

JPEG解碼流程如圖1所示。其中熵解碼模塊是最繁瑣的部分,IDCT變換則計算量最大,而數據損失最多的一步是反量化過程。各模塊涉及到的主要原理將詳細分析。

3.1 熵解碼

熵解碼是無損變換,目的是解出每個分量的DCT量化系數,以供IDCT變換使用。主要包括如下幾個方面:

3.1.1 范式Huffman編碼

Huffman編碼是一種前綴不定長的編碼。其思想在于:統計詞頻,出現頻率高的符號用較短的編碼來表示,達到整體的比特數壓縮。哈夫曼編碼的效果十分顯著,在各種情況下都能獲得極高的壓縮比率。但是其缺點在于,每種符號和對應的哈夫曼編碼必須寫入一張表,而這張編碼表的大小是不定的,帶來的額外開銷也是不定的。范式Huffman編碼是哈夫曼編碼的一個重要變種,采用了一種巧妙的方法調整了哈夫曼樹以克服上述缺點。首先,范式Huffman樹每一層的葉子節點都集中在最左邊;再者,對每個節點的編碼采取左O右1的策略。這就帶來一個好處,無論每一層有多少葉子節點表示的符號,并不需要記錄每一個符號對應的編碼,僅需要記錄下首節點的編碼。而首節點的編碼可以通過每一層的符號數計算得到,這樣就大大減少了碼表的體積。在JPEG標準中,實際使用的范式Huffman樹層次不超過16層,所以僅用16字節的空間記錄葉子節點數,再在尾部按順序填入不超過256字節的符號集。表4的Huffman編碼表中,編碼位長代表層數,符號數量代表每一層葉子節點數,可以容易地還原出圖6的范式Huffman樹。

3.1.2 行程編碼與變長編碼

行程編碼又稱游程編碼,使用一種中間格式記錄一串重復的數字。比如111111可以記錄成(6,1),代表6個1。而JPEG中使用的行程編碼略有區別,考慮到待編碼數據的特性,其只記錄數字0的行程。舉個例子說明一下,比如待編碼數據為:7,0,0,0,0,31,0,-20,-12,0,0,1,0…0。則可以寫成(0,7)(4,31)(1,.20)(O,.12)(2,1)EOB。即用每組數字的第一個數來表示前面0的長度,EOB代表后面全是0。

變長編碼是相對于固定的編碼而言的。在計算機里,數字的表示多采用固定編碼,比如數字7將被存儲為00000111,占用8個比特。在變長編碼中,7將被存儲為( 0011,111),括號內第一個數是固定的4比特長,用來表示后面的數字位數。那么數字7采用變長編碼后就能節省一個比特。另外還需要注意一點的是變長編碼對于負數是用反碼來表示的,比如.7將被存儲為(0011,000)。

行程編碼的中間格式將采用變長編碼來表示。比如(4,31)將被表示成(4,0100,1111),前兩個數可以合在一起使用8比特表示,最后即( 01000100,1111);比如(1,-20)將被表示成(00010101,01011)。需要說明一點的是,范式Huffman編碼只對行程編碼的行程長度和變長編碼的前4比特進行編碼,第二個數將原樣存儲。如圖2所示。

3.1.3 解碼前后數據量對比

首先范式Huffman編碼的數據源是一個8比特數,編碼后的結果則是頻率高的數小于8位,頻率低的數字大于8位,從而達到數據的壓縮。那么到底壓縮了多少,節約了多少空間?可以來看一下JPEG字節流解碼前后的數據量比較,數據源是來自網絡爬蟲隨機抓取的1000張JPEG圖片,結果如表5。可以看出范式Huffman編碼的壓縮率在42%左右,節省了58%的存儲空間,展示了十分優異的性能。

3.2 反量化

上一步的熵解碼每解出64個數字,就得到一個8x8圖像塊的64個系數。這些系數是被量化過的系數,需要依靠量化表還原。反量化之前還需要反zigzag掃描,將64個連續的數字排成8x8的形式,與量化表一一對應以便后面計算。Zigzag掃描順序如表6。

將64個數字從0-63編號,然后按序號填入圖8的矩陣中排成與量化表相同的8x8的形式。然后每一個數乘以量化表中相同位置的參數,計算后得到真正的DCT系數,就完成了反量化。

反量化的計算并不復雜,只是整數之間的乘法,但是反量化卻是解碼過程中數據量損失最大的部分。舉個例子說明,假如一個DCT系數原始值為120,量化步長為50,量化系數值則為2。那么反量化的時候,利用量化系數乘以量化步長,計算所得DCT系數卻為100。可見反量化是有損的計算,并且丟失的余數不可恢復。

3.3 IDCT計算

IDCT即反向離散余弦變換,將頻率域的64個DCT系數變換成色彩域的64個像素值。8x8矩陣的二維IDCT公式為:個最小單元,才能進行顏色空間轉換。根據各分量采樣率的不同,一個最小單元可以由1:1:1或4:1:1的YUV比例組成。JPEG中最常見的是使用4:1:1的采樣比,即對4個8x8的RGB像素塊編碼時,Y分量每塊采樣一次,即全采樣,U分量和V分量是每4個塊采樣一次,由4塊共享。那么JPEG原始碼流蘊含的編碼順序就是:[YO、Yl、Y2、Y3、U、V],每解出6個分量的8x8塊,就需要合并成一個最小單元,轉換到RGB空間,共還原32x32個像素。不斷重復以上過程,最后就能完成對整幅JPEG圖片的解碼。

參考文獻

[1]章毓晉,圖像工程[M].北京:清華大學出版社,2013 (01).

[2]蒙智明.基于S3C44BOX的JPEG圖像解碼及LCD顯示的實現[D].江南大學,2 007.

主站蜘蛛池模板: 国产成人高清精品免费| 亚洲高清国产拍精品26u| 日本a级免费| 亚洲Aⅴ无码专区在线观看q| 女人av社区男人的天堂| 久久久久人妻一区精品色奶水| 国产欧美日本在线观看| 日韩精品一区二区深田咏美| 国产美女精品在线| 国产高清不卡视频| 东京热av无码电影一区二区| 亚洲IV视频免费在线光看| 亚洲精品制服丝袜二区| 亚洲综合极品香蕉久久网| 亚洲欧美不卡视频| 久久香蕉国产线看观看亚洲片| 亚洲成A人V欧美综合天堂| 九九免费观看全部免费视频| 国产成人精品高清不卡在线| 国产AV无码专区亚洲精品网站| 午夜丁香婷婷| 日韩人妻精品一区| 伊人91在线| 国产成人精品一区二区不卡| 4虎影视国产在线观看精品| 午夜精品久久久久久久2023| 天天色天天综合| 亚洲天堂网站在线| 国产成人精彩在线视频50| 综合成人国产| 日韩精品无码免费专网站| 99在线国产| 97在线观看视频免费| 毛片基地美国正在播放亚洲 | 欧美日韩国产综合视频在线观看| 亚洲小视频网站| 国产精品露脸视频| 在线观看国产精美视频| 欧美成人精品欧美一级乱黄| 女人18毛片一级毛片在线| 亚洲欧美色中文字幕| 91精品视频播放| 激情综合婷婷丁香五月尤物| 99在线观看免费视频| 国产极品美女在线| 国产日韩欧美中文| 日韩欧美国产另类| 国产成人精品无码一区二| 一级毛片基地| 在线观看国产黄色| 亚洲精品第1页| 日韩欧美国产另类| 久久国产精品夜色| 国产黄在线观看| 丝袜国产一区| 女同国产精品一区二区| 国产精品亚洲а∨天堂免下载| 在线观看欧美精品二区| 亚洲性视频网站| 青青青伊人色综合久久| 色首页AV在线| 美女无遮挡免费视频网站| 区国产精品搜索视频| 亚洲精品视频免费看| 欧美人人干| 日韩国产综合精选| 免费播放毛片| 久草性视频| 大香伊人久久| 精品人妻无码中字系列| 亚洲色图欧美视频| 一级做a爰片久久免费| 精品1区2区3区| 久久精品欧美一区二区| 97青草最新免费精品视频| 老司国产精品视频| 麻豆a级片| 四虎精品黑人视频| 日日拍夜夜操| 黄色网在线免费观看| 日韩欧美国产三级| 国产欧美专区在线观看|