POSTOPEK JPEG KODIRANJA

Vsi vemo, da lahko slike zavzamejo veliko prostora. Zato jih lahko stisnemo in se izognemo nepotrebnemu zapravljanju prostora. Večine slik (zlasti fotografij) ni nujno, da shranjujemo v izvirni obliki, saj vsebuje več podrobnosti, kot jih lahko kdorkoli vidi. Tako lahko prihranimo precej prostora, še posebej, če manjkajo podrobnosti, ki jih ljudje težko zaznamo. Ta vrsta stiskanja se imenuje stiskanje z izgubo, ki jo uporablja tudi JPEG. [3]

Postopek stiskanja JPEG zmanjša fotografije na desetino ali manj od njihove prvotne velikosti, kar pomeni, da lahko fotoaparat shranjuje 10-krat toliko fotografij, slike pa lahko prenesemo 10-krat hitreje. Vse skupaj se sliši kar preveč idealno, seveda se tukaj skriva manjši minus. In sicer se lahko pojavijo težave s kakovostjo podatkov – na primer, zelo stisnjena slika JPEG ne zgleda tako ostra kot izvirna (nestisnjena) slika. Prav tako je potreben čas za stiskanje in ponovno razširjanje podatkov. V večini primerov se ta kompromis izplača, vendar ne vedno. [3]

Tukaj si bomo ogledali celoten postopek JPEG kodiranja. Kjer JPEG, izkoristi vzorce slike in zmanjša prostor, potreben za predstavitev, ne da bi po nepotrebnem vplival na sliko. [3] Torej je dani standard sestavljen iz štirih ločenih delov:

This work by liah is licensed under CC BY-NC-SA 4.0

1. Razdelitev

Že na prejšnji strani sem na kratko predstavila, kako je sestavljena slika iz več slikovnih točk, ki so si pogosto zelo podobne (označene z rdečim pravokotnikom), tudi v tem približanem delu slike.

This work by liah is licensed under CC BY-NC-SA 4.0

Postopek JPEG izkorišča očesno neravnovesje, tako da zmanjša vrednosti barvitosti za določen faktor, temu rečemo zmanjšanje vzorčenja. Tukaj pride že do prvega koraka izgube informacij. Nato sledi razdelitev slikovnih točk v bloke velikosti 8×8, kot je prikazano na zgornji desni sliki. Vsak blok 8×8 slikovnih točk slike JPEG lahko ustvarimo s seštevanjem različnih količin do največ 64 vzorcev, ki temeljijo na kosinusnih valovanjih. Valovanja lahko vizualno predstavimo kot vzorce belih in črnih slikovnih točk. [3]

2. Diskretna kosinusna transformacija (DTC)

Sedaj sledi nekoliko zapleten korak. Vsak blok 8×8 z uporabo diskretne kosinusne transformacije pretvorimo v drugo matriko. Ta transformacija analizira frekvence prvotnih vrednosti po vsaki vrstici in stolpcu z uporabo množice kosinusnih valovanj, ki nihajo pri različnih frekvencah in amplitudah. Razlog za to je, da se lahko višje frekvence minimizirajo ali izničijo, ker izgub teh frekvenc ne zaznamo toliko, kot bi zaznali izgubo bolj energičnih nižjih frekvenc. [3] Torej DCT spremeni sliko v komponente z različno pomembnostjo. Pri tem si lahko pomagamo s spodnjo tabelo, ki prikazuje 64 osnovnih vzorcev kosinusnih frekvenc. Valove lahko vizualno predstavimo kot vzorce belih in črnih pik. [5] Tako vsaka od 64 baznih slik predstavlja frekvenco, vsak DCT koeficient pa pripadajočo amplitudo (= utež) v bloku. [6]

This work by arjunsreedharan.org is licensed under CC BY-NC-SA 4.0

Osnovna funkcija zgoraj levo je povprečna barva bloka 8×8. Če se ga doda več, se poveča koeficient, s katerim se pomnoži. Posledično bo nastali blok temnejši. Osnovne funkcije postanejo bolj zapletene v spodnjem desnem kotu in se zato uporabljajo manj pogosto.[5]

3. Kvantizacija

Sedaj sledi glavni korak v postopku JPEG stiskanja, kjer pride do generiranja napake, a tudi do močnega zmanjšanja velikosti slikovne datoteke. Vsak blok DCT koeficientov je podvržen kvantizaciji, to je deljenju z ustrezno vrednostjo kvantizacijske tabele, kjer so vrednosti določene na podlagi modela delovanja človeškega vidnega sistema. Stopnjo JPEG stiskanja, to je kakovost slike pa lahko uravnavamo z množenjem vrednosti koeficientov kvantizacijske tabele. [6] Eden glavnih rezultatov kvantizacije je, da se številni višji DCT koeficienti (z višjo frekvenco) izničijo, zaradi česar so v naslednjem koraku izredno stisljivi. [3]

This work by arjunsreedharan.org is licensed under CC BY-NC-SA 4.0

Zgornja leva slika prikazuje kvantizacijsko tabelo. Zgornja desna pa primer ko je neka kvantizacija že končana, kjer vidimo, da je veliko ničel.

4. Binarno kodiranje

Torej novonastala matrika vsebuje veliko ničel, ki na sliko nimajo vpliva in jih lahko odstranimo. Da bi čim bolj izkoristili dejstvo, da vrednosti matrike padajo iz zgornjega levega kota, vrednosti ne kodiramo po vrsticah, temveč v cikcakastem vzorcu. To pomeni, da se celice z vrednostjo nič po navadi pojavijo na koncu cikcakaste verige in jih lahko močno stisnemo. [3]

This work by arjunsreedharan.org is licensed under CC BY-NC-SA 4.0

In končno, številke, ki nam ostanejo, pretvorimo v bite s Huffmanovim kodiranjem. In sicer tako, da bolj običajne vrednosti zavzamejo manj prostora in obratno. Vse te stvari se zgodijo vsakič, ko fotografirate in sliko shranite kot datoteko JPEG, in to na vsakih 8 do 8 blokov slikovnih točk. Ko prikažete sliko, mora programska oprema postopek obrniti in dodati vse osnovne funkcije skupaj za vsak blok – za vsako sliko pa bo na stotine tisoč blokov. [5]

Za dodatno, bolj podrobno razlago pa spodaj dodajam video.

Datoteke JPEG so še vedno vodilni format datotek za slike. Z nekaterimi pomanjkljivostmi, kot so vidne spremembe z močnim stiskanjem JPEG, je še vedno izjemno lahek format, ki zadovoljuje globalne gledalce, tako na spletu kot doma. [7]

(Visited 57 times, 1 visits today)
Dostopnost