




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上1. JPEG的壓縮原理JPEG的壓縮原理其實(shí)上面介紹的那些原理的綜合,博采眾家之長(zhǎng),這也正是JPEG有高壓縮比的原因。其編碼器的流程為:圖9.3 JPEG編碼器流程解碼器基本上為上述過(guò)程的逆過(guò)程:圖9.4 解碼器流程88的圖象經(jīng)過(guò)DCT變換后,其低頻分量都集中在左上角,高頻分量分布在右下角(DCT變換實(shí)際上是空間域的低通濾波器)。由于該低頻分量包含了圖象的主要信息(如亮度),而高頻與之相比,就不那么重要了,所以我們可以忽略高頻分量,從而達(dá)到壓縮的目的。如何將高頻分量去掉,這就要用到量化,它是產(chǎn)生信息損失的根源。這里的量化操作,就是將某一個(gè)值除以量化表中對(duì)應(yīng)的值。由于
2、量化表左上角的值較小,右上角的值較大,這樣就起到了保持低頻分量,抑制高頻分量的目的。JPEG使用的顏色是YUV格式。我們提到過(guò),Y分量代表了亮度信息,UV分量代表了色差信息。相比而言,Y分量更重要一些。我們可以對(duì)Y采用細(xì)量化,對(duì)UV采用粗量化,可進(jìn)一步提高壓縮比。所以上面所說(shuō)的量化表通常有兩張,一張是針對(duì)Y的;一張是針對(duì)UV的。上面講了,經(jīng)過(guò)DCT變換后,低頻分量集中在左上角,其中F(0,0)(即第一行第一列元素)代表了直流(DC)系數(shù),即88子塊的平均值,要對(duì)它單獨(dú)編碼。由于兩個(gè)相鄰的88子塊的DC系數(shù)相差很小,所以對(duì)它們采用差分編碼DPCM,可以提高壓縮比,也就是說(shuō)對(duì)相鄰的子塊DC系數(shù)的差
3、值進(jìn)行編碼。88的其它63個(gè)元素是交流(AC)系數(shù),采用行程編碼。這里出現(xiàn)一個(gè)問(wèn)題:這63個(gè)系數(shù)應(yīng)該按照怎么樣的順序排列?為了保證低頻分量先出現(xiàn),高頻分量后出現(xiàn),以增加行程中連續(xù)“0”的個(gè)數(shù),這63個(gè)元素采用了“之”字型(Zig-Zag)的排列方法,如圖9.5所示。圖9.5 Zig-Zag這63個(gè)AC系數(shù)行程編碼的碼字用兩個(gè)字節(jié)表示,如圖9.6所示。圖9.6 行程編碼上面,我們得到了DC碼字和 AC行程碼字。為了進(jìn)一步提高壓縮比,需要對(duì)其再進(jìn)行熵編碼,這里選用Huffman編碼,分成兩步:(1)熵編碼的中間格式表示對(duì)于AC系數(shù),有兩個(gè)符號(hào)。符號(hào)1為行程和尺寸,即上面的(RunLength,Si
4、ze)。(0,0)和(15,0)是兩個(gè)比較特殊的情況。(0,0)表示塊結(jié)束標(biāo)志(EOB),(15,0)表示ZRL,當(dāng)行程長(zhǎng)度超過(guò)15時(shí),用增加ZRL的個(gè)數(shù)來(lái)解決,所以最多有三個(gè)ZRL(316+15=63)。符號(hào)2為幅度值(Amplitude)。對(duì)于DC系數(shù),也有兩個(gè)符號(hào)。符號(hào)1為尺寸(Size);符號(hào)2為幅度值(Amplitude)。(2)熵編碼對(duì)于AC系數(shù),符號(hào)1和符號(hào)2分別進(jìn)行編碼。零行程長(zhǎng)度超過(guò)15個(gè)時(shí),有一個(gè)符號(hào)(15,0),塊結(jié)束時(shí)只有一個(gè)符號(hào)(0,0)。對(duì)符號(hào)1進(jìn)行Hufffman編碼(亮度,色差的Huffman碼表不同)。對(duì)符號(hào)2進(jìn)行變長(zhǎng)整數(shù)VLI編碼。舉例來(lái)說(shuō):Size=6時(shí),
5、Amplitude的范圍是-63-32,以及3263,對(duì)絕對(duì)值相同,符號(hào)相反的碼字之間為反碼關(guān)系。所以AC系數(shù)為32的碼字為,33的碼字為,-32的碼字為,-33的碼字為。符號(hào)2的碼字緊接于符號(hào)1的碼字之后。對(duì)于DC系數(shù),Y和UV的Huffman碼表也不同。掉了這么半天的書(shū)包,你可能已經(jīng)暈了,呵呵。舉個(gè)例子來(lái)說(shuō)明上述過(guò)程就容易明白了。下面為88的亮度(Y)圖象子塊經(jīng)過(guò)量化后的系數(shù)。15 0 -1 0 0 0 0 0-2 -1 0 0 0 0 0 0-1 -1 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0
6、0 00 0 0 0 0 0 0 0可見(jiàn)量化后只有左上角的幾個(gè)點(diǎn)(低頻分量)不為零,這樣采用行程編碼就很有效。第一步,熵編碼的中間格式表示:先看DC系數(shù)。假設(shè)前一個(gè)88子塊DC系數(shù)的量化值為12,則本塊DC系數(shù)與它的差為3,根據(jù)下表Size Amplitude0 01 1,12 3,-2,2,33 7-4,474 15-8,8155 31-16,16316 63-32,32637 127-64,641278 255-128,1282559 511-256,25651110 1023512,512102311 2047-1024,10242047查表得Size=2,Amplitude=3,所以D
7、C中間格式為(2)(3)。下面對(duì)AC系數(shù)編碼。經(jīng)過(guò)Zig-Zag掃描后,遇到的第一個(gè)非零系數(shù)為-2,其中遇到零的個(gè)數(shù)為1(即RunLength),根據(jù)下面這張AC系數(shù)表:Size Amplitude1 1,12 3,-2,2,33 7-4,474 15-8,8155 31-16,16316 63-32,32637 127-64,641278 255-128,1282559 511-256,25651110 1023512,5121023查表得Size=2。所以RunLength=1,Size=2,Amplitude=3,所以AC中間格式為(1,2)(-2)。其余的點(diǎn)類(lèi)似,可以求得這個(gè)88子塊熵
8、編碼的中間格式為(DC)(2)(3),(1,2)(-2),(0,1)(-1),(0,1)(-1),(0,1)(-1),(2,1)(-1),(EOB)(0,0)第二步,熵編碼:對(duì)于(2)(3):2查DC亮度Huffman表得到11,3經(jīng)過(guò)VLI編碼為011;對(duì)于(1,2)(-2):(1,2)查AC亮度Huffman表得到11011,-2是2的反碼,為01;對(duì)于(0,1)(-1):(0,1)查AC亮度Huffman表得到00,-1是1的反碼,為0;最后,這一88子塊亮度信息壓縮后的數(shù)據(jù)流為11011, , 000, 000, 000, ,1010。總共31比特,其壓縮比是648/31=16.5,大
9、約每個(gè)象素用半個(gè)比特??梢韵胍?jiàn),壓縮比和圖象質(zhì)量是呈反比的,以下是壓縮效率與圖象質(zhì)量之間的大致關(guān)系,可以根據(jù)你的需要,選擇合適的壓縮比。表9.1 壓縮比與圖象質(zhì)量的關(guān)系壓縮效率(單位:bits/pixel)圖象質(zhì)量0.250.50中好,可滿足某些應(yīng)用0.500.75好很好,滿足多數(shù)應(yīng)用0.751.5極好,滿足大多數(shù)應(yīng)用1.52.0與原始圖象幾乎一樣以上我們介紹了JPEG壓縮的原理,其中DC系數(shù)使用了預(yù)測(cè)編碼DPCM,AC系數(shù)使用了變換編碼DCT,二者都使用了熵編碼Huffman,可見(jiàn)幾乎所有傳統(tǒng)的壓縮方法在這里都用到了。這幾種方法的結(jié)合正是產(chǎn)生JPEG高壓縮比的原因。順便說(shuō)一下,該標(biāo)準(zhǔn)是JPE
10、G小組從很多種不同中方案中比較測(cè)試得到的,并非空穴來(lái)風(fēng)。上面介紹了JPEG壓縮的基本原理,下面介紹一下JPEG的文件格式。2. JPEG的文件格式JPEG文件大體上可以分成以下兩個(gè)部分:標(biāo)記碼(Tag)加壓縮數(shù)據(jù)。先介紹標(biāo)記碼部分。標(biāo)記碼部分給出了JPEG圖象的所有信息(有點(diǎn)類(lèi)似于BMP中的頭信息,但要復(fù)雜的多),如圖象的寬、高、Huffman表、量化表等等。標(biāo)記碼有很多,但絕大多數(shù)的JPEG文件只包含幾種。標(biāo)記碼的結(jié)構(gòu)為:SOIDQT DRI SOF0 DHT SOS EOI標(biāo)記碼由兩個(gè)字節(jié)組成,高字節(jié)為0XFF,每個(gè)標(biāo)記碼之前可以填上個(gè)數(shù)不限的填充字節(jié)0XFF。下面介紹一些常用的標(biāo)記碼的結(jié)
11、構(gòu)及其含義。(1)SOI(Start of Image)標(biāo)記結(jié)構(gòu) 字節(jié)數(shù)0XFF 10XD8 1可作為JPEG格式的判據(jù)(JFIF還需要APP0的配合)(2)APP0(Application)標(biāo)記結(jié)構(gòu) 字節(jié)數(shù) 意義0XFF 10XE0 1Lp 2 APP0標(biāo)記碼長(zhǎng)度,不包括前兩個(gè)字節(jié)0XFF,0XE0Identifier 5 JFIF識(shí)別碼 0X4A,0X46,0X49,0X46,0X00Version 2 JFIF版本號(hào) 可為0X0101或者0X0102Units 1 單位,等于零時(shí)表示未指定,為1表示英寸,為2表示厘米Xdensity 2 水平分辨率Ydensity 2 垂直分辨率Xthu
12、mbnail 1 水平點(diǎn)數(shù)Ythumbnail 1 垂直點(diǎn)數(shù)RGB0 3 RGB的值RGB1 3 RGB的值RGBn 3 RGB的值,n=Xthumbnail*YthumbnailAPP0是JPEG保留給Application所使用的標(biāo)記碼,而JFIF將文件的相關(guān)信息定義在此標(biāo)記中。(3)DQT(Define Quantization Table)標(biāo)記結(jié)構(gòu) 字節(jié)數(shù) 意義0XFF 10XDB 1Lq 2 DQT標(biāo)記碼長(zhǎng)度,不包括前兩個(gè)字節(jié)0XFF,0XDB(Pq,Tq) 1 高四位Pq為量化表的數(shù)據(jù)精確度,Pq=0時(shí),Q0Qn的值為8位,Pq=1時(shí),Qt的值為16位,Tq表示量化表的編號(hào),為03
13、。在基本系統(tǒng)中,Pq=0,Tq=01,也就是說(shuō)最多有兩個(gè)量化表。Q0 1或2 量化表的值,Pq=0時(shí);為一個(gè)字節(jié),Pq=1時(shí),為兩個(gè)字節(jié)Q1 1或2 量化表的值,Pq=0時(shí);為一個(gè)字節(jié),Pq=1時(shí),為兩個(gè)字節(jié)Qn 1或2 量化表的值,Pq=0時(shí),為一個(gè)字節(jié);Pq=1時(shí),為兩個(gè)字節(jié)。n的值為063,表示量化表中64個(gè)值(之字形排列)(4)DRI(Define Restart Interval)此標(biāo)記需要用到最小編碼單元(MCU,Minimum Coding Unit)的概念。前面提到,Y分量數(shù)據(jù)重要,UV分量的數(shù)據(jù)相對(duì)不重要,所以可以只取UV的一部分,以增加壓縮比。目前支持JPEG格式的軟件通常
14、提供兩種取樣方式Y(jié)UV411和YUV422,其含義是YUV三個(gè)分量的數(shù)據(jù)取樣比例。舉例來(lái)說(shuō),如果Y取四個(gè)數(shù)據(jù)單元,即水平取樣因子Hy乘以垂直取樣因子Vy的值為4,而U和V各取一個(gè)數(shù)據(jù)單元,即HuVu=1,HvVv=1。那么這種部分取樣就稱(chēng)為YUV411。如圖9.7所示:圖9.7 YUV411的示意圖圖9.8 YUV111的排列順序易知YUV411有50%的壓縮比(原來(lái)有12個(gè)數(shù)據(jù)單元,現(xiàn)在有6個(gè)數(shù)據(jù)單元),YUV422有33%的壓縮比(原來(lái)有12個(gè)數(shù)據(jù)單元,現(xiàn)在有8個(gè)數(shù)據(jù)單元)。那么你可能會(huì)想,YUV911,YUV1611壓縮比不是更高嘛?但是要考慮到圖象質(zhì)量的因素。所以JPEG標(biāo)準(zhǔn)規(guī)定了最小
15、編碼單元MCU,要求HyVy+HuVu+HvVv10。MCU中塊的排列方式與H,V的值有密切關(guān)系,如圖9.8、圖9.9、圖9.10所示。圖9.9 YUV211的排列順序圖9.10 YUV411的排列順序標(biāo)記結(jié)構(gòu) 字節(jié)數(shù) 意義0XFF 10XDD 1Lr 2 DRI標(biāo)記碼長(zhǎng)度,不包括前兩個(gè)字節(jié)0XFF,0XDDRi 2 重入間隔的MCU個(gè)數(shù),Ri必須是一MCU行中MCU個(gè)數(shù)的整數(shù),最后一個(gè)零頭不一定剛好是Ri個(gè)MCU。每個(gè)重入間隔各自獨(dú)立編碼。(5)SOF(Start of Frame) 在基本系統(tǒng)中,只處理SOF0標(biāo)記結(jié)構(gòu) 字節(jié)數(shù) 意義0XFF 10XC0 1Lf 2 SOF標(biāo)記碼長(zhǎng)度,不包括
16、前兩個(gè)字節(jié)0XFF,0XC0P 1 基本系統(tǒng)中,為0X08Y 2 圖象高度X 2 圖象寬度Nf 1 Frame中的成分個(gè)數(shù),一般為1或3,1代表灰度圖,3代表真彩圖C1 1 成分編號(hào)1(H1,V1) 1 第一個(gè)水平和垂直采樣因子Tq1 1 該量化表編號(hào)C2 1 成分編號(hào)2(H2,V2) 1 第二個(gè)水平和垂直采樣因子Tq2 1 該量化表編號(hào)Cn 1 成分編號(hào)n(Hn,Vn) 1 第n個(gè)水平和垂直采樣因子Tqn 1 該量化表編號(hào)(6)DHT(Define Huffman Table)標(biāo)記結(jié)構(gòu) 字節(jié)數(shù) 意義0XFF 10XC4 1Lh 2 DHT標(biāo)記碼長(zhǎng)度,不包括前兩個(gè)字節(jié)0XFF,0XC4(Tc,
17、Th) 1 L1 1L2 1 L16 1V1 1V2 1Vt 1Tc為高4位,Th為低4位。在基本系統(tǒng)中,Tc為0或1,為0時(shí),指DC所用的Huffman表,為1時(shí),指AC所用的Huffman表。Th表示Huffman表的編號(hào),在基本系統(tǒng)中,其值為0或1。所以,在基本系統(tǒng)中,最多有4個(gè)Huffman表,如下所示:Tc Th Huffman表編號(hào)(2Tc+Th)0 01 10 21 1 3Ln表示每個(gè)n比特的Huffman碼字的個(gè)數(shù),n=116Vt表示每個(gè)Huffman碼字所對(duì)應(yīng)的值,也就是我們前面所講的符號(hào)1,對(duì)DC來(lái)說(shuō)該值為(Size),對(duì)AC來(lái)說(shuō)該值為(RunLength,Size)。t=
18、L1+L2+L16(7)SOS(Start of Scan)標(biāo)記結(jié)構(gòu) 字節(jié)數(shù) 意義0XFF 10XDA 1Ls 2 DHT標(biāo)記碼長(zhǎng)度,不包括前兩個(gè)字節(jié)0XFF,0XDANs 1Cs1 1(Td1,Ta1) 1Cs2 1(Td2,Ta2) 1CsNs 1(TdNs,TaNs) 1Ss 1Se 1(Ah,Al) 1Ns為Scan中成分的個(gè)數(shù),在基本系統(tǒng)中,Ns=Nf(Frame中成分個(gè)數(shù))。CSNs為在Scan中成分的編號(hào)。TdNs為高4位,TaNs為低4位,分別表示DC和AC編碼表的編號(hào)。在基本系統(tǒng)中Ss=0,Se=63,Ah=0,Al=0。(8)EOI(End of Image) 結(jié)束標(biāo)志標(biāo)記結(jié)構(gòu) 字節(jié)數(shù) 意義0XFF 10XD9 13. JPEG基本系統(tǒng)解碼器的實(shí)現(xiàn)筆者曾經(jīng)實(shí)現(xiàn)了一個(gè)Windows下JPEG基本系
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人工智能語(yǔ)音識(shí)別軟件開(kāi)發(fā)合同
- 安全與保密措施表格(特定行業(yè))
- 廣東省深圳市福田區(qū)2024-2025學(xué)年七年級(jí)上學(xué)期期末生物學(xué)試題(含答案)
- 《中學(xué)語(yǔ)文文學(xué)鑒賞與實(shí)踐活動(dòng)教案》
- 清潔能源工程項(xiàng)目建設(shè)合同
- 框架協(xié)議合同
- 關(guān)于調(diào)整辦公時(shí)間的內(nèi)部通知流程說(shuō)明
- 機(jī)械工程材料性能分析知識(shí)要點(diǎn)
- 關(guān)于職場(chǎng)禮儀的普及
- 物流配送策略對(duì)比表
- GB/T 4292-2017氟化鋁
- GB/T 41-20161型六角螺母C級(jí)
- GB/T 3811-2008起重機(jī)設(shè)計(jì)規(guī)范
- CB/T 615-1995船底吸入格柵
- 11471勞動(dòng)爭(zhēng)議處理(第10章)
- 2022年河南省對(duì)口升學(xué)計(jì)算機(jī)類(lèi)專(zhuān)業(yè)課考試真題卷
- 人工智能賦能教育教學(xué)變革的研究
- 經(jīng)營(yíng)性公墓建設(shè)標(biāo)準(zhǔn)
- 患教-頸動(dòng)脈斑塊課件
- 審計(jì)部組織架構(gòu)及崗位設(shè)置
- 流行性乙型腦炎PPT課件
評(píng)論
0/150
提交評(píng)論