PLASS og TID IN 106, V-2001 KOMPRESJON OG KODING 30/ Fritz Albregtsen METODER ANVENDELSER

Like dokumenter
PLASS og TID INF Fritz Albregtsen. Tema: komprimering av bilder ANVENDELSER METODER

INF 1040 Kompresjon og koding

Løsningsforslag, Ukeoppgaver 9 INF2310, våren kompresjon og koding del I

INF 1040 Kompresjon og koding

INF 1040 Kompresjon og koding

INF 1040 Løsningsforslag til kapittel

Løsningsforslag, Ukeoppgaver 9 INF2310, våren kompresjon og koding del I

Løsning av øvingsoppgaver, INF2310, 2005, kompresjon og koding

INF2310 Digital bildebehandling

Løsningsforslag, Ukeoppgaver 10 INF2310, våren 2011 kompresjon og koding del II

Lempel-Ziv-koding. Lempel-Ziv-koding. Eksempel på Lempel-Ziv. INF 2310 Digital bildebehandling. Kompresjon og koding Del II

INF 1040 Digital video digital bildeanalyse. Noen begreper. Kompresjon. Kompresjon. Dekompresjonsalgoritme. Kompresjonsalgoritme

da INF 2310 Digital bildebehandling

Kompresjon. Noen begreper. Plass og tid. Kompresjon. Digitale data kan ta stor plass. Eksemper : Overføring av data tar tid: Dekompresjonsalgoritme

UNIVERSITETET I OSLO

Repetisjon: Kompresjon

Temaer i dag. Repetisjon av histogrammer II. Repetisjon av histogrammer I. INF 2310 Digital bildebehandling FORELESNING 5.

Anvendelser. Noen begreper. Kompresjon

INF1040 Digital representasjon

DIGITALISERING Et bilde er en reell funksjon av to (eller flere) reelle variable. IN 106, V-2001 BILDE-DANNING. SAMPLING og KVANTISERING

INF 1040 høsten 2009: Oppgavesett 13 Kompresjon og koding (løsningsforslag) (kapittel 18) Tenk selv -oppgaver

INF 1040 høsten 2009: Oppgavesett 13 Kompresjon og koding (kapittel 18)

INF 1040 Kompresjon og koding. Noen begreper. De tre stegene i kompresjon. Kompresjon. Dekompresjonsalgoritme. Kompresjonsalgoritme

Repetisjon: Kompresjon

INF2310 Digital bildebehandling

Repetisjon: Kompresjon

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO. Dette er et løsningsforslag

INF 2310 Digital bildebehandling FORELESNING 5. Fritz Albregtsen. Pensum: Hovedsakelig 3.3 i DIP HISTOGRAM-TRANSFORMASJONER

Repetisjon: Kompresjon

INF2310 Digital bildebehandling

INF 1040 Kompresjon og koding. Noen begreper. De tre stegene i kompresjon. Kompresjon. Dekompresjonsalgoritme. Kompresjonsalgoritme

For J kvantiseringsnivåer er mean square feilen:

Anvendelser. Noen begreper. Kompresjon. INF 2310 Digital bildebehandling

UNIVERSITETET I OSLO

INF1040 Digital representasjon Oppsummering 2008 del II

INF1040 Digital representasjon Oppsummering 2008 del II

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF 2310 Digital bildebehandling FORELESNING 5. Fritz Albregtsen. Pensum: Hovedsakelig 3.3 i DIP HISTOGRAM-TRANSFORMASJONER

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

FORELESNING 12. KOMPRESJON OG KODING II Andreas Kleppe

Repetisjon av histogrammer

INF2810: Funksjonell Programmering. Huffman-koding

UNIVERSITETET I OSLO

Anvendelser. Kompresjon. Noen begreper. INF 2310 Digital bildebehandling

Gråtonehistogrammer. Histogrammer. Hvordan endre kontrasten i et bilde? INF Hovedsakelig fra kap. 6.3 til 6.6

UNIVERSITETET I OSLO

FORELESNING 11. KOMPRESJON OG KODING I Andreas Kleppe. Tre steg i kompresjon Redundanser Transformer Koding og entropi Shannon-Fano og Huffman

INF2810: Funksjonell Programmering. Huffman-koding

INF 1040 høsten 2009: Oppgavesett 11 Farger (kapittel 15) Løsningsforslag Flervalgsoppgaver

INF 2310 Digital bildebehandling

KOMPRESJON OG KODING

Hovedsakelig fra kap. 3.3 i DIP

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF Stikkord over pensum til midtveis 2017 Kristine Baluka Hein

Eksamen i INF 1040, 5. desember Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I OSLO

INF2810: Funksjonell Programmering. Huffmankoding

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Midtveiseksamen Løsningsforslag

INF2810: Funksjonell Programmering. Huffman-koding

INF2810: Funksjonell Programmering. Huffman-koding

SEGMENTERING IN 106, V-2001 BILDE-SEGMENTERING DEL I 26/ Fritz Albregtsen SEGMENTERING SEGMENTERING

UNIVERSITETET I OSLO

INF februar 2017 Ukens temaer (Kap 3.3 i DIP)

UNIVERSITETET I OSLO

INF 1040 høsten 2009: Oppgavesett 12 Digital video og digital bildeanalyse (løsningsforslag) (kapittel 16 og 17) 13. Lagring av video på DVD

Objekt-bilde relasjonen. Vinkeloppløsnings-kriterier. Forstørrelse. INF 2310 Digital bildebehandling

INF1040 Digital representasjon. Oppsummering. Glyfer og tegn. Den endelige løsning UNICODE og ISO bit ulike tegn!

Løsningsforslag til kapittel 15 Fargerom og fargebilder

UNIVERSITETET I OSLO

Filter-egenskaper INF Fritz Albregtsen

INF2310 Digital bildebehandling

Eksamen i INF 1040, 5. desember Det matematisk-naturvitenskapelige fakultet. Ditt kandidatnr: DETTE ER ET LØSNINGSFORSLAG

UNIVERSITETET I OSLO

Repetisjon av histogrammer. Repetisjon av histogrammer II. Repetisjon av gråtonetransform. Tommelfingerløsning

INF2810: Funksjonell Programmering. Huffman-koding

Temaer i dag. Mer om romlig oppløsning. Optisk avbildning. INF 2310 Digital bildebehandling

IN2040: Funksjonell programmering. Trær, mengder og huffmankoding

Utkast med løsningshint inkludert UNIVERSITETET I OSLO

INF Kap og i DIP

Bedømmelse: Ved bedømmelse vektlegges oppgavene I, II og III likt.

Introduksjon. «Diskret» sinus/cosinus i 1D. Funksjonen sin(θ) INF april 2010 Fourier -- En annen vinkling på stoffet i kapittel 4

INF 1040 høsten 2008: Oppgavesett 11 Farger (kapittel 15)

Temaer i dag. Repetisjon av histogrammer I. Gjennomgang av eksempler. INF2310 Digital bildebehandling. Forelesning 5. Pensum: Hovedsakelig 3.

Hjelpemidler: D Ingen trykte eller håndskrevne hjelpemidler tillatt. Bestemt, enkel kalkulator tillatt.

UNIVERSITETET I OSLO

Motivasjon. Litt sett-teori. Eksempel. INF Mesteparten av kap i DIP Morfologiske operasjoner på binære bilder.

INF2310 Digital bildebehandling

Oblig 4 - Mathias Hedberg

UNIVERSITETET I OSLO

MIK 200 Anvendt signalbehandling, Prosjekt 2, Diskret kosinus-transformasjon.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Transkript:

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