25
Stiskanje slike Interaktivni mediji 2 izr. prof. dr. Aleš Hladnik

Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Stiskanje slike

Interaktivni mediji 2 izr. prof. dr. Aleš Hladnik

Page 2: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Stiskanje rastrske slike

Stiskanje (kompresija, zgoščevanje) slikovnih podatkov

Stiskanje

(kodiranje)

Stisnjena

slika

Shranjevanje

ali prenos

Izvorna

slika

Obnovljena

slika

Raztezanje

(dekodiranje)

Shramba,

prikaz, … slike

𝑓 𝑥, 𝑦

𝑓(𝑥, 𝑦)

Page 3: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Brezizgubno in izgubno stiskanje

Brezizgubno stiskanje: obnovljena (= rekonstruirana,

raztegnjena) slika = izvorna slika

Izgubno stiskanje: obnovljena slika ≠ izvorna slika

Velikost datoteke izgubno stisnjene slike je na račun slabše

kakovosti manjša od velikosti datoteke brezizgubno stisnjene

slike

𝒇(𝒙, 𝒚)

𝒇(𝒙, 𝒚)

𝒇 𝒙, 𝒚

𝒇 𝒙, 𝒚

Page 4: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Zakaj je možno sliko stisniti?

Slike v splošnem vsebujejo eno ali več oblik redundance

(odvečnosti), ki jih je možno pri stiskanju izkoristiti/odstraniti

Kodirna redundanca: nekatere vrednosti pikslov so pogostejše od

drugih, nekatere se sploh na pojavljajo Huffmanovo kodiranje

Prostorska (medtočkovna) redundanca: je posledica korelacije med

posameznimi piksli

Psihovizualna redundanca: podatki, ki jih naš vidni sistem (Human

visual system, HVS) ne zazna, t.j. nebistvena informacija DCT

Page 5: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Metode slikovnega in video stiskanja

Page 6: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Standardi in formati

Isti algoritem mora biti uporabljen tako za stiskanje kot za

raztezanje nevarnost monopolizacije!

Standardizacija algoritmov stiskanja in mehanizmov za prenos

podatkov je nujna za njihovo uporabnost v različnih napravah in

konkurenčnost

Page 7: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Brezizgubno stiskanje: Huffmanovo kodiranje

Huffmanovo kodiranje je primer stiskanja s spremenljivo dolžino

kode

Simbolom (= vrednostim pikslov oz. barvam), ki se pojavljajo

pogosteje, dodelimo krajšo kodo (= z manj biti), tistim z

redkejšo pojavnostjo pa daljšo kodo (= z več biti)

Rezultat je krajša povprečna dolžina kode PDK (= št. bitov za

simbol oz. niz simbolov)

pogosteje

zastopane

vrednosti

redkeje

zastopane

vrednosti

Histogram slike

Page 8: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Huffmanovo kodiranje

Koda s spremenljivo dolžino

(= Huffmanova koda)

Koda s fiksno dolžino

2 bita / simbol

255

186

128

87

00

01

10

11

2

2

2

2

Kako močno stiskanje lahko dosežemo s Kodo 2?

= 2 * 0.25 + 1 * 0.47 + 3 * 0.25 + 3 * 0.03 = 1.81 bit 𝑃𝐷𝐾 = 𝑙𝑖 𝑝𝑖

4

𝑖=1

= … = 1.66 bit 𝐻 = − 𝑝𝑖 log2(𝑝𝑖)

4

𝑖=1

Entropija = najkrajša

možna PDK

Page 9: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Huffmanovo kodiranje – algoritem

Naj slika vsebuje N različnih simbolov (= vrednosti pikslov) s

pogostostjo pojavljanja (= verjetnostjo) pi kjer velja 1 ≤ i ≤ N

1. Razvrsti simbole po padajoči verjetnosti. Vsak simbol

predstavlja eno vejo (vozlišče) nastajajočega drevesa.

2. Združi dve veji z najmanjšo verjetnostjo – zadnja dva simbola v

razvrstitvi – v novo vozlišče, katerega verjetnost je vsota obeh

vej. Dodeli "0" zgornji in "1" spodnji veji.*

3. Ponavljaj korak 2., dokler ti ne ostane le še eno samo vozlišče z

verjetnostjo 1.00 ki tvori korensko vozlišče Huffmanovega

drevesa.

4. Huffmanovo kodo za posamezen simbol dobiš tako, da prebereš

njegove binarne vrednosti po vrsti od korenskega do

terminalnega vozlišča.

* Ta dodelitev je arbitrarna, zato Huffmanove kode niso edinstvene!

Page 10: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Huffmanovo kodiranje

Page 11: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Huffmanovo kodiranje

I

I

I

II

III

IV

V

I II III IV V

začnemo tu

Page 12: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Izgubno stiskanje slike – splošen delokrog

Diskretna kosinusna

transformacija (DCT)

Inverzna diskretna kosinusna

transformacija (IDCT)

Huffmanovo

kodiranje

Huffmanovo

dekodiranje

Kvantizacija

* * Tu najprej pride do

dekvantizacije, čeprav je

kvantizacija ireverzibilen korak

Page 13: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

JPEG

Kompresijski standard razvit s strani Joint Photographic

Experts Group (JPEG) l. 1992

JPEG določa nabor algoritmov za stiskanje rastrskih slik

(sivinskih in barvnih) in format za prenos podatkov

Dva algoritma za stiskanje:

Izgubni algoritem, ki temelji na 2D DCT, omogoča kakovost slike v

razponu med "zelo dobro" do "odlično" (= visually indistinguishable)

JPEG-LS (znan tudi kot LOCO-I): brezizgubno in skoraj brezizgubno

stiskanje slike, temelji na DPCM*; v praksi redko uporabljan

Izkorišča značilnosti / omejitve človeškega vidnega sistema

Večja občutljivost na variacije v luminanci (Y) kot v krominanci (Cb , Cr)

Večja občutljivost na variacije v nizko- kot v visokofrekvenčnih območjih

slike

* Differential Pulse Code Modulation; vrsta prediktivnega brezizgubnega stiskanja

Page 14: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Kontrastna občutljivost človeškega vidnega sistema

Page 15: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Delokrog JPEG stiskanja

(Pred)obdelava slike: particija v 8x8 bloke, barvno podvzorčenje*

Transformacija: Diskretna kosinusna transformacija (FDCT)

Kvantizacija

Entropijsko kodiranje: Huffmanovo (ali aritmetično)

* Chroma subsampling

Page 16: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Pretvorba barvnega prostora in podvzorčenje

Močna korelacija med R, G in B kanalom

Da bi lahko izvedli dekorelacijo slike, jo je potrebno pretvoriti

iz barvnega prostora RGB v YCbCr

Človeški vidni sistem je občutljivejši na variacije v luminanci

(Y) kot v krominanci (Cb , Cr)

Luminanco stisnemo v polni ločljivosti, medtem ko oba

krominančna kanala podvzorčimo (2:1 horizontalno in 1:1 ali

2:1 vertikalno) – barvno podvzorčenje

Page 17: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Diskretna kosinusna transformacija (DCT)

Pri DCT je končno zaporedje točk izraženo kot vsota

kosinusnih funkcij oscilirajočih z različnimi frekvencami

DCT ustreza realnemu delu diskretne Fourierove

transformacije (DFT)

Page 18: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Diskretna kosinusna transformacija

DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64

baznih slik (= baznih funkcij)

Kjer je 8 x 8 blok popolnoma enakomeren, bo zgolj DC* koefficient

(= F(0,0)) različen od nič, vsi AC koeficienti pa bodo enaki nič

Kjer pa je v 8 x 8 bloku prisotna velika variabilnost, bodo številni AC

koeficienti različni od nič

Bazna slika, ki ustreza najnižji

frekvenci v obeh smereh

Vsaka od 64 baznih slik

predstavlja frekvenco, vsak

DCT koeficient pa pripadajočo

amplitudo (= utež) v bloku.

0 1 2 3 4 5 6 7

0

1

2

3

4

5

6

7

* DC = Direct Current, AC = Alternate Current

Page 19: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Diskretna kosinusna transformacija

Page 20: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Diskretna kosinusna transformacija

DCT

svetlost kvadrata

ustreza velikosti

konkretnega DCT

koeficienta

devet 8 x

8 blokov

im(121:144, 121:144)

Page 21: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Kvantizacija

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 = deljenju z

ustrezno vrednostjo kvantizacijske tabele

Vrednosti luminančne in krominančne kvantizacijske tabele so

določene na podlagi modela delovanja človeškega vidnega sistema

Luminančna kvantizacijska tabela Krominančna kvantizacijska tabela

Page 22: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Primer kvantizacije

F

F:

DCT

Z(0,0) = round(F(0,0) / Q(0,0) = round(214 / 16) = round(13.375) = 13

Page 23: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Kvantizacija

Stopnjo JPEG stiskanja (= kakovost slike) lahko uravnavamo z

množenjem vrednosti koeficientov kvantizacijske tabele Q

Q 2Q 4Q

8Q 16Q 32Q

Page 24: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Cikcak skeniranje

Po kvantizaciji dobijo številni DCT koeficienti – zlasti tisti, ki

ustrezajo višjim frekvencam – vrednost 0

S cikcak skeniranjem 8x8 DCT blokov dobimo kar se da

dolgo zaporedje ničel RLC*

Cikcak sken: 13 4 3 0 -2 0 1 1 0 1 -1 -1 1 1 0 0 0 … 0

niz 50 ničel

Običajen rastrski sken: 13 4 0 1 0 0 0 0 3 -2 1 1 0 0 0 0 0 0 1 … 0 0 0 … 0

niz 31 ničel

* Run Length Coding

Page 25: Obdelava digitalnih slik - ntf.uni-lj.si · Diskretna kosinusna transformacija DCT pretvori vsak 8 x 8 slikovni blok v linearno kombinacijo 64 baznih slik (= baznih funkcij)

Entropijsko kodiranje: Huffmanovo ali aritmetično

Nadaljnja kompresija se doseže z izkoriščanjem kodirne

redundance Huffmanovo kodiranje

JPEG standard omogoča tudi uporabo aritmetičnega

kodiranja, ki je matematično učinkovitejše od Huffmanovega

Zaradi patentnih vprašanj in počasnejšega kodiranja in

dekodiranja se ta opcija v praksi redko uporablja

Štiri možne implementacije standarda JPEG

Sekvenčno (predstavljeno na prejšnjih slajdih)

Progresivno

Hierarhično

Brezizgubno (temelji na prediktivnem kodiranju, ne na DCT)