Kompresinių kodų lyginamojo analizė

Vaizdinių duomenų kompresija yra susieta su bitų, reikalingų paveikslo pavaizdavimui, skaičiaus mažinimu. Galbūt paprasčiausia ir efektyviausia duomenų kompresijos forma yra ribotos juostos paveikslų semplingas, kur begalinis pikselių kiekis tam tikrame plote yra sumažinamas iki vieno mėginio (sample) be jokio informacijos praradimo. Todėl mėginių skaičius tam tikrame plote yra be galo mažinamas. Duomenų kompresija pirmiausiai yra taikoma perdavime ir informacijos saugojime. Vaizdų perdavimas taikomas televizijos transliavime, karinėms komunikacijoms per lėktuvus, radaruose ir sonaruose, telekonferencijose, kompiuterinėse komunikacijose, faksimiliniam ryšiui ir panašiai. Vaizdų saugojimas reikalingas mokomiesiems ir verslo dokumentams, medicininiai vaizdai, naudojami kompiuterinėje tomografijoje, magnetinio rezonanso vaizdams ir skaitmeninėje radiologijoje, filmuose, palydoviniuose vaizduose, oro prognozių žemėlapiuose, geologiniuose planuose ir t.t.
Poreikis elektroniškai saugoti ir perduoti grafiką ir dviejų tonų paveikslus, kaip brėžinius, laiškus, laikraštinius leidinius, žemėlapius ir kitus dokumentus augo greitai, ypač atsiradus personaliniams kompiuteriams ir modernioms telekomunikacijoms. Komerciniai produktai dokumentų perdavimui telefono linijomis ir duomenų perdavimo kanalais jau egzistuoja.

Atsiųsti pilną darbą moku.lt_kompresiniai_kodai

Literatūros apžvalga

Knygoje “Fundamentals of Digital Image Processings” yra aprašyti pagrindiniai su vaizdų apdorojimu susiję procesai, naudojami vaizdinių duomenų paruošimui saugoti, perduoti, transliuoti. Čia aprašomi procesų veikimo principai, pailiustruojami pavyzdžiais ir jei yra galimybė jie yra palyginami. Vienas iš vaizdų apdorojimo procesų yra grafinių ir dviejų tonų vaizdų duomenų suspaudimas, kuriam ir bus skiriamas dėmesys.

Dviejų tonų vaizdų kodavimas

CCITT (Comite Consultatif International de Telephonie et Telegrapie) rekomendavo aštuonių dokumentų rinkinį skirtingų dvejetainių kodavimo algoritmų palyginimui ir įvertinimui (Pav.2., Pav.3.). CCITT standartiniai semplingo dydžiai (rates) tipiškiems A4 formato dokumentams, naudojamiems perdavimui per taip vadinamą Group 3 skaitmeninį faksimilinį aparatą, yra 3,85 linijos milimetrui normalioje rezoliucijoje ir 7,7 linijos milimetrui aukštoje rezoliucijoje vertikalia kryptimi. Horizontalia kryptimi standartinis semplingo dydis yra 1728 pikseliai eilutei. Tai derinasi su rezoliucija 7,7 linijos milimetrui arba 200 taškų coliui (ppi). Laikraščių puslapiams ir kitiems dokumentams, kuriuose yra ir teksto, ir pustoninių paveikslėlių, naudojami semplingo dydžiai yra nuo 400 iki 1000 ppi. Taigi standartiniam A4 (8,5-in x 11-in) lapui bus reikalingas 200 ppi x 100 lpi semplingo tankumas. Perduoti šią informaciją per 4,8 kb/s spartos telefono linija užtruks virš 6 min. Tarkime esant suspaudimo laipsniui 5, perdavimo laiką galima sutrumpinti iki 1,3 minutės.
Daugelis dvejetainių paveikslų kompresijos algoritmų išnaudoją tą faktą, kad (1) daugelis pikselių yra balti, (2) juodi pikseliai atsiranda taisyklingai, t.y. raidžių, simbolių ar susijungusių sienų pavidalu. Yra trys pagrindinės tokių vaizdų kodavimo koncepcijos:
1. Koduojami tik pereinamieji taškai tarp balto ir juodo,
2. Praleidžiama balta spalva,
3. Objekto formos (pattern) atpažinimas.
Pav.1. parodyta šiomis koncepcijomis paremtų algoritmų klasifikacija.

Pav.1. Dvejetainių duomenų kompresijos technikos

Pav. 2. CCITT testiniai dokumentai 1-4

Pav.3. CCITT testiniai dokumentai 5-8

Segmentų ilgio kodavimas (run-length coding)

Segmentų ilgio kodavime (SIK) yra koduojami juodų ir baltų segmentų ilgiai. Kadangi balti (0-iai) ir juodi (1-iai) segmentai keičiasi, segmento spalvos koduoti nereikia (Pav.4.). Pirmasis segmentas visada yra baltas su eile nulių, jei reikia. Tokios situacijos susidaro spausdintuose dokumentuose, grafikoje, orų žemėlapiuose ir panašiai, kur 0-io (baltas pikselis) tikimybė p yra artima vienetui.
Sakykime, kad segmentai yra koduojami maksimaliais ilgiais M ir, paprastumo dėlei, tegul būna M=2m-1. Tada reikės m bitų užkoduoti kekvieną segmentą fixed-lenght kodu. Jei vienas po kito einantys 0-iai atsiranda nepriklausomai, tada segmentų ilgių tikimybių pasiskirstymas tampa geometriniu pasiskirstymu.

Kadangi segmento ilgis reiškia eilę, kur yra l 0-ių, po kurių eina 1, tada iš viso (l+1) simbolių ir todėl vidutinis simbolių skaičius segmente bus

Tokiu būdu yra reikalingas m bitų kiekis segmentų ilgio kodavimo įgyvendinimui vidutiniškai dvejetainių simbolių kiekiui . Pasiekiama kompresija yra

Tarkime p=0.9 ir M=15. Gauname, kad m=4, =7.94 ir C=1.985. Pasiekta vidutinė suspaudimo lygis yra Bvid=m/=0.516 bitų pikseliui, o kodo efektyvumas H/Ba=0,496/0.516=91%. Duotai p reikšmei optimali M reikšmė gali būti nustatyta taip, kad duotų didžiausią efektyvumą. SIK efektyvumas gali būti dar pagerintas, einant prie kintamo ilgio kodavimo, kaip Huffmano kodavimas m ilgio blokams.

Pav 4., Segmentų ilgio kodavimas ir baltų blokų praleidimas

Bitų plokštumų kodavimas (Bit-Plane Encoding)

256 pilkumo lygių paveikslas gali būti laikomas kaip rinkinys aštuonių 1-o bito plokštumų, kurių kiekviena gali būti užkoduota pagal SIK. 8-ių bitų monochrominiams paveikslams gali būti pasiekiamas nuo 1,5 iki 2 kompresijos lygis. Šis metodas tampa labai jautrus kanalo klaidoms, nebent reikšmingos bitų plokštumos yra kruopščiai apsaugojamos.

Huffmano kodavimo algoritmas

1. Simbolių tikimybės yra išdėstomos mažėjimo tvarka ir įsivaizduojamos kaip medžio lapų mazginiai taškai.
2. Kai yra daugiau, negu vienas mazgas:
a. Sujungia du mazgus su mažiausiomis tikimybėmis naujo mazgo suformavimui, kurio tikimybė yra suma sujungtųjų mazgų.
b. Sutartinai priskiria 1 ir 0 kiekvienai šakų porai, susijungiančiai į mazgą.
3. Nuosekliai skaito nuo šakninio (pagrindinio) mazgo iki lapo mazgo, kur yra simbolis.

Šis algoritmas duoda Huffmano kodų knygą bet kuriam duotam tikimybių rinkiniui. Kodavimas ir dekodavimas yra atliekamas paprasčiausiai žiūrint į reikšmes lentelėje. Kadangi kodiniai žodžiai turi kintamus ilgius, tai reikalingas buferis tada, jei (kaip dažniausiai ir būna) informacija turi būti perduodama per pastovios spartos kanalą. Kodų knygos dydis yra L ir ilgiausias kodinis žodis gali turėti ne daugiau, nei L bitų. Šie parametrai tampa neleistinai dideli, kai L auga. Praktinė Huffmano kodo versija yra sutrumpintas (truncated) Huffmano kodas, norint išvengti didelės kodų knygos. Sutrumpintas Huffmano kodas priskiria atskirus Huffmano kodinius žodžius baltiems ir juodiems segmentams iki ilgių atitinkamai Lb ir Lj. Tipinės šių segmentų vertės yra Lb=47 ir Lj=15. Ilgesni segmentai, kurie turi mažesnes tikimybes, gauna fixed-lenght kodinį žodį, kuris susidaro iš prefix kodo ir iš segmento ilgio 11 bitų dvejetainio kodo.
Modifikuotas Huffmano kodas, kurį rekomendavo CCITT kaip vienos dimensijos standartinį kodą Group 3 faksimiliniam perdavimui, naudoja Lb= Lj=63. Segmentų ilgiai, trumpesni nei 64, yra koduojami pagal Huffmaną ir gaunamas terminatorinis kodas. Likusieji segmentai gauna kodinį žodį, sudarytą iš “kosmetinio” (make-up) kodo ir iš terminatorinio kodo. Pav.5. yra Group 3 standarto kodai, ir išplėtimo kodų lentelė didesniam popieriaus lapo pločiui iki A3 dydžio, kuriam reikia iki 2560 pikselių eilutei.
Ilgalaikė histograma yra ganėtinai naudinga dvejetainių duomenų kodavimui, kaip grafikai ir faksimiliniams vaizdams. Tačiau nelabai tinka televiziniams vaizdams.
Pavyzdyje yra pavaizduojama medžio struktūra ir Huffmano kodai. Algoritmas duoda kodinius žodžius, kurie gali būti unikaliai dekoduojami. Taip yra todėl, kad joks kodinis žodis negali būti prefiksu arba jokiu didesnio ilgio kodiniu žodžiu. Pavyzdžiui jei užkoduotas pagal Huffmano kodą bitų stautas yra
0 0 0 1 0 1 1 0 1 0 1 1 …
tada simbolių seka yra s0 s2 s5 s3 ….. Prefikso kodas (elementai apskritimuose) yra gaunamas skaitant “lapų” kodą, kurie veda link pirmo mazgo, tarnaujančio kaip pagrindas (root) sutrumpintiems (truncated) simboliams. Šiame pavyzdyje yra du prefix kodai. Sutrumpintam Huffmano kodui simboliai s4 …..,s7 yra užkoduoti dviejų bitų dvejetainiu kodu. Šis kodas pavyzdyje tampa mažiau efektyvus, nei paprastas fixed-lenght dvejetainis kodas. Bet tai nėra būdinga sutrumpintam Huffmano kodui.

Huffmano kodavimo pavyzdys. x, x’, x’’ yra prefikso kodai, y yra fixed-lenght kodas, z yra terminatorinis kodas. Bendru atveju x, x’, x’’ gali būti skirtingi.

Kitos kintamo ilgio kodavimo formos, kurios supaprastina kodavimo-dekodavimo procedūras, yra paremtos algoritmais. Tarp jų verta paminėti AN ir BN kodus. AN kodai, dar vadinami LN kodais, yra daugialypiai fixed-lenght kodai, kurie yra beveik optimalūs eksponentiškai pasiskirsčiusiems segmentų ilgiams. Jie priklauso linijinių kodų klasei, kurių
ilgis didėja apytiksliai tiesiškai su pranešimų skaičiumi. Jei lk, k=1,2,3…, yra segmentų ilgiai, tada N dydžio bloko AN kodas gaunamas parašant k=q(2N-1)+r, kur 1≤r≤2N-1 ir q yra neneigimas sveikasis skaičius. lk kodinis žodis turi (q+1)N bitų, iš kurių pirmieji qN bitai yra 0-iai ir paskutiniai N bitai yra dvejetainis r atvaizdas. Pavyzdžiui jei N=2, A2 kodas ilgiui l8 (8=2×3+2) yra 000010.
Eksperimentai parodė, kad ilgi segmentai yra dažnesni, nei tą numato eksponentinis pasiskirstymas. Geresnis segmentų ilgio pasiskirstymo formos modelis yra

kur l mažėja ne taip greitai, kaip eksponentiniame pasiskirstyme.
BN kodai, dar vadinami HN kodais, taip pat yra fixed-lenght kodo kartotiniai. BN žodžio ilgis auga panašiai pagal N logaritmą. Nustatytas bloko ilgis BN kodui yra N+1 bitų. Jis konstruojamas išvardinant visus įmanomus N bitų žodžius, tada eina 2N bitų žodžiai, po to 3N ir taip toliau. Po kiekvieno N bitų bloko yra įterpiamas papildomas bitas. Įterptas bitas yra 0, išskyrus 1, kuris yra įterpiamas po paskutinio bloko. Lentelėje 1 pavaizduota B1 kodo konstrukcija.

Pav.5. Modifikuoto Huffmano algoritmo kodų lentelė.

Lentelėje 2 yra b ir j (vidutinis dvejetainių simbolių skaičius segmentui), bei entropijų Hb ir Hj (vidutinis bitų kiekis, reikalingas užkoduoti segmentui) reikšmių sąrašas CCITT dokumentų baltų ir juodų segmentų ilgiams. Išgaunamos kompresijos viršutinė riba šiems duomenims gaunama kaip

kuris taip pat yra lentelėje 2. Rezultatai rodo kompresijos koeficientus nuo 5 iki 20. Tai gaunama panaudojus SIK techniką.

Baltų blokų praleidimas

Baltų blokų praleidimas (WBS – white block skipping) yra labai paprastas, bet labai efektyvus kompresijos algoritmas. Kiekviena eilutė yra padalinama į N piskelių blokus. Jei bloke yra vien balti pikseliai, jis koduojamas 0-iu. Kitais atvejais kodinis žodis turi N+1 bitų, kurių pirmas yra 1, o po jo eina bloko dvejetainė struktūra (Pav.4). Bitų kiekis šiam metodui yra
, bitai pikseliui
kur pN yra tikimybė, kad bloke yra vien balti pikseliai. Šis bitų kiekis priklauso nuo bloko dydžio N. Reikšme N=10 yra tinkama įvairiems paveikslams. WBS yra paprasta sutrumpinto Huffmano kodo forma ir dirba gerai ypač tada, kai paveiksle yra didelių baltų plotų.
Adaptyvi WBS schema efektyvumą žymiai pagerina, koduodama visas baltas eilutes atskirai. 0 yra priskiriamas visoms visiškai baltoms eilutėms. Jei eilutėje yra bent 1 juodas pikselis, tada naudojamas įprastas WBS kodas tai eilutei. WBS metodas taip pat gali būti išplėstas iki 2-jų dimensijų, dirbant su MxN pikselių blokais. Visiškai balti blokai koduojami 0-iu. Kiti blokai koduojami pagal (MN+1) bitus, kur pirmas bitas yra 1, o po jo eina bloko dvejetainė struktūra. Adaptyvi WBS schema, kuri naudoja kintamą bloko dydį, veikia taip: jei pradinis blokas yra visiškai baltas, jam priskiriamas 0. Kitu atveju yra priskiriamas prefiksas 1 ir blokas padalinamas į kelis mažesnius, su kuriais atliekami tokie patys veiksmai. Procesas tęsiasi, kol pasiekiamas elementarus blokas, kuris tada koduojamas pagal įprastą WBS metodą.

Prediction Differential Quantization (PDQ)

PDQ yra praplėstas segmento ilgio kodavimas, kur išnaudojama koreliacija tarp nuskanuotų eilučių. Šis metodas paprasčiausiai užkoduoja sutampančią informaciją juoduose segmentuose tolimesnėse eilutėse. Tai daroma užkoduojant skirtumus Δ’ ir Δ’’ juoduose segmentuose iš eilutės į eilutę kartu su pranešimais “nauja pradžia” (NS – new start), kai prasideda juodas segmentas ir “sulieti” (M – merge), kai tame segmente daugiau nėra sutapimo. Nauja pradžia koduojama specialiu kodiniu žodžiu, o suliejimas gaunamas koduojant baltus ir juodus segmentus rw ir rb, kaip parodyta Pav.6.

Pav.6 PDQ metodas

Relative Address Coding – RAC

(RAC) naudoja tą patį principą, kaip ir PDQ metodas ir skaičiuoja segmentų ilgių skirtumus sekdamas arba paskutinį perėjimą (iš 0 į 1 arba iš 1 į 0) toje pačioje eilutėje, arba artimiausią perėjimą ankstesnėje eilutėje. Pavyzdžiui, perėjimo pikselis Q (Pav.7) yra užkoduotas pagal trumpiausią atstumą PQ arba Q’Q, kur P yra ankstesnio perėjimo elementas dabartinėje eilutėje ir Q’ yra artimiausias perėjimo elementas dešinėje nuo P ankstesnėje eilutėje, kurio perėjimo kryptis yra tokia pati, kaip ir Q. Jei P neegzistuoja, tada laikoma, kad jis yra įsivaizduojamas pikselis dešinėje nuo paskutinio pikselio ankstesnėje eilutėje. Atstumas QQ’ koduojamas kaip +N, jei Q’ yra N (N≥0) pikselių į kairę arba –N, jei Q’ yra N (N≥0) pikselių į dešinę nuo Q ankstesnėje eilutėje. Atstumas PQ koduojamas kaip N (N≥0) jei jis yra N pikselių atstumu. RAC atstumai koduojami panašiu kodu, kaip ir B1 kodas, išskyrus ataskaitinės eilutės pasirinkimą ir labai trumpus atstumus. +0, +1, -1 (Lentelė 3).

CCITT READ kodas (Modified Relative Element Address Designate coding)

Modified Relative Element Address Designate (READ) algoritmą rekomendavo CCITT dokumentų dviejų dimensijų kodavimui. Tai yra RAC ir kitų panašių kodų modifikacija. Pagal Pav.7., a0 yra atskaitinis perėjimo elementas, kurio padėtis nustatoma pagal ankstesnį kodavimo režimą. Iš pat pradžių a0 imamas kaip įsivaizduojamas baltas perėjimo pikselis, esantis kairėje nuo pirmo pikselio koduojamoje eilutėje. Kita perėjimo pikselių pora dešinėje nuo a0 yra a1 ir a2 koduojamoje eilutėje ir b1 ir b2 atskaitinėje (reference) eilutėje ir turi kintamas spalvas, palyginus su a0. Neaptikus bet kurio iš šių a1, a2, b1, b2 elementų esamoje koduojamoje eilutėje, tas elementas laikomas įsivaizduojamu pikseliu dešinėje nuo paskutinio atitinkamos eilutės elemento. Pikselis a1 atspindi sekantį perėjimo elementą, kurį reikės užkoduoti. Algoritmas turi tris kodavimo režimus.
Praleidimo (Pass) režimas. b2 yra kairėje nuo a1. Tai identifikuoja baltus ir juodus segmentus atskaitinėje eilutėje, kurie nepersidengia su atitinkamai baltais ar juodais segmentais koduojamoje eilutėje. Atskaitinis elementas a0 yra nustatomas žemiau nuo b2 pasiruošiant kitam kodavimui.
Vertikalus režimas. a1 koduojamas priklausomai nuo b1 pagal atstumą a1b1, kuriam galima turėti reikšmes 0, 1, 2, 3 į kairę arba dešinę nuo b1. Šie skaičiai žymimi V(0), VR(x), VL(x), kur x = 1, 2, 3 (Lentelė 4.). Šiame režime a0 yra nustatomas į a1 paruošiant naujam kodavimui.

Pav.7. CCITT modifikuotas READ kodavimas.

Horizontalus režimas. Jei |a1b1|>3, vertikalus režimas nenaudojamas ir segmentų ilgiai a0a1 ir a1a2 koduojami naudojantis modifikuoto Huffmano kodais (Pav.5). Po kodavimo nauja a0 padėtis nustatoma į a2. Jei šis režimas reikalingas pirmam koduojamos eilutės elementui, tada koduojama ne a0a1 vertė, o a0a1-1. Todėl jei pirmas elementas yra juodas, tada koduojamas 0-ių segmentas.

Lentelė 4. CCITT modifikuoto READ kodų lentelė.
Režimas Koduojami elementai Žymėjimas Kodinis žodis
Praleidimo b1, b2 P 0001
Horizontalus a0a1, a1a2 H 001+M(a0a1)+M(a1a2)

M(a0a1) ir M(a1a2) yra kodiniai žodžiai, paimti iš Huffmano kodų lentelės, duotos Pav.5. Bitams xxx yra priskirti 111 nekompresiniame režime.

Kodavimo procedūra išilgai eilutės tęsiasi tol, kol yra aptinkamas įsivaizduojamas perėjimo elementas dešinėje pusėje nuo paskutinio eilutėje aptikto elemento.Tokiu būdu yra užkoduojami lygiai 1728 pikseliai kiekvienoje eilutėje. Pav.8. rodo algoritmo vykdymo diagramą. Čia K yra vadinamas K faktoriumi, kas reiškia, kad po viena dimensija užkoduotos eilutės, ne daugiau, nei K-1 nuosekliai einančių eilučių yra koduojamos dvejomis dimensijomis. CCITT rekomendavo K vertes 2 ir 4 dokumentams, nuskanuotiems atitinkamai normalia ir aukšta rezoliucija. K faktorius naudojamas minimizuoti kanalo triukšmo poveikį dekoduotuose paveiksluose. 1-D ir 2-D praplėtimai išvardinti Lentelėje 4, kur xxx yra 111, naudojami koderiui leisti įeiti į nekompresinį režimą. Jo gali prireikti esant labai trumpiems arba atsitiktiniams segmentams, kaip pustonių paveikslų plotuose ar užbrūkšniuotose erdvėse, pasitaikančiose kai kuriose verslo formose.

Pav.8. CCITT modifikuoto READ kodavimo algoritmas

Prognozinis kodavimas

Prognozinio kodavimo principai gali būti lengvai pritaikomi dvejetainiuose paveiksluose. Pagrindinis skirtumas yra tas, kad prognozavimo klaida yra taip pat dvejetainis kintamasis toks, kad kvantavimas yra nereikalingas. Jei originalūs duomenys turi pertekliaus (redundancy), tada prognozavimo klaidų seka turės didelius 0 ir 1 segmentus. Dvejetainio paveikslo funkcijai u(m,n) tegul ū(m,n) reiškia numatytą vertę, paremtą pikselų vertėmis prognozavimo lange W, kuris turi keletą anksčiau koduotų pikselių. Prognozavimo klaida aprašoma taip:

Seka e(m,n) gali būti koduojama pagal segmento ilgio ar entropinio kodavimo metodą. Paveikslas atstatomas iš e(m,n) paprasčiausiai pavidalu. Tai yra prognozinis kodavimo metodas be klaidų. Prognozavimo lango W pavyzdys rastriniam paveikslui parodytas Pav.9.

Pav.9. Prognozinio kodavimo TUH metodas. Būsenos Sk segmento ilgis lk reiškia, kad atsirado prognozavimo klaida po to, kai būsena Sk pasikartojo lk kartų.

Reikšmingas prognozavimo kriterijus yra sumažinti prognozės klaidos tikimybę. N elementų prognozės langui yra 2N skirtingų būsenų. Tegul Sk, k=1,2,….,2N žymi k-tąją W būseną su tikimybe pk ir apibrėžia . Tada optimali prognozės taisyklė, turint mažiausią klaidos tikimybę, yra

Jei atsitiktinė seka u(m,n) yra griežtai pagal prasmę stacionari, tada įvairios tikimybės išliks pastovios kiekviename (m,n) ir todėl prognozavimo taisyklė lieka a pati. Praktikoje tinkamas N parinkimas turi būti padarytas tam, kad būtų pasiektas suderinimas tarp prognozės klaidos tikimybės ir tarp prognozuoklio sudėtingumo, atsirandančio prie didelių N reikšmių.Eksperimentiškai nuo 4 iki 7 pikselių prognozuokliai buvo pakankami. Atsižvelgiant į prognozės taisyklę, minimali prognozės klaida yra

Jei atsitiktinė seka u(m,n) yra Markovo, atsižvelgiant į prognozinį langą W, tada segmentų ilgiai kiekvienai būsenai Sk yra nepriklausomi. Taigi prognozės klaidų segmentų ilgiai kiekvienai būsenai (Pav.8.) gali būti koduojami pavyzdžiui pagal sutrumpintą Huffmano kodą. Šis metodas buvo pavadintas Hanoverio Technikos Universiteto (TUH) kodu.

Algoritmų palyginimas

Lentelė 5. rodo kompresijos laipsnių palyginimą, pasiekiamų skirtingais algoritmais. Kompresijos laipsniai vienos dimensijos kodams yra nepriklausomi nuo vertikalios rezoliucijos. Normalios rezoliucijos atveju dviejų dimensijų kodai pagerina suspaudimą tik 10% – 30% palyginus su modifikuotu Huffmano kodu. Aukštos rezoliucijos atveju pagerinama 40% – 60% ir tai yra pakankamai reikšminga, kad galima būtų pagrįstai tuos algoritmus naudoti. Tarp dviejų dimensijų kodų TUH prognozuojantis kodas yra geresnis, nei RAC technikos, ypač tekstinei informacijai. CCITT READ kodas, kuris yra RAC modifikacija, veikia truputį geriau.

Lentelė 5. Skirtingų dvejetainių kodavimo algoritmų kompresijos laipsniai.
Vienos dimensijos kodai Dviejų dimensijų kodai
Normali ar aukšta rezoliucija Normali rezoliucija Aukšta rezoliucija
Dokumentas B1 kodas Sutrumpintas Huffmano kodas Modifikuotas Huffmano kodas RAC kodas K=4 TUH kodas K=4 CCITT READ kodas, K=2 RAC kodas K=4 TUH kodas K=4 CCITT READ kodas, K=4

Išvados

Kaip matome, yra sukurta tikrai nemažai būdų vaizdinių duomenų suspaudimui. Kai kurie jų yra vieni kitų atmainos. Tačiau visų jų suspaudimo rezultatai skirtingi. Tai priklauso ir nuo dokumento tipo, nuo algoritmo tinkamumo tam dokumentui. O dažniausiai naudojami yra Huffmano, SIK ir READ kodai. TUH kodas, nors ir parodė geriausius rezultatus, yra sudėtingiau realizuojamas.

Literatūra

“Fundamentals of Digital Image Processings”, Prentice-Hall International Edition, Anil K. Jain