《數(shù)字圖像處理》課件第9章_第1頁
《數(shù)字圖像處理》課件第9章_第2頁
《數(shù)字圖像處理》課件第9章_第3頁
《數(shù)字圖像處理》課件第9章_第4頁
《數(shù)字圖像處理》課件第9章_第5頁
已閱讀5頁,還剩127頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第9章圖像編碼9.1圖像編碼概述9.2哈夫曼編碼9.3香農(nóng)-范諾編碼9.4算術(shù)編碼9.5行程編碼9.6

LZW編碼9.7

JPEG2000編碼9.8編程實(shí)例習(xí)題9.1圖像編碼概述

9.1.1圖像編碼基本原理與方法

1.圖像數(shù)據(jù)冗余

圖像數(shù)據(jù)通常包含有大量冗余信息,它為圖像壓縮提供了依據(jù)。圖像壓縮又稱圖像編碼,其目的是充分利用圖像中存在的各種冗余信息,在圖像重建可以接受的前提下,通過編碼實(shí)現(xiàn)以盡量少的比特?cái)?shù)來表示圖像。圖像數(shù)據(jù)的冗余形式主要有空間冗余、時(shí)間冗余、信息熵冗余、結(jié)構(gòu)冗余、知識(shí)冗余和視覺冗余。(1)空間冗余是指圖像內(nèi)部相鄰像素之間存在較強(qiáng)的相關(guān)性而造成的冗余。在同一幅圖像中,規(guī)則物體或規(guī)則背景(所謂規(guī)則是指表面顏色分布有序而非雜亂無章)的表面物理特征具有相關(guān)性,使得成像后的數(shù)字圖像結(jié)構(gòu)趨于有序和平滑,表現(xiàn)為空間數(shù)據(jù)冗余。

(2)時(shí)間冗余是指圖像序列中的相鄰兩幀之間存在較強(qiáng)的相關(guān)性而造成的冗余。(3)信息熵冗余也稱編碼冗余,是指用于表示信源符號(hào)的平均比特?cái)?shù)大于其信息熵時(shí)所產(chǎn)生的冗余。對(duì)于由N個(gè)符號(hào){x1,x2,…,

xN}組成的離散信源,若符號(hào)xi出現(xiàn)的概率為pi,則其信息熵H定義如下:(9-1)式中:lb(1/pi)為符號(hào)xi的自信息量,表明概率越小的符號(hào)將攜帶越大的信息量;H為信息熵,表示信源符號(hào)所攜帶的平均信息量。當(dāng)符號(hào)出現(xiàn)概率相等時(shí),信息熵達(dá)到最大值lbN,稱之為最大離散熵定理。若將符號(hào)xi看作圖像像素灰度,將lb(1/pi)看作分配給xi的比特?cái)?shù),則圖像的熵H表示各灰度級(jí)的平均比特?cái)?shù),即平均碼字長度。圖像灰度通常非等概率分布,因而圖像的熵小于等于最大可能熵。然而,在實(shí)際應(yīng)用中一般難以預(yù)估灰度概率分布,常依據(jù)最大熵用等長比特?cái)?shù)對(duì)像素灰度進(jìn)行編碼,因此圖像數(shù)據(jù)存在編碼冗余。(4)結(jié)構(gòu)冗余是指圖像中存在較強(qiáng)的紋理結(jié)構(gòu)或自相似性,如布紋圖像、墻紙圖案等。

(5)知識(shí)冗余是指圖像中包含與某些先驗(yàn)知識(shí)有關(guān)的信息。如人臉圖像有固定的結(jié)構(gòu),嘴巴上方有鼻子,鼻子上方有眼睛,鼻子位于正臉圖像的中線上等。

(6)視覺冗余是指人眼不能感知或不敏感的那部分圖像信息。如人眼的灰度分辨率一般約為26級(jí),而圖像量化常用28級(jí);相對(duì)于紅光和綠光而言,人眼對(duì)藍(lán)光更不敏感;人眼對(duì)亮度的敏感度要高于色度。

2.圖像編碼方法

根據(jù)編碼過程中是否存在信息損耗可將圖像編碼方法分為有損編碼和無損編碼。無損編碼又稱無失真編碼、信息保持編碼或可逆編碼,解碼時(shí)能夠從壓縮數(shù)據(jù)精確地恢復(fù)原始圖像。有損編碼又稱有失真編碼、保真度編碼或不可逆編碼,不能從壓縮數(shù)據(jù)精確重建原始圖像,它存在一定程度的失真。無損編碼的壓縮比較低,主要應(yīng)用于醫(yī)學(xué)圖像等數(shù)據(jù)質(zhì)量要求較高的場(chǎng)合。有損編碼允許在一定的保真度準(zhǔn)則下,最大限度地壓縮圖像,可以實(shí)現(xiàn)較大的壓縮比,它主要用于數(shù)字電視技術(shù)、靜止圖像、通信和娛樂等方面。(1)熵編碼。熵編碼是一種基于信號(hào)統(tǒng)計(jì)特性的編碼技術(shù),要求編碼過程中按熵原理不丟失任何信息,它是

一種無損編碼。哈夫曼編碼、香農(nóng)-范諾編碼和算術(shù)編碼為典型的熵編碼。

對(duì)于離散無記憶信源(即信源符號(hào)是統(tǒng)計(jì)獨(dú)立的,當(dāng)前的輸出與以前的輸出無關(guān)),用式(9-1)計(jì)算其熵。對(duì)于m階離散有限記憶信源(當(dāng)前符號(hào)出現(xiàn)的概率只與前m個(gè)符號(hào)有關(guān)),令信源符號(hào)集X={x1,x2,…,xN},輸出符號(hào)序列(…,X1,X2,…,Xm,Xm+1,…),i1,i2,…,im+1=1,2,…,N,則聯(lián)合熵H(X1

X2…Xm)、

平均符號(hào)熵HK(X)、m階條件熵H(Xm+1|X1

X2…Xm)(簡記為Hm+1(·))、極限熵H∞和冗余度γ分別定義如下:(9-3)(9-2)式中:H0為信源符號(hào)等概率獨(dú)立分布時(shí)的最大離散熵。對(duì)于m階馬爾可夫信源,可以證明:

H0(·)≥H1(·)≥…≥Hm(·)≥Hm+1(·)=…=H∞(·)

(9-7)

式(9-7)表明,對(duì)于有記憶信源,如果符號(hào)序列中前面的符號(hào)知道得越多,那么下一個(gè)符號(hào)的平均信息量就越小,意味著使用高階熵可以獲得更高的壓縮比。信息熵是無損編碼的理論極限,當(dāng)平均碼長大于等于信息熵時(shí),總可設(shè)計(jì)出一種無失真編碼,這是熵編碼的理論基礎(chǔ)。若使用相同長度的碼字表示信源符號(hào),則稱該編碼方法為等長編碼,否則稱為變長編碼。變長編碼的基本原理是給出現(xiàn)概率較大的符號(hào)賦予短碼字,而給出現(xiàn)概率較小的符號(hào)賦予長碼字,從而使得最終的平均碼長很小。哈夫曼編碼和香農(nóng)-范諾編碼就是兩種變長編碼方法。變長編碼定理:若一個(gè)離散無記憶信源的符號(hào)集具有r個(gè)碼元,熵為H,則總可以找到一種無失真編碼,構(gòu)成單義可譯碼,使其平均碼長L滿足:

(9-8)

在變長編碼中,如果碼字長度嚴(yán)格按照對(duì)應(yīng)符號(hào)出現(xiàn)的概率大小逆序排列,則其平均碼字長度為最小,這就是變長最佳編碼定理。(2)預(yù)測(cè)編碼。預(yù)測(cè)編碼是基于圖像數(shù)據(jù)的空間或時(shí)間冗余特性,它用相鄰的已知像素(或像素塊)來預(yù)測(cè)當(dāng)

前像素(或像素塊)的取值,然后再對(duì)預(yù)測(cè)誤差進(jìn)行量化和編碼。預(yù)測(cè)編碼可分為幀內(nèi)預(yù)測(cè)和幀間預(yù)測(cè),常用的預(yù)測(cè)編碼有差分脈碼調(diào)制(DPCM,DifferentialPulseCodeModulation)和運(yùn)動(dòng)補(bǔ)償法。圖9-1和圖9-2分別給出了無損預(yù)測(cè)編碼和有損預(yù)測(cè)編碼系統(tǒng)的原理圖,均包括編碼器和解碼器,其中符號(hào)編碼器通常采用變長編碼。圖9-1無損預(yù)測(cè)編碼系統(tǒng)圖9-2有損預(yù)測(cè)編碼系統(tǒng)無損預(yù)測(cè)編碼的關(guān)鍵在于預(yù)測(cè)器的設(shè)計(jì),盡量使預(yù)測(cè)誤差en的概率分布集中在0值附近,以便大量消除像素間的冗余。線性預(yù)測(cè)器通過相鄰的前m個(gè)像素或像素塊的線性組合進(jìn)行預(yù)測(cè),根據(jù)均方誤差最小化可以設(shè)計(jì)出最佳線性預(yù)測(cè)器,也可以根據(jù)圖像的局部特性自適應(yīng)調(diào)整預(yù)測(cè)器的預(yù)測(cè)系數(shù),從而設(shè)計(jì)出線性自適應(yīng)預(yù)測(cè)器。有損預(yù)測(cè)編碼在無損預(yù)測(cè)編碼的基礎(chǔ)上增加一個(gè)量化器,它決定了壓縮量和失真量。若量化器設(shè)計(jì)不當(dāng),容易造成斜率過載、顆粒噪聲、偽輪廓等圖像損傷,Lloyd-Max量化器是一種常用的最優(yōu)量化器。(3)變換編碼。變換編碼通常是將空間域上的圖像經(jīng)過正交變換映射到另一變換域上,使變換后的系數(shù)之間

的相關(guān)性降低。圖像變換本身并不能壓縮數(shù)據(jù),但變換后圖像的大部分能量只集中到少數(shù)的幾個(gè)變換系數(shù)上,采用適當(dāng)?shù)牧炕挽鼐幋a就可以有效地壓縮圖像。變換編碼系統(tǒng)的原理如圖9-3所示,首先將圖像分割為易于計(jì)算的n×n子圖像,再對(duì)子圖像實(shí)施正交變換(如DFT、DCT或WHT),然后對(duì)變換系數(shù)進(jìn)行量化(有選擇地消除或粗量化帶有很少信息的變換系數(shù)),最后對(duì)量化結(jié)果進(jìn)行編碼(常用變長編碼)。相比較而言,WHT容易實(shí)現(xiàn),DCT與WHT和DFT相比有更強(qiáng)的信息集中能力。理論上,K-L變換是信息集中能力最優(yōu)的變換,但它是與數(shù)據(jù)

相關(guān)的,計(jì)算量非常大,實(shí)際應(yīng)用受到限制。DCT在信息壓縮能力與計(jì)算復(fù)雜性之間提供了一種很好的平衡,得到了廣泛應(yīng)用。圖9-3變換編碼系統(tǒng)子圖像尺寸是影響變換編碼性能的重要因素。如果尺寸太小,雖然計(jì)算快速、實(shí)現(xiàn)簡單,但壓縮能力有限且“方塊效應(yīng)”嚴(yán)重。隨著尺寸增大,去相關(guān)效果提高,但尺寸過大時(shí),由于圖像本身的相關(guān)性較小,反而壓縮效果不明顯,而且增加了計(jì)算復(fù)雜性。在子圖像尺寸選擇時(shí),一般使相鄰子圖像之間的相關(guān)性減小到某個(gè)可接受的水平即可。為便于正交變換,尺寸取為2的整數(shù)次冪,常用尺寸是8×8和16×16。對(duì)變換子圖像的系數(shù)選擇、量化和編碼的全過程稱為比特分配。系數(shù)選擇通常有兩種方法:根據(jù)最大方差進(jìn)行選擇(稱為區(qū)域編碼)和根據(jù)最大值的量級(jí)進(jìn)行選擇(稱為閾值編碼)。(4)量化編碼。量化編碼就是通過將動(dòng)態(tài)范圍內(nèi)較大的輸入信號(hào)值映射到有限個(gè)離散值來實(shí)現(xiàn)數(shù)據(jù)壓縮,是

個(gè)不可逆過程。量化方法分為標(biāo)量量化和矢量量化,標(biāo)量量化又可以分為均勻量化、非均勻量化和自適應(yīng)量化。

矢量量化是一種高效的數(shù)據(jù)壓縮技術(shù),具有壓縮比大、解碼簡單和失真較小等優(yōu)點(diǎn)。它將標(biāo)量數(shù)據(jù)組織成一系列k維矢量,根據(jù)一定的失真測(cè)度(如均方誤差、lp范數(shù)、極大范數(shù)等)在碼書中搜索出與輸入矢量失真最小的碼字的索引,傳輸時(shí)僅傳輸相應(yīng)碼字的索引,接收方根據(jù)碼字索引在碼書中查找對(duì)應(yīng)碼字,再現(xiàn)輸入矢量。矢量量化編碼的核心是碼書設(shè)計(jì),經(jīng)典的碼書設(shè)計(jì)算法有LBG(Linde,Buzo和Gray三人的首字母)

算法(又稱為K-means算法)。碼書設(shè)計(jì)過程就是尋求把M

個(gè)訓(xùn)練矢量分成N類(N<M)的一種最佳方案(如均方誤差最小),并把各類的中心矢量作為碼書中的碼字。9.1.2圖像編碼新技術(shù)

人們不斷提出新的圖像編碼方法,如基于人工神經(jīng)網(wǎng)絡(luò)的編碼、子帶編碼(SubbandCoding)、分形編碼(FractalCoding)、小波編碼(WaveletCoding)、基于模型的編碼(ModelbasedCoding)、基于對(duì)象的編碼(ObjectbasedCoding)和基于語義的編碼(SemanticBasedCoding)等。(1)子帶編碼。子帶編碼是一種在頻率域中進(jìn)行數(shù)據(jù)壓縮的方法。首先用一組帶通濾波器將輸入信號(hào)分成若干個(gè)不同頻段的子帶信號(hào),然后經(jīng)過頻率搬移將子帶信號(hào)轉(zhuǎn)變成基帶信號(hào),再對(duì)它們?cè)谀慰固厮俾噬戏謩e重新取樣,最后對(duì)取樣后的信號(hào)進(jìn)行量化編碼,并合并成一個(gè)總的碼流傳送給接收端。接收端首先將碼流分成子帶碼流,然后解碼并將頻譜搬移到原來位置,最后經(jīng)帶通濾波、相加得到重建信號(hào)。不同的子帶可以采用不同的量化策略,量化噪聲均束縛在各自子帶內(nèi),可以避免能量較小的頻帶內(nèi)的信號(hào)被其他頻帶中量化噪聲所掩蓋。(2)分形編碼。分形編碼是在波蘭美籍?dāng)?shù)學(xué)家B.B.Mandelbrot建立的分形幾何理論的基礎(chǔ)上發(fā)展起來的一種編碼方法。分形編碼最大限度地利用了圖像在空間域上的自相似性(即局部與整體之間存在某種相似性),通過消除圖像的幾何冗余來壓縮數(shù)據(jù)。

M.F.Barnsley將迭代函數(shù)系統(tǒng)(IFS,IterateFunctionSystem)用于描述圖像的自相似性,并將其用于圖像編碼,對(duì)某些特定圖像獲得了10000∶1的壓縮比。分形編碼過程十分復(fù)雜,而解碼過程卻很簡單,故通常用于對(duì)圖像編碼一次而需譯碼多次的信息傳播應(yīng)用中。分形編碼首先將圖像分割為若干分形子圖,再通過仿射變換尋找各子圖的仿射圖,然后對(duì)仿射系數(shù)進(jìn)行編碼。(3)小波編碼。1989年,S.G.Mallat首次將小波變換用于圖像編碼。經(jīng)過小波變換后的圖像,具有良好的

空間方向選擇性,且為多分辨率,能夠保持原圖像在各種分辨率下的精細(xì)結(jié)構(gòu),與人的視覺特性十分吻合。(4)模型編碼。模型編碼是近年發(fā)展起來的一種低比特率編碼方法,其基本出發(fā)點(diǎn)是在編、解碼兩端分別建

立起相同的模型,編碼時(shí)利用先驗(yàn)?zāi)P统槿D像中的主要信息并用模型參數(shù)的形式表示,解碼時(shí)則利用所接收的模型參數(shù)重建圖像。模型編碼進(jìn)一步研究的方向是把基于對(duì)象的編碼和基于語義的編碼等結(jié)合起來,以取長補(bǔ)短?;趦?nèi)容的圖像編碼和基于壓縮域的處理算法是今后的發(fā)展方向。在圖像識(shí)別、分析和分類等技術(shù)中,往往并不需要全部圖像信息,而只需對(duì)感興趣的部分特征信息進(jìn)行編碼。例如,用遙感圖像進(jìn)行農(nóng)作物分類時(shí),只需對(duì)區(qū)別農(nóng)作物與非農(nóng)作物、農(nóng)作物類別之間的特征進(jìn)行編碼,可以忽略道路、河流和建筑物等其他背景信息。9.1.3圖像編碼評(píng)價(jià)

圖像編碼算法的優(yōu)劣主要從編碼效率、編碼質(zhì)量、算法復(fù)雜度及適用范圍等方面進(jìn)行評(píng)判。

由于同一壓縮算法對(duì)不同圖像的編碼效率和編碼質(zhì)量會(huì)有所不同,因此常借助于一些“標(biāo)準(zhǔn)圖像”來測(cè)試,如Lena、Barbara和Mandrill圖像。(1)編碼效率。衡量圖像編碼效率的指標(biāo)主要有平均碼字長度(L)、壓縮比(CR)和編碼效率(η)。

設(shè)圖像編碼前每個(gè)像素的平均比特?cái)?shù)為B,第i級(jí)灰度出現(xiàn)的概率為pi,編碼后對(duì)應(yīng)的編碼長度為Li比特,則圖像的平均碼字長度L為(9-9)(9-10)(9-11)圖像的壓縮比CR為編碼效率η為(2)編碼質(zhì)量。圖像的編碼質(zhì)量是指解壓后的重建圖像與壓縮前的原始圖像之間的相似度,它可分為主觀質(zhì)量

評(píng)價(jià)和客觀質(zhì)量評(píng)價(jià)。主觀質(zhì)量評(píng)價(jià)是指由一批觀察者對(duì)編碼圖像進(jìn)行觀察并打分,然后綜合所有人的評(píng)判結(jié)果,給出圖像的質(zhì)量評(píng)價(jià)。主觀質(zhì)量評(píng)價(jià)能夠與人的視覺效果相匹配,但其評(píng)判過程緩慢費(fèi)時(shí)??陀^質(zhì)量評(píng)價(jià)能夠快速有效地評(píng)價(jià)編碼圖像的質(zhì)量,但符合客觀質(zhì)量評(píng)價(jià)指標(biāo)的圖像不一定具有較好的主觀質(zhì)量。常用的客觀質(zhì)量評(píng)價(jià)指標(biāo)主要有均方誤差(MSE)和峰值信噪比(PSNR)。設(shè)圖像大小為M×N,f(i,j)為編碼前的原始圖像,每像素由k比特表示,f(i,j)為解碼后的重建圖像,則均方誤差MSE定義為峰值信噪比PSNR定義(單位為分貝)為(9-12)(9-13)(3)算法的復(fù)雜度。圖像編碼算法的復(fù)雜度是指完成圖像壓縮和解壓所需的運(yùn)算量以及實(shí)現(xiàn)該算法的難易程度。

優(yōu)秀的壓縮算法除了要求有較高的編碼效率和編碼質(zhì)量外,還要求算法簡單,易于實(shí)現(xiàn),壓縮和解壓縮快。選用編碼方法時(shí)一定要考慮圖像信源本身的統(tǒng)計(jì)特性、多媒體系統(tǒng)的適應(yīng)能力、應(yīng)用環(huán)境以及技術(shù)標(biāo)準(zhǔn)。(4)算法的適用范圍。特定的圖像編碼算法具有其相應(yīng)的適用范圍,并非對(duì)所有圖像都有效。一般說來,大多數(shù)基于圖像信息統(tǒng)計(jì)特性的壓縮算法具有較廣的適用范圍,而一些特定的編碼算法的適用范圍較窄,如分形編碼主要用于自相似性高的圖像。

9.2哈夫曼編碼

哈夫曼編碼算法如下:

(1)將信源符號(hào)按其出現(xiàn)概率從大到小排序;

(2)把最小的兩個(gè)概率相加合并成新的概率,形成新的概率集合;

(3)對(duì)新的概率集合重復(fù)第2步,直到相加的兩個(gè)概率和為1.0;

(4)對(duì)于每次相加的兩個(gè)概率,給大的賦“0”,小的賦“1”(或者相反);

(5)讀出由某符號(hào)到概率和為“1.0”路徑上所遇到的“0”和“1”,按最低位到最高位的順序排好,即為該符號(hào)的哈夫曼編碼。例9-1

設(shè)一幅灰度級(jí)為8的圖像,灰度S0、S1、S2、S3、S4、S5、S6、S7出現(xiàn)的概率分別為0.40、0.18、0.10、0.10、0.07、0.06、0.05、0.04。如果編碼之前采用等長編碼,由于有8種灰度級(jí),則每種灰度級(jí)別至少需要3比特來表示。其哈夫曼編碼過程及結(jié)果如圖9-4所示。圖9-4哈夫曼編碼過程示意圖顯然,哈夫曼編碼形成的碼字是可識(shí)別的,即能夠保證一個(gè)符號(hào)的碼字不會(huì)與另一個(gè)符號(hào)的碼字的前幾位相同。比如說,如果S0的碼字為1,S1的碼字為01,而S2的碼字為011,則當(dāng)編碼序列中出現(xiàn)011時(shí),就不能判別它是S2的碼字還是S1的碼字后面跟了一個(gè)S0的碼字。上例的信息熵H、平均碼長L、編碼效率η和壓縮比CR如下:由此可見,哈夫曼編碼的編碼效率相當(dāng)高,其冗余度只有2.2%。如果采用等長編碼,由于有8種灰度級(jí),則每種灰度級(jí)至少需要3比特來表示,對(duì)于上例圖像而言,其編碼的平均碼長為3,編碼效率為85%。

對(duì)不同概率分布的信源,哈夫曼編碼的編碼效率有所差別。根據(jù)信息論中信源編碼理論,對(duì)于二進(jìn)制編碼,當(dāng)信源概率為2的負(fù)冪時(shí),哈夫曼編碼的編碼效率可達(dá)100%,其平均碼字長度也很短,而當(dāng)信源概率為均勻分布時(shí),其編碼效果明顯降低。在表9-1中,第兩種情況的概率分布也服從2的負(fù)冪次方,故其編碼效率η可以達(dá)到100%,但由于它服從均勻分布,其熵最大,平均編碼長度很大,因此從其他指標(biāo)看(如壓縮比),其編碼效率最低。也就是說,在信源概率接近于均勻分布時(shí),一般不使用哈夫曼編碼。哈夫曼編碼還存在以下問題:

(1)雖然哈夫曼編碼的碼字可以識(shí)別,但是編碼并不唯一,這是因?yàn)楦怕氏嗟鹊膬蓚€(gè)符號(hào)的排序及其賦值“0”或“1”是隨機(jī)的。

(2)變長編碼導(dǎo)致硬件實(shí)現(xiàn)復(fù)雜,且抗誤碼能力弱,也很難隨意查找或調(diào)用壓縮數(shù)據(jù)中間的內(nèi)容。如果編碼傳輸中有錯(cuò)誤,哪怕是1位錯(cuò)誤,也會(huì)引起一連串的錯(cuò)誤。(3)編碼效率依賴于信源統(tǒng)計(jì)特性,需要有信源概率分布的先驗(yàn)知識(shí),這就限制了哈夫曼編碼的應(yīng)用。

9.3香農(nóng)-范諾編碼

9.3.1香農(nóng)-范諾編碼的基本方法

香農(nóng)-范諾編碼基本方法的步驟如下:

(1)將信源符號(hào)按其出現(xiàn)概率pi從大到小排序,如S0,S1,…,SN。

(2)按照式(9-14)(D為編碼所用的數(shù)制)計(jì)算出符號(hào)Si對(duì)應(yīng)的碼字長度Ni。

-logDPi≤Ni≤-logDPi+1

(9-14)(3)按照式(9-15)計(jì)算符號(hào)Si對(duì)應(yīng)的累加概率Ai。

Ai=Ai-1+pi-1

(i=1,2,…,N-1;A0=0)

(9-15)

(4)將累加概率Ai由十進(jìn)制轉(zhuǎn)換為二進(jìn)制,取前Ni位作為信源符號(hào)Si的碼字。

例9-2以例9-1的圖像為對(duì)象,對(duì)其進(jìn)行香農(nóng)-范諾編碼,結(jié)果如表9-2所示。由于在此采用二進(jìn)制對(duì)碼字賦值,故用式(9-14)計(jì)算

碼字長度Ni時(shí),D取為2。以符號(hào)S4為例,其出現(xiàn)概率為0.07,計(jì)算得到的碼字長度為4,累加概率A4為0.78,將0.78轉(zhuǎn)換為二進(jìn)制并取其前4位即得符號(hào)S4的碼字為1100。9.3.2二分法香農(nóng)-范諾編碼方法

二分法香農(nóng)-范諾編碼與哈夫曼編碼相似,但采用從上到下的編碼過程,步驟如下:

(1)將信源符號(hào)按其出現(xiàn)概率從大到小排序;

(2)將符號(hào)分成兩組,使兩組符號(hào)的概率和盡可能接近,將第1組標(biāo)0,第2組標(biāo)1;

(3)重復(fù)步驟(2),直到每組只有一個(gè)符號(hào)為止;(4)將每個(gè)符號(hào)所屬組的值依次串起來,即可得到各個(gè)符號(hào)的香農(nóng)-范諾編碼。例9-3對(duì)例9-1的圖像進(jìn)行二分法香農(nóng)-范諾編碼,其編碼過程和結(jié)果如圖9-5所示。圖9-5香農(nóng)-范諾編碼過程示意圖編碼后的平均碼長L和編碼效率η分別為由此可見,二分法香農(nóng)-范諾編碼的碼長不完全遵守式(9-14),其編碼效率比基本方法稍高,但比哈夫曼編碼略低。

9.4算術(shù)編碼

算術(shù)編碼是80年代發(fā)展起來的一種熵編碼方法,其基本原理是將被編碼的整個(gè)數(shù)據(jù)序列表示成實(shí)數(shù)0到1之間的一個(gè)間隔(或區(qū)間),在該間隔內(nèi)選擇一個(gè)代表性的二進(jìn)制小數(shù)作為實(shí)際的編碼輸出。間隔的位置與輸入數(shù)據(jù)的概率分布有關(guān),序列越長則編碼表示它的間隔就越小,因而表示這一間隔所需的二進(jìn)制位數(shù)就越多。算術(shù)編碼有兩種模式:一種是基于信源概率統(tǒng)計(jì)特性的固定編碼模式;另一種是針對(duì)未知信源概率模型的自適應(yīng)模式。自適應(yīng)模式中各個(gè)符號(hào)的概率初始值均相同,它們依據(jù)出現(xiàn)的符號(hào)而相應(yīng)地改變。只要編碼器和解碼器均使用相同的初始值和改變值的方法,那么它們的概率模型將保持一致。上述兩種形式的算術(shù)編碼均可用硬件實(shí)現(xiàn),其中自適應(yīng)模式適用于不進(jìn)行概率統(tǒng)計(jì)的場(chǎng)合。有關(guān)實(shí)驗(yàn)數(shù)據(jù)表明,在未知信源概率分布的情況下,算術(shù)編碼一般要優(yōu)于哈夫曼編碼。在JPEG擴(kuò)展系統(tǒng)中,已經(jīng)用算術(shù)編碼取代了哈夫曼編碼。固定模式的算術(shù)編碼步驟如下:

(1)將數(shù)據(jù)序列的編碼間隔[L,H)初始化為[0,1),按照信源符號(hào)Si的概率pi成比例將其映射為[0,1)上的子間隔[Li,Hi),子間隔之間互不重疊。

(2)從輸入序列中按序取走一個(gè)符號(hào),依據(jù)該符號(hào)的出現(xiàn)概率如下更新間隔[L,H)。

①計(jì)算間隔的長度:W=H-L;

②更新間隔的上界和下界:H←H+W*Hi,L←L+W*Li。(3)重復(fù)第(2)步,直到輸入序列中沒有符號(hào)為止。

(4)最后從間隔中選擇一個(gè)數(shù)n(如間隔的下界)作為數(shù)據(jù)序列的編碼輸出。

例9-4設(shè)一待編碼的數(shù)據(jù)序列為“dacab”,信源中各

符號(hào)出現(xiàn)的概率依次為P(a)=0.4,P(b)=0.2,P(c)=0.2,P(d)=0.2。其算術(shù)編碼過程如圖9-6所示。圖9-6算術(shù)編碼過程示意圖首先,數(shù)據(jù)序列的編碼間隔[L,H)初始化為[0,1),符號(hào)a、b、c、d分別映射為[0,1)上的子間隔:[0,0.4)、[0.4,0.6)、[0.6,0.8)、[0.8,1.0)。

從數(shù)據(jù)序列中取出第一個(gè)符號(hào)為“d”,其對(duì)應(yīng)的初始子間隔為[0.8,1.0),間隔更新如下:

W=1-0=1,L=0+1×0.8=0.8,H=0+1×1.0=1.0從數(shù)據(jù)序列中取出第二個(gè)符號(hào)是“a”,其對(duì)應(yīng)的初始子間隔為[0,0.4),間隔更新如下:

W=1.0-0.8=0.2

L=0.8+0.2×0=0.8

H=0.8+0.2×0.4=0.88

從數(shù)據(jù)序列中取出第三個(gè)符號(hào)是“c”,其對(duì)應(yīng)的初始子間隔為[0.6,0.8),間隔更新如下:

W=0.88-0.8=0.08

L=0.8+0.08×0.6=0.848

H=0.8+0.08×0.8=0.864

依此類推,最后數(shù)據(jù)序列“dacab”被映射為實(shí)數(shù)間隔[0.85056,0.85184),或者說此區(qū)間內(nèi)的任一實(shí)數(shù)值都唯一對(duì)應(yīng)該數(shù)據(jù)序列,因而可以用一個(gè)實(shí)數(shù)表示該數(shù)據(jù)序列。[0.85056,0.85184)的二進(jìn)制形式為[0.110110011011,0.110110100001),可以看出0.1101101位于這個(gè)區(qū)間內(nèi)并且其編碼最短,故可將其作為數(shù)據(jù)序列“dacab”的編碼輸出。解碼是編碼的逆過程,步驟如下:

(1)根據(jù)符號(hào)的子間隔[Li,Hi)判斷編碼n所處的子間隔,輸出該子間隔對(duì)應(yīng)的符號(hào)Si。

(2)計(jì)算符號(hào)Si對(duì)應(yīng)的子間隔長度Wi:Wi=Hi-Li。(3)更新編碼n:n←(n-Li)/Wi。

(4)重復(fù)第(1)至第(3)步,直到解碼長度等于數(shù)據(jù)序列長度為止。下面以數(shù)據(jù)序列“dacab”的編碼結(jié)果0.1101101(即n=0.8516)為例來說明解碼過程。

首先由符號(hào)的子間隔可以判斷編碼n=0.8516處于子間隔[0.8,1.0),對(duì)應(yīng)符號(hào)為“d”,因而輸出的第一個(gè)解碼為“d”。

然后計(jì)算當(dāng)前符號(hào)對(duì)應(yīng)的子間隔長度Wi并更新編碼n,判斷其所處子間隔并輸出對(duì)應(yīng)符號(hào)。如此重復(fù),直到編碼

n為0時(shí)停止,即可全部解碼。過程如下:由于算術(shù)編碼器對(duì)整個(gè)信源只產(chǎn)生一個(gè)碼字,因此解碼器在收到碼字的所有位之前不能進(jìn)行解碼。此外,算術(shù)編碼對(duì)錯(cuò)誤也很敏感,如果有一位發(fā)生錯(cuò)誤將導(dǎo)致整個(gè)譯碼錯(cuò)誤。

9.5行程編碼

行程編碼(RLE,RunLengthEncoding)是一種利用

空間冗余度編碼的無損編碼方法,它在BMP、PCX、TIFF、PDF文件中均得到了應(yīng)用。它將具有相同值的連續(xù)符號(hào)串用其串長和一個(gè)代表值來代替,該連續(xù)串就稱之為行程,串長稱為行程長度。如,字符串“aabbbcddddd”經(jīng)行程編碼后,可以只用“2a3b1c5d”來表示。行程編碼分為等長和變長兩種,前者指編碼的行程長度二進(jìn)制位數(shù)固定,而后者指對(duì)不同范圍的行程長度使用不同的二進(jìn)制位數(shù)進(jìn)行編碼。變長行程編碼需要增加標(biāo)志位來表明所使用的二進(jìn)制位數(shù)。行程編碼對(duì)傳輸誤差很敏感,一旦有1位符號(hào)出錯(cuò)就會(huì)改變行程編碼的長度,從而使整個(gè)圖像出現(xiàn)偏移,因此一般要用行同步、

列同步的方法把差錯(cuò)控制在一行一列之內(nèi)。行程編碼比較適合于二值圖像的編碼,一般用于量化后出現(xiàn)大量零系數(shù)連續(xù)的場(chǎng)合,用行程來表示連零碼。如果圖像是由很多塊顏色或灰度相同的大面積區(qū)域組成,那么,采用行程編碼可以達(dá)到很高的壓縮比。若圖像中的數(shù)據(jù)非常分散,則行程編碼不但不能壓縮數(shù)據(jù),反而會(huì)增加圖像文件的大小。為了達(dá)到較好的壓縮效果,一般不單獨(dú)采用行程編碼,而將其和其他編碼方法結(jié)合使用。例如,在JPEG中,就綜合使用了行程編碼、DCT、量化編碼以及哈夫

曼編碼,先對(duì)圖像作分塊處理,再對(duì)這些分塊圖像進(jìn)行離散余弦變換(DCT),對(duì)變換后的頻域數(shù)據(jù)進(jìn)行量化并作Z字形掃描,接著對(duì)掃描結(jié)果作行程編碼,對(duì)行程編碼后的結(jié)果再作哈夫曼編碼。

9.6LZW編碼

9.6.1LZW編碼方法

LZW(LempelZiv&Welch)編碼又稱字串表編碼,它屬于一種無損編碼,是Welch將Lempel和Ziv所提出的無損壓縮技術(shù)改進(jìn)后的壓縮方法。LZW編碼的基本思想是:在編碼過程中,將所遇到的字符串建立一個(gè)字符串表(或稱為詞典),表中的每個(gè)字符串都對(duì)應(yīng)一個(gè)索引(或稱為碼字),編碼時(shí)用該字符串在字串表中的索引來代替原始的數(shù)據(jù)串。例如,一幅8位的灰度圖像,可以采用12位來表示每個(gè)字符串的索引,前256個(gè)索引用于對(duì)應(yīng)可能出現(xiàn)的256種灰度,由此可建立一個(gè)初始的字符串表,而剩余的3840個(gè)索引就可分配給在壓縮過程中出現(xiàn)的新字符串,這樣就生成了一個(gè)完整的字符串表,壓縮數(shù)據(jù)就可以只保存它在字符串表中的索引,從而達(dá)到壓縮數(shù)據(jù)的目的。字符串表是在壓縮過程中動(dòng)態(tài)生成的,不必要將它保存在壓縮文件里,因?yàn)榻鈮嚎s時(shí)可以由壓縮文件中的信息重新生成。

GIF圖像文件采用改良的LZW壓縮算法,通常稱為GIFLZW壓縮算法。GIF圖像文件以塊(又稱為區(qū)域結(jié)構(gòu))的方式來存儲(chǔ)圖像相關(guān)的信息,具體的文件格式可參考圖像文件格式的相關(guān)書籍。GIFLZW的編碼步驟如下:

(1)根據(jù)圖像中使用的顏色數(shù)初始化一個(gè)字串表,字串表中的每個(gè)顏色對(duì)應(yīng)一個(gè)索引。在初始字串表的末尾再添加兩個(gè)符號(hào)LZW_CLEAR和LZW_EOI(分別為字符表初始化標(biāo)志和編碼結(jié)束標(biāo)志)的索引。(2)設(shè)置字符串變量pF和cH并初始化為空,輸出LZW_CLEAR在字串表中的索引。

(3)從數(shù)據(jù)流中的第一個(gè)字符開始,依次讀取一個(gè)字符,將其賦給cH。

(4)判斷pF+cH是否已存在于字串表中。如果已存在,則用cH擴(kuò)展pF,即pF=pF+cH;否則,輸出pF在字串表中的索引,并在字串表末尾為pF+cH添加索引,并令pF=cH。

(5)重復(fù)第(3)步和第(4)步,直到所有字符讀完為止。

(6)輸出pF在字串表中的索引,然后輸出結(jié)束標(biāo)志LZW_EOI的索引,編碼完畢。

GIF-LZW的解碼過程和編碼過程正好相反,即將編碼后的碼字轉(zhuǎn)換成對(duì)應(yīng)的字符串,重新生成字串表,然后依次輸出對(duì)應(yīng)的字符串即可。GIFLZW的解碼流程如圖9-7所示,其中,Code和OldCode是兩個(gè)存放索引的臨時(shí)變量。圖9-7GIFLZW解碼流程9.6.2LZW編碼實(shí)例

下面通過一個(gè)實(shí)例說明GIFLZW的編碼及解碼過程。設(shè)有一來源于4色(以a、b、c、d表示)圖像的數(shù)據(jù)流:aabcabbbbd,對(duì)其進(jìn)行LZW編碼的過程如下:

編碼前,首先需要初始化一個(gè)字符串表。由于圖像中只有4種顏色,因而,可以只用4比特表示字符串表中每個(gè)字符串的索引,表中的前4項(xiàng)代表4種顏色,后兩項(xiàng)分別表示初始化和圖像結(jié)束標(biāo)志,建立的初始化字符串表如表9-3所示。接著把pF和cH初始化為空,輸出LZW_CLEAR在字符串表中的索引值4H,接下來是對(duì)圖像數(shù)據(jù)的編碼。

讀取第一個(gè)字符,即cH=“a”,因pF+cH=“a”已存在字串表中,所以pF=pF+cH=“a”。

讀入下一個(gè)字符,即cH=“a”,因pF+cH=“aa”不在字串表中,所以輸出pF=“a”的索引0,同時(shí)在字符串表末尾添加新字符串“aa”的索引6H,并使pF=cH=“a”。依次讀取數(shù)據(jù)流中的每個(gè)字符,如果pF+cH沒有出現(xiàn)在字符串表中,則輸出pF中的字符串的索引,并在字符串表末尾為新字符串pF+cH添加索引,并使PF=cH;否則,不輸出任何結(jié)果,僅使pF=pF+cH。所有字符處理完畢后,輸出pF中的字符串的索引,最后輸出結(jié)束標(biāo)志LZW_EOI的索引。至此,編碼完畢,完整的編碼過程如表9-4所示,最后的編碼結(jié)果為“4001271B35”(以十六進(jìn)制表示)。

9.7JPEG2000編碼

9.7.1JPEG2000概述

JPEG2000是由聯(lián)合圖像專家組(JointPhotographicExpertsGroup)于2000年底推出的一種基于小波變換的靜態(tài)圖像壓縮標(biāo)準(zhǔn),它具有廣泛的應(yīng)用前景。JPEG2000標(biāo)準(zhǔn)

仍在不斷發(fā)展和完善中,目前包括12部分,對(duì)應(yīng)代號(hào)為ISO/IEC15444-1~12,每一部分都在第1部分的基礎(chǔ)上增加了新的特性。第1部分:核心編碼系統(tǒng)。指定了基本的編碼/解碼步驟、碼流語法和JP2基本文件格式。

第2部分:對(duì)第1部分的擴(kuò)展。如更靈活的小波分解和系數(shù)量化方式、ROI編碼方式等。

第3部分:運(yùn)動(dòng)JPEG2000。針對(duì)運(yùn)動(dòng)圖像提出的解決方案,定義了MJ2文件格式。

第4部分:一致性。指定了使用第1部分編碼/解碼的一致性測(cè)試流程。

第5部分:參考軟件。提供了兩個(gè)用C和Java實(shí)現(xiàn)第1部分的源碼包。第6部分:復(fù)合圖像文件格式。針對(duì)印刷和傳真應(yīng)用的復(fù)合圖像定義了JPM文件格式。

第7部分:已被摒棄。

第8部分:安全問題。涉及用于JPEG2000的加密、數(shù)字水印、條件訪問等安全問題。

第9部分:交互協(xié)議。定義了網(wǎng)絡(luò)傳輸JPEG2000圖像和元數(shù)據(jù)的JPIP協(xié)議和工具。

第10部分:體數(shù)據(jù)。定義體數(shù)據(jù)的編碼方式。第11部分:無線應(yīng)用。定義了在易出錯(cuò)的無線網(wǎng)絡(luò)環(huán)境下的編碼、解碼方法JPWL。

第12部分:ISO基本媒體文件格式。定義了時(shí)間序列媒體的一般格式,與MPEG-4標(biāo)準(zhǔn)ISO/IEC14496—12具有共同的內(nèi)容。

JPEG2000的目標(biāo)是創(chuàng)建一個(gè)統(tǒng)一、集成的圖像壓縮系統(tǒng),允許使用不同的圖像模型(如客戶/服務(wù)器、實(shí)時(shí)傳輸、圖像庫、有限緩沖和帶寬資源等)能夠?qū)Σ煌愋停ㄈ缍?、灰度、彩色或者多分量圖像)、不同特性(如自然圖像、科學(xué)圖像、醫(yī)學(xué)影像、遙感圖像、文本、計(jì)算機(jī)圖形等)的靜止圖像進(jìn)行壓縮。JPEG2000統(tǒng)一了二值圖像編碼標(biāo)準(zhǔn)JBIG、無損壓縮編碼標(biāo)準(zhǔn)JPEG-LS以及JPEG基線編碼標(biāo)準(zhǔn),具有下列優(yōu)良特性:(1)良好的低比特率壓縮性能:JPEG在中高比特率條件上具有較好的率失真性能,但在低比特率情況下(如低于0.25比特/像素的高分辨灰度圖像)失真嚴(yán)重。JPEG2000能獲得更好的率失真性能和主觀圖像質(zhì)量,更能適應(yīng)網(wǎng)絡(luò)、移動(dòng)通信等有限帶寬的應(yīng)用需要。

(2)連續(xù)色調(diào)和二值圖像壓縮:JPEG對(duì)于自然圖像具有較好的壓縮性能,但壓縮計(jì)算機(jī)圖形和二值文本時(shí)性能變差,不適用于復(fù)合文本壓縮。JPEG2000能夠?qū)ψ匀粓D像、復(fù)合文本、醫(yī)學(xué)圖像、計(jì)算機(jī)圖形等具有不同特征、不同類型的圖像進(jìn)行壓縮。(3)有損和無損壓縮:在同一個(gè)壓縮碼流中,JPEG不能同時(shí)提供有損和無損兩種壓縮,而JPEG2000卻可以,可滿足圖像質(zhì)量要求很高的醫(yī)學(xué)圖像、圖像庫等處理需要。(4)按照像素精度或者分辨率進(jìn)行漸進(jìn)式傳輸:漸進(jìn)式圖像傳輸允許圖像按照所需的分辨率或像素精度進(jìn)行重構(gòu),用戶可以根據(jù)需要對(duì)圖像傳輸進(jìn)行控制。在獲得所需的圖像分辨率或質(zhì)量要求后,便可終止解碼,而不必接收整個(gè)圖像壓縮碼流。(5)隨機(jī)訪問和處理碼流:在不解壓的情況下,可隨機(jī)獲取特定圖像區(qū)域的壓縮碼流,并進(jìn)行幾何變換、特征提取等處理。

(6)抗誤碼特性好:通過設(shè)計(jì)適當(dāng)?shù)拇a流格式和相應(yīng)的編碼措施,對(duì)差錯(cuò)的魯棒性高,可以在噪聲干擾大的無線通信信道上傳輸。

(7)大圖像和多分量圖像:允許的最大圖像尺寸為(232-1)×(232-1),最大圖像分量為214,圖像分量的最大顏色深度為38位。(8)固定速率、固定大小、有限的存儲(chǔ)空間:通過分塊技術(shù)和速率控制,允許指定壓縮文件的期望大小,易于硬件實(shí)現(xiàn),能夠應(yīng)用于帶寬資源和存儲(chǔ)空間有限的場(chǎng)合。(9)感興趣區(qū)域編碼:允許指定用戶感興趣區(qū)域,對(duì)該區(qū)域采用低壓縮比,而其他區(qū)域采用高壓縮比,可實(shí)現(xiàn)交互式壓縮。9.7.2JPEG2000核心編碼系統(tǒng)

JPEG2000核心編碼系統(tǒng)用離散小波變換(DWT,DiscreteWaveletTransform)和最優(yōu)截?cái)嗲度胧綁K編碼(EBCOT,EmbeddedBlockCodingwithOptimizedTruncation)取代了JPEG基線編碼系統(tǒng)中的離散余弦變換

和哈夫曼編碼,其編解碼流程如圖9-8所示。圖9-8JPEG2000核心編碼系統(tǒng)編解碼流程首先對(duì)預(yù)處理后的圖像進(jìn)行離散小波變換,再對(duì)變換后的小波系數(shù)進(jìn)行量化,然后對(duì)量化結(jié)果分塊進(jìn)行嵌入式編碼,最后依據(jù)率失真最優(yōu)原則分層組織嵌入式位流,按照一定的碼流格式打包輸出。

解碼過程相對(duì)簡單,根據(jù)壓縮碼流中存儲(chǔ)的參數(shù),對(duì)應(yīng)于編碼器的各部分進(jìn)行逆向操作,輸出重構(gòu)的圖像數(shù)據(jù)。下面簡要介紹編碼器的各組成部分,具體內(nèi)容請(qǐng)參見相關(guān)標(biāo)準(zhǔn)說明。

1.預(yù)處理

(1)圖像分片。JPEG2000允許將圖像按網(wǎng)格形式分割成若干互不重疊、任意尺寸的矩形塊——圖像片或拼接塊(Tile),每個(gè)拼接塊可以按特定的參數(shù)獨(dú)立進(jìn)行編碼。圖像分片有利于降低內(nèi)存需求,可以處理較大的圖像,也有利于處理壓縮域中的感興趣區(qū)域。除圖像邊界上的拼接塊外,所有拼接塊都有相同尺寸,小尺寸的拼接塊容易導(dǎo)致邊界失真并降低壓縮效率,而大尺寸的拼接塊則內(nèi)存需求大,一般取64×64~1024×1024。(2)電平位移。電平位移的目的是希望圖像的樣本數(shù)據(jù)有近似集中于零附近的動(dòng)態(tài)范圍。對(duì)于B位無符號(hào)整

數(shù)的圖像分量I(x,y),通過減去2B-1來實(shí)現(xiàn)電平位移,即I(x,y)←I(x,y)-2B-1;對(duì)于有符號(hào)圖像分量則無需進(jìn)行

電平位移。對(duì)于有損壓縮,由于采用實(shí)數(shù)型離散小波變換,因此還需對(duì)偏移后的數(shù)據(jù)進(jìn)行歸一化處理,即I(x,y)←I(x,y)/2B。(3)分量變換。分量變換的主要目的是減少圖像分

量之間的相關(guān)性,以便利用人眼對(duì)色度的分辨率低于亮度

的特性進(jìn)行壓縮。JPEG2000定義了分別用于有損壓縮和無損壓縮的不可逆顏色變換(ICT,IrreversibleColorTransform)和可逆顏色變換(RCT,ReversibleColorTransform)。ICT由RGB變換到Y(jié)CrCb,采用近似的實(shí)數(shù)運(yùn)算,可用在有損小波壓縮中。RCT則采用RGB變換到Y(jié)UV,采用精確的整數(shù)運(yùn)算,可用在無損小波壓縮中。設(shè)αR=0.299,αG=0.587,αB=0.114分別表示R、G、B的權(quán)重,且滿足αR+αG+αB=1,則正向ICT和逆向ICT分別如式(9-16)和式(9-17)正向RCT和逆向RCT分別如式(9-18)和式(9-19)

2.離散小波變換

二維離散小波變換是通過對(duì)樣本數(shù)據(jù)先沿行方向進(jìn)行低通和高通濾波,并對(duì)濾波結(jié)果進(jìn)行2↓1下采樣,再對(duì)采樣結(jié)果沿列方向進(jìn)行與行方向同樣的濾波和下采樣來實(shí)現(xiàn)的。經(jīng)過小波變換后,圖像片的每個(gè)分量被分解為低頻和高頻子帶,如圖9-9所示。圖9-9圖像小波分解示意圖

JPEG2000支持最大級(jí)數(shù)為32的多級(jí)分解,下一級(jí)是對(duì)當(dāng)前級(jí)的低頻子帶進(jìn)行分解的結(jié)果。JPEG2000支持基于

卷積和基于提升的兩種濾波模式,有損壓縮采用Daubechies9/7雙正交樣條濾波器,無損壓縮采用LeGall5/3樣條濾波器。為了保證在兩個(gè)邊界的一個(gè)樣本能夠在空間有對(duì)應(yīng)的濾波掩蔽系數(shù),兩種濾波模式的實(shí)現(xiàn)都要求先對(duì)信號(hào)進(jìn)行

周期對(duì)稱擴(kuò)展。

3.量化

對(duì)于無損壓縮,小波系數(shù)不需要量化;對(duì)于有損壓縮,對(duì)小波系數(shù)采用帶死區(qū)(Deadzone,即輸出為0的區(qū)域)的均勻標(biāo)量量化方法。每個(gè)子帶定義一個(gè)量化步長Δb,量化公式如下:

(9-20)

式中:yb是子帶b中的小波系數(shù);Δb是子帶b的量化步長;sign(yb)表示yb的正負(fù)號(hào);qb是量化結(jié)果。圖9-10帶死區(qū)的量化示意圖在死區(qū)附近的量化寬度為2Δb,這樣可以保證量化后出現(xiàn)更多0,如圖9-10所示。在JPEG2000碼流中,Δb用5比特指數(shù)εb和11比特尾數(shù)μb來表示,可由下式求得:

(9-21)

式中:Rb為子帶b的動(dòng)態(tài)范圍。如果Δb為2的整數(shù)次冪,則μb為0。

在JPEG2000的隱含量化模式下,各子帶的量化步長是相關(guān)的,可以從低頻子帶的量化步長導(dǎo)出。

4.碼率控制

編碼的碼率R(每符號(hào)的比特?cái)?shù))與失真度D(原始圖像與重建圖像之間的均方誤差)之間的函數(shù)關(guān)系稱為率失真函數(shù)。率失真函數(shù)在定義域內(nèi)是單調(diào)遞減的,給出了失真度為D時(shí)的極限碼率。碼率控制就是希望在允許的失真條件下能夠獲得最優(yōu)碼率,或者在達(dá)到目標(biāo)碼率的條件下使失真度最小。通過合理的率失真優(yōu)化算法,可以使得產(chǎn)生截?cái)鄷r(shí)相同碼率下的失真度最小。顯然,將圖9-11中的線段按照斜率從大到小的順序連接而成的虛線,能夠獲得更優(yōu)的率失真性能。圖9-11率失真優(yōu)化示意圖

5.EBCOT編碼

經(jīng)過量化后,將子帶進(jìn)一步劃分為更小的矩形區(qū)域-碼塊(Codeblocks),使得同一子帶的碼塊大小相同(典型大小為32×32或64×64)。EBCOT采用兩層編碼策略:在第1層編碼中,對(duì)每個(gè)碼塊獨(dú)立進(jìn)行熵編碼,包括分?jǐn)?shù)位平面編碼(BPC,F(xiàn)ractionalBitPlaneCoding)和二進(jìn)制算術(shù)編碼(BAC,BinaryArithmeticCoding),以得到碼塊的嵌入式位流;在第2層編碼中,根據(jù)率失真最優(yōu)原則將所有碼塊的嵌入式位流組織成具有不同質(zhì)量的位流層,按照

一定的碼流格式對(duì)每一層打包輸出壓縮碼流。(1)分?jǐn)?shù)位平面編碼。

從碼塊的最高有效位平面(至少包含一個(gè)1)到最低

位平面,依次對(duì)每個(gè)位平面執(zhí)行重要性傳播(SPP,SignificancePropagationPass)、幅度精練(MRP,MagnitudeRefinementPass)和清理(CPU,CleanupPass)3個(gè)編碼通道。位平面上的每個(gè)系數(shù)位必須且只能在其中一

個(gè)編碼通道上編碼。碼塊中的每個(gè)位平面從左上角開始,按條帶方式從上到下掃描,條帶內(nèi)按列從左到右掃描,條帶高度為4,掃描順序如圖9-12所示。圖9-12碼塊位平面內(nèi)的掃描順序碼塊的每個(gè)系數(shù)都有一個(gè)對(duì)應(yīng)的“重要性狀態(tài)”,1表示該系數(shù)重要,0表示不重要。重要性狀態(tài)初始化為0,編碼過程中可能變?yōu)?。8個(gè)鄰域系數(shù)的重要性狀態(tài)確定了當(dāng)前系數(shù)的上下文,最多有256種上下文。考慮到待編碼位與鄰域位的相關(guān)性和設(shè)計(jì)的可行性,EBCOT將8個(gè)鄰域分為水平、垂直和對(duì)角3類,通過零編碼(重要性編碼)、符號(hào)編碼、幅度精練編碼和游程編碼(清理編碼)4個(gè)算子使得上下文縮減到19種。這4個(gè)算子由3個(gè)編碼通道來執(zhí)行,每個(gè)位生成一個(gè)上下文標(biāo)志CX和0/1判定D,然后將其送入算術(shù)編碼器處理。在重要性傳播通道中,如果當(dāng)前位現(xiàn)在不重要,但其8個(gè)相鄰位中至少有一個(gè)重要,則該位采用零編碼算法進(jìn)行編碼;如果當(dāng)前位變得重要,則需要進(jìn)行符號(hào)編碼。重要性傳播通道中未被編碼的重要位將在幅度精練通道中被編碼。在前兩個(gè)通道未被編碼的位將進(jìn)入清理編碼通道,如果一列中的4個(gè)比特都不重要,則對(duì)其采用游程編碼,否則分別對(duì)每個(gè)比特采用零編碼。(2)二進(jìn)制算術(shù)編碼。JPEG2000中采用MQ算法實(shí)現(xiàn)基于上下文的二進(jìn)制算術(shù)編碼,包括概率估計(jì)、間隔計(jì)算和區(qū)間調(diào)整等過程。MQ將輸入的0/1判定D映射為小概率符號(hào)(LPS,LeastPossibleSymbol)和大概率符號(hào)(MPS,MostPossibleSymbol),通過遞歸劃分概率區(qū)間來實(shí)現(xiàn)

編碼。當(dāng)收到一個(gè)0/1判定D時(shí),首先根據(jù)上下文標(biāo)志CX在上下文表和概率估計(jì)表中查出LPS的概率Qe,然后根據(jù)D是否為MPS來劃分概率區(qū)間。假設(shè)當(dāng)前概率區(qū)間的下界和大小分別為C和A,則概率區(qū)間更新如下:劃分之后,LPS對(duì)應(yīng)區(qū)間為[C,

C+AQe),MPS對(duì)應(yīng)區(qū)間為[C+AQe,C+A)。為了簡化計(jì)算,讓A保持在0.75~1.5,用Qe替換式(9-22)的AQe,從而避免了乘法運(yùn)算。如果LPS子區(qū)間大于MPS子區(qū)間時(shí),則交換兩個(gè)子區(qū)間。當(dāng)A小于0.75時(shí),需要對(duì)A和C逐次加倍(左移位),直到A大于或等于0.75,稱此過程為重歸一化。當(dāng)C溢出時(shí),輸出C的高位到壓縮位流。(3)碼流組織。為了使得壓縮碼流具有失真率可伸縮性(即傳輸漸進(jìn)性),JPEG2000采用壓縮后率失真優(yōu)化

(PCRD,PostCompressionRateDistortion)算法計(jì)算碼塊位流在每一層上的截?cái)帱c(diǎn),將碼塊位流按照截?cái)帱c(diǎn)分層組織成不同的質(zhì)量層(QualityLayer)。

設(shè)每個(gè)碼塊有n個(gè)截?cái)帱c(diǎn)(對(duì)應(yīng)有n個(gè)質(zhì)量層),zki為碼塊Bi的第k個(gè)截?cái)帱c(diǎn),Li(zki)和Di(zki)分別為碼塊Bi在zki處對(duì)應(yīng)的碼長和失真率,有:(9-23)每個(gè)質(zhì)量層由拼接塊中各個(gè)碼塊的部分嵌入式位流組成,可以涉及碼塊任意數(shù)量的位平面編碼通道。圖9-13給出一個(gè)3層編碼的質(zhì)量層示意圖,其中碼塊B4對(duì)質(zhì)量層Q2沒有貢獻(xiàn)。圖9-13質(zhì)量層示意圖為了更好地表達(dá)碼流分層組織的思想,JPEG2000引入界域(Precinct)和數(shù)據(jù)包(Packet)。界域是指在某一分辨率下,空間某連續(xù)區(qū)域在所有子帶中對(duì)應(yīng)的碼塊集合,界域尺寸要求為2的整數(shù)次冪。碼塊、界域、子帶之間的關(guān)系如圖9-14所示。圖9-14塊、界域、子帶之間的關(guān)系每個(gè)界域產(chǎn)生一個(gè)數(shù)據(jù)包,數(shù)據(jù)包的漸進(jìn)次序可以分為5種:層-分辨率-分量-界域位置(LRCP);分辨率-層-分量-界域位置(RLCP);分辨率-界域位置-分量-層(RPCL);界域位置-分量-分辨率-層(PCRL);分量-界域位置-分辨率-層(CPRL),默認(rèn)為LRCP。圖9-15給出了一個(gè)2級(jí)分解具有16個(gè)碼塊的漸近次序。圖9-15漸進(jìn)次序

6.感興趣區(qū)域編碼

通過使用Maxshift方法,JPEG2000允許對(duì)任意形狀的感興趣區(qū)域(ROI,RegionofInterest)進(jìn)行編碼,且無需對(duì)ROI的形狀進(jìn)行編碼和解碼。Maxshift方法的基本思想是在進(jìn)行EBCOT編碼之前,找到ROI的最小值和背景的最大值,將ROI的小波系數(shù)整體平移到背景系數(shù)之上,因而ROI中的系數(shù)的位平面編碼先于背景系數(shù)。9.7.3JPEG2000編碼實(shí)例

JPEG2000編碼實(shí)現(xiàn)相當(dāng)復(fù)雜,流行的相關(guān)軟件包主要有OpenJPEG、JasPer和Kakadu。其中,OpenJPEG和JasPer是用C編寫的、開源的JPEG2000編碼器,Kakadu是EBCOT的發(fā)明者DavidTaubman用C++編寫的功能較全、性能較好的JPEG2000軟件開發(fā)包。下面用Kakadu中的kdu_compress程序?qū)κ纠龍D像進(jìn)行JPEG2000編碼。

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論