IN 106, V-2001 PLASS og TID Digitale bilder tar stor plass Eksempler: a 512 512 8 bits 3 farger 63 10 6 bits KOMPRESJON OG KODING 30/4 2001 b 24 36 mm fargefilm digitalisert ( x = y=12µm) 2000 3000 8 3 bits 144 10 8 bits c 14 17 røntgenbilde ( x = y=50µm) 7112 8636 12 bits 74 10 8 bits d LANDSAT TM, 6 ikke-termiske kanaler 6000 6000 8 6 bits 17 10 9 bits Fritz Albregtsen Overføring av digitale bilder tar tid FA 30/04/2001 FA/IN106/kompr-01 ANVENDELSER METODER Kompresjon og koding benyttes for å redusere antall bits som skal til for å beskrive bildet (eller en god approksimasjon til bildet) Anvendelser innen data-lagring og data-overføring: - televideo-konferanser - fjernanalyse / meteorologi - overvåking / fjern-kontroll - telemedisin / PACS - dokumenthåndtering / FAX - multimedia / nettverk - Tidsforbruket ved kompresjon er ikke særlig viktig Dekompresjons-tiden er langt viktigere Ved sanntids data-overføring er tidsforbruket kritisk Anta at vi har 512 512 piksler pr bilde Med 8 bits/piksel for hver farge (RGB) og 30 bilder pr sekund får vi ca 180 10 6 bits/sek Det er flere opplagte måter å redusere denne data-raten på; 8 bits kromatisitet + 8 bits luminositet gir 3:2 kompresjon (tidl forelesning) kvantisering (færre gråtoner) sub-sampling (færre piksler) interlacing kompresjon og koding Vi bruker koding for kompresjon, ikke for kryptering FA/IN106/kompr-02 FA/IN106/kompr-03
INTERLACING INTERLACING - 2 For å unngå flimrende TV-bilder må viha en oppfrisknings-rate på 50-60Hz For å fange opp bevegelse trenger vi 25-30 bilder pr sekund Vi oppnår en 2:1 kompresjon ved å filme (og overføre) i 30 Hz, og så ha en refresh -rate på 60Hz Repetisjon av hvert bilde krever lokal lagring ( frame store ) Man vil observere hopp i bildet, men ikke flimmer Interlacing gir bedre resultat Hvert bilde deles i to felter, bestående av hhv like og odde linjer Hvert felt vises så fram i halv refresh-rate (30Hz) Får ca 37% kompresjon i forhold til et non-interlaced system med samme subjektive visuelle kvalitet Metoden virker fordi vi har dårlig respons for simultan høy frekvens i rom og tid Bruker også vertikal linje- interlacing innenfor hvert felt Virker bra hvis vi ikke har simultan høy frekvens horisontalt og vertikalt Bruk ikke fiskebeins-dress på TV! Høy-kvalitets bilder bør vises i 60 Hz non-interlaced FA/IN106/kompr-04 FA/IN106/kompr-05 KOMPRESJON BILDE-KVALITET Kompresjon kan deles inn i tre steg transform (mapping) kvantisering koding Hvis vi velger en irreversibel kompresjonsmetode må vi kontrollere at kvaliteten på resultat-bildet er god nok Gitt et N M inn-bilde f(x, y) oget komprimert/dekomprimert ut-bilde g(x, y) = ˆf(x, y) Feilen vi har introdusert er e(x, y) =g(x, y) f(x, y) RMS-avviket mellom de to bildene er da Vi skiller mellom Feilfri, lossless, reversibel kompresjon Irreversibel, lossy kompresjon Det finnes en mengde metode-varianter og metode-kombinasjoner Teknikkene er ofte problem-orienterte 1/2 1 N M e rms = e 2 (x, y) N M x=1 y=1 Vi kan også betrakte feilen som støy Midlere kvadratisk signal-støy-forhold (SNR) er N [ M (SNR) ms = x=1 y=1 g 2 (x, y) ] N M x=1 y=1 [e 2 (x, y)] Mange representasjons-metoder er egentlig transformer feks kjedekode, run-length kode, y-linje kode Koding bygger ofte på sannsynlighetsfordeling RMS-verdien av SNR er da (SNR) RMS = N M x=1 y=1 [g 2 (x, y)] N M x=1 y=1 [e 2 (x, y)] FA/IN106/kompr-06 FA/IN106/kompr-07
BILDE-KVALITET - 2 TRANSFORMER Alternativt kan vi angi peak -verdien av SNR: (SNR) p = [max(g(x, y)) min(g(x, y))] 2 N x=1 M y=1 [e 2 (x, y)] Run-length kode (løpe-lengde kode) Er tidligere omtalt under bilderepresentasjon Dette er i vårt begreps-apparat en reversibel transformasjon SNR uttrykkes ofte i decibel Λ = 10 log 10 (SNR) Eksempel 333333555555555544777777 (24 byte) (3,6)(5,10)(4,2)(7,6) (8 byte) (gråtone, antall) Objektive mål slår ofte sammen alle feil over hele bildet Vårt syns-system har forskjellig toleranse for feil (støy) i flate, homogene områder og feil (støy) nær kanter/linjer i bildet Setter gjerne en maksimal-verdi M =2 m 1 på run-lengden I to-nivå bilder trenger vi bare å angi run-lengden Fler-komponent feil-mål er bedre (Del opp bildet etter lokal aktivitet) Run-lengde histogrammet er oftest ikke flatt Benytter da en kode som gir et kort kode-ord til de hyppigste run-lengdene FA/IN106/kompr-08 FA/IN106/kompr-09 LINEÆR TRANSFORMER Gitt lineær-transformasjonen y = Ax ; y 1 y n = a 11 a n1 a 1n a nn x 1 x n Denne kan være nyttig hvis elementene (x 1,, x n ) er sterkt korrelerte, og A er valgt slik at (y 1,, y n ) blir mindre korrelerte Da kan y kodes mer effektivt enn x Det er viktig at A har en invers KVANTISERING - 1 Vi vet at øyet oppfatter 50-60 gråtoner 2:1 kompresjon ved å redusere fra 256 til 16 gråtoner (fra 8 til 4 bits) Enkleste (og dårligste) løsning er å heltallsdividere alle pikselverdier med 16 (uniform kvantisering) Dette introduserer ofte falske konturer Bedre løsning å re-kvantisere slik at vi får omtrent like mange piksler for hver gråtone i ut-bildet Vi får en differanse-transform hvis A = 1 0 0 0 0 1 1 0 0 1 1 1 1 0 0 1 1 dvs y 1 = x 1, y i = x i x i 1 for i [2,, n] Dette er en reversibel transform y får da dobbelt så mange mulige verdier som x, men histogrammet er mer konsentrert Anta at vi har et 4-bits 8 8 bilde med histogram: 2, 2, 9, 10, 9, 4, 5, 8, 9, 6 Vi ønsker 2 bits 1625 piksler/gråtone De beste verdiene blir da: 0-2 13 piksler, median = 2 3-4 20 piksler, median = 3 5-7 17 piksler, median = 6 8-9 15 piksler, median = 8 FA/IN106/kompr-10 FA/IN106/kompr-11
KVANTISERING - 2 Denne teknikken er irreversibel Den gir alltid et informasjons-tap Den ligner på histogram-utjevning Flere varianter finnes Anvendes også på fler-kanals bilder se på colorquant ixshow KVANTISERING - 3 Anta at vi har benyttet en lineær transform y 1 y n = a 11 a n1 a 1n a nn y i = n a ij x j j=1 x 1 x n Hvis x j kan ha 2 m forskjellige verdier (m bits), så kan nå y i ha(2 m ) n =2 mn forskjellige verdier Denne transformen kan være reversibel Siden vi ønsker kompresjon, kan vi bli nødt til å avrunde y i til færre enn 2 mn lovlige verdier (irreversibelt!) Vi skiller mellom uniform kvantisering (like store bins ), og ikke-uniform kvantisering (feks like mange piksler pr bin ) Bruker vi differanse-transform, dropper vi ofte kvantiseringen, benytter feks Huffman-kode, og får en reversibel kompresjon FA/IN106/kompr-12 FA/IN106/kompr-13 KODING Koding skal være reversibel Naturlig bit-koding er et eksempel på koder der alle kode-ord er like lange (eks: 8 mulige verdier) SYMBOL-FREKVENS It isn t ETAOIN SHRDLU; it s ETAONI RSHDLC, or ETANOI SRHLDC! i w i c i 1 w 1 000 2 w 2 001 8 w 8 111 Unikt dekodbare koder har den egenskap at en mottatt sekvens av kode-ord kan dekodes på én og bare én måte Anta c 1 =0,c 2 =1,c 3 = 01, c 4 =10 Hva betyr {0011}? Er det {c 1 c 1 c 2 c 2 } eller {c 1 c 3 c 2 }? Naturlig bit-kode er optimal bare hvis alle verdiene i inn-bildet er like sannsynlige For ulike sannsynligheter er koder med variabel lengde på kode-ordene bedre hyppige symboler får korte kode-ord (feks Morse-alfabetet) FA/IN106/kompr-14 FA/IN106/kompr-15
Data og informasjon ENTROPI Vi vil lagre / overføre informasjon ved bruk av færre data Redundante data må bort Kompresjonsrate angis som CR = i c i=bits i original, c=bits i komprimert bilde Relativ redundans R D =1 1 CR =1 c i percentage removed = 100(1 c/i) Bits per piksel : Gitt et M N bilde med G gråtoner, der grånivå r k finnes n k ganger, og representeres med l(r k ) bits Sannsynligheten for r k (norm histogram): P r (r k )= n k, k =0,1,, G 1 NM Gjennomsnittlig antall bits per piksel L avg = G 1 l(r k )P r (r k ) k=0 Et b-bits bilde består av piksler med gråtoner fra et alfabet med 2 b symboler For et gitt bilde kan vi finne sannsynligheten for hvert tegn i alfabetet: p i = h(i) NM, 2b 1 i=0 p i =1 Vi er interessert i gjennomsnittlig informasjon pr piksel Intuitivt har vi at en mindre sannsynlig hendelse gir mer informasjon enn en mer sannsynlig hendelse Definerer informasjons-innholdet I(s i ) i hendelsen s i ved 1 I(s i ) = log p(s i ) Basis for logaritmen gjenspeiler den enheten som vi uttrykker informasjonsmengden i log 2 (1/p(s i )) gir informasjons-innholdet i bits FA/IN106/kompr-19 FA/IN106/kompr-20 ENTROPI - 2 ENTROPI - 3 Midler vi over alle symboler s i i bildets alfabet, får vi gjennomsnittlig informasjon pr symbol 1 ordens entropi: H(s) = 2b 1 i=0 p(s i )I(s i )= 2b 1 i=0 p(s i ) log 2 (p(s i )) Hvis hvert symbol s i har en sannsynlighet p i,og vi konstruerer en kode c = {c 1,, c i,, c m } såer det gjennomsnittlige antall bits pr piksel etter koding gitt ved R = m β i p i i=1 Hvis alle gråtoner er like sannsynlige: der β i er lengden (i bit) av kodeordet c i H(s) = 2b 1 1 i=0 2 log 2( 1 b 2 b)=b Hvis bare én verdi (α) forekommer: H(s) = 2b 1 0 log 2 (0) 1 log 2 (1) = 0 i=0,i α Entropien representerer en nedre grense for hvor kompakt et bilde kan komprimeres hvis vi bare ser på pikslene hver for seg H er en nedre grense for R Eksempel: w i p(w i ) c i β i p i log 2 (p i ) β i p i w 1 04 1 1 05288 04 w 2 03 01 2 05211 06 w 3 01 001 3 03322 03 w 4 009 0001 4 03126 036 w 5 006 00001 5 02435 03 w 6 005 00000 5 02161 025 21543 221 Vi ser her at R = m β i p i >H i=1 FA/IN106/kompr-21 FA/IN106/kompr-22
HUFFMAN-KODING - 1 Gitt et bilde med m gråtoner 1) Sortér gråtonene etter sannsynlighet 2) Slå sammen de to minst sannsynlige gråtonene i én gruppe, og sortér igjen 3) Gjenta 2) inntil det bare er to grupper igjen - Gi kodene 0 og 1 til de to gruppene - Traversér bakover, og legg til 0 og 1 i kodeordet for de to minst sannsynlige gruppene i hvert steg Et eksempel: HUFFMAN-KODING - 2 EKSEMPEL 1 si pi ci s i p i c i s i p i c i s i p i c i s i p i c i s1 04 1 s 1 04 1 s 1 04 1 s 1 04 1 s 1 06 0 s2 03 00 s 2 03 00 s 2 03 00 s 2 03 00 s 2 04 1 s3 01 0100 s 3 011 011 s 3 019 010 s 3 03 01 s4 009 0101 s 4 01 0100 s 4 011 011 s5 006 0110 s 5 009 0101 s6 005 0111 Gjennomsnittlig antall bits pr piksel blir her R =04+2 03+4 (01+009+006+005) = 22 Mens vi for dette bildet har H=21543 FA/IN106/kompr-23 FA/IN106/kompr-24 HUFFMAN-KODING - 3 EKSEMPEL 2 Ingen kode-ord danner prefiks i en annen kode Dette sikrer at en sekvens av kodeord kan dekodes entydig, uten at man trenger ende-markører I eksemplet nedenfor vil bli delt opp til 010011000111000011110000 01 001 10 001 11 0000 11 11 0000 og tolkes til eiaiouoou HUFFMAN-KODING - 4 Vi ser at den ideelle binære kode-ord lengden for symbol s i er β i = log 2 (p(s i )) Siden bare heltalls ord-lengder er mulig, er det bare p(s i )= 1 2 k som tilfredsstiller dette kravet Eksempel: Hvis vi har s i p i c i s 1 05 o s 2 025 10 s 3 0125 110 s 4 00625 1110 s 5 003125 11110 s 6 003125 11111 så blir gjennomsnittlig antall bits pr piksel R = H =19375 FA/IN106/kompr-25 FA/IN106/kompr-26
SHIFT - KODER Sortér gråtone-verdier etter sannsynlighet Hvis vi bruker 2 bits kan vi lage 4 distinkte 2 bits kode-ord {c 1,c 2,c 3,c 4 } (S 2 -kode) Tre av disse tilordnes symbolene s 1,s 2,s 3 c 4 benyttes til åangi at s i ligger utenfor dette området Hvis dette er tilfelle, shifter vi de tre kode-ordene 3 plasser opp i s, og bruker c 4 som prefiks Eksempel: c(s 9 )=c 4 c 4 c 3 Med samme eksempel-valg som tidligere får vi nå s i p i S 2 c i s 1 04 c 1 00 s 2 03 c 2 01 s 3 01 c 3 10 s 4 009 c 4 c 1 1100 s 5 006 c 4 c 2 1101 s 6 005 c 4 c 3 1110 og gjennomsnittlig antall bits pr piksel blir DIFFERANSE - KODING Gitt en scan-linje i et bilde med intensiteter x i {0,, 2 m 1} Transformér (reversibelt) til x 1,x 2 x 1,x 3 x 2,, x n x n 1 Vi trenger nå (m+1) bits hvis vi skal tilordne like lange binære koder til alle mulige verdier I differanse-histogrammet vil de fleste verdiene samle seg om 0, feks mellom -8 og +8 Lag feks en 16 ords naturlig kode c 1 = 0000,, c 16 = 1111 Tilordne 14 av disse ordene til differansene 7, 6,, 1, 0, 1,, 5, 6 c 1 og c 16 brukes til å indikere at x < 7og x>+7 (to-sidet shift-kode) x =22 c 16 c 16 c 3 x = 22 c 1 c 1 c 15 R = β i p i =2 08+4 03=24 FA/IN106/kompr-27 FA/IN106/kompr-29 DIFFERANSE - KODING LEMPEL - ZIV Alle kode-ord brukes ikke like hyppig En ulik-lengde kode er da bedre Premierer mønstre i dataene Bygger opp en symbolstreng-liste både under kompresjon og dekompresjon Denne listen skal ikke lagres eller sendes Det eneste man trenger er et standard alfabet Mottaker kjenner bare alfabetet, og lager nye fraser i sin liste ved å ta nest siste streng pluss første symbol i sist tilsendte streng, inntil listen er full Eks: Anta at alfabetet er {a, b, c} {1,2,3}, og la dataene være {ababcbababaaaaabab} Merk at c 1 og c 16 forekommer relativt hyppig, og har forholdsvis korte kode-ord ser sender liste mottar tolker liste a =1 a=1 b=2 b=2 c=3 c=3 a 1 ab =4 1 a b 2 ba =5 2 b ab =4 ab 4 abc =6 4 ab ba =5 c 3 cb =7 3 c abc =6 ba 5 bab =8 5 ba cb =7 bab 8 baba =9 8 bab bab =8 a 1 aa =10 1 a baba =9 aa 10 aaa =11 10 aa aa =10 aa 10 aab =12 10 aa aaa =11 bab 8 8 bab aab =12 FA/IN106/kompr-30 FA/IN106/kompr-31