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

Like dokumenter
INF1040 Digital representasjon Oppsummering 2008 del II

INF1040 Digital representasjon Oppsummering 2008 del II

INF1040 Digital representasjon

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

Sampling, kvantisering og lagring av lyd

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

INF1040 Digital representasjon Oppsummering

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

Sampling av bilder. Romlig oppløsning, eksempler. INF Ukens temaer. Hovedsakelig fra kap. 2.4 i DIP

INF 1040 Kompresjon og koding

INF 1040 Kompresjon og koding

INF1040 Digital representasjon Oppsummering

UNIVERSITETET I OSLO

INF 1040 Kompresjon og koding

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

Lyd. Litt praktisk informasjon. Litt fysikk. Lyd som en funksjon av tid. Husk øretelefoner på øvelsestimene denne uken og en stund framover.

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Oppsummering 2008 del 1

Oppsummering 2008 del 1

INF januar 2017 Ukens temaer (Kap med drypp fra kap. 4. i DIP)

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

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

INF1040 Digital representasjon Oppsummering

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

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

Repetisjon: Sampling. Repetisjon: Diskretisering. Repetisjon: Diskret vs kontinuerlig. Forelesning, 12.februar 2004

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

Tall. Posisjons-tallsystemer. Representasjon av heltall. Tall positive, negative heltall, flytende tall. Tekst ASCII, UNICODE XML, CSS

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

INF 1040 høsten 2008: Oppgavesett 9 Sampling og kvantisering av lyd (kapittel 11)

INF2310 Digital bildebehandling

UNIVERSITETET I OSLO

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

INF 1040 Løsningsforslag til kapittel

Midtveiseksamen. INF Digital Bildebehandling

Midtveiseksamen Løsningsforslag

Løsningsforslag til kapittel 15 Fargerom og fargebilder

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF 2310 Digital bildebehandling

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF 2310 Digital bildebehandling

INF 2310 Digital bildebehandling

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO. Dette er et løsningsforslag

UNIVERSITETET I OSLO

da INF 2310 Digital bildebehandling

Repetisjon av histogrammer

Analog. INF 1040 Sampling, kvantisering og lagring av lyd. Kontinuerlig. Digital

UNIVERSITETET I OSLO

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

INF 2310 Digital bildebehandling

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

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

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

Datasikkerhet. Datasikkerhet. Trusler mot sikkerheten. Kampen mellom det gode og det onde. Datasikkerhet dreier seg om

INF 1040 Sampling, kvantisering og lagring av lyd

INF Stikkord over pensum til midtveis 2017 Kristine Baluka Hein

INF 1040 høsten 2009: Oppgavesett 8 Introduksjon til lyd (kapittel 9 og 10)

Repetisjon: Kompresjon

UNIVERSITETET I OSLO

Tall. Binære regnestykker. Binære tall positive, negative heltall, flytende tall

( x+ π 2) Bakgrunn: Sinus og cosinus. Bakgrunn: Samplet sinus i 1D. Bakgrunn: Samplet sinus i 2D. Bakgrunn: Sinus i 2D. sin( x)=cos.

UNIVERSITETET I OSLO

INF1040 Oppgavesett 7: Tall og geometrier

UNIVERSITETET I OSLO

Tema nr 2: Analog eller digital, kontinuerlig eller diskret. Eksempel på ulike båndbredder. Frekvensinnhold og båndbredde. Analog

Noen presiseringer mhp Diskret Fourier Transform. Relevant for oblig 1.

Ordliste. Adaptiv filtrering (adaptive filtering) Et filter som endrer oppførsel etter det lokale innholdet i bildet eller signalet.

Forelesning, 23.februar INF2400 Sampling II. Øyvind Ryan. Februar 2006

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

UNIVERSITETET I OSLO

Forelesning, 17.februar INF2400 Sampling II. Øyvind Ryan. Februar 2005

Utkast med løsningshint inkludert UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

Bilder del 2. Farger og fargesyn. Tre-farge syn. Farger og fargerom. Cyganski, kapittel 5. Fargesyn og fargerom. Fargetabeller

Fargebilder. Lars Vidar Magnusson. March 12, 2018

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

UNIVERSITETET I OSLO

Forkunnskapskrav. Hva handler kurset om. Kontaktinformasjon. Kurset er beregnet på en student som kan

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

Løsningsforslag til kapittel 11 sampling, kvantisering og lagring av lyd

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

KOMPRESJON OG KODING

UNIVERSITETET I OSLO

Tall. Ulike klasser tall. Læringsmål tall. To måter å representere tall. De naturlige tallene: N = { 1, 2, 3, }

For J kvantiseringsnivåer er mean square feilen:

Transkript:

INF040 Digital representasjon Oppsummering Glyfer og tegn Tegn: Det bakenforliggende begrep for bestemte visualiseringer ( strektegninger ) på papir, skjerm, steintavler Et tegn kan vises fram med ulike glyfer: A A A A Glyfer med identisk utseende kan visualisere ulike tegn: Eksempel: Å - bokstaven Å, enheten Ångström Gerhard Skagestein, Fritz Albregtsen Problem: Når er to glyfer så forskjellige at de visualiserer to ulike tegn? Eksempel: Klartekst A og Braille A A INF040-Oppsum- INF040-Oppsum-2 ASCII ASCII og etterfølgerne ISO-8859-x Windows CP 252 Unicode UTF-8 UTF-6 UTF-2 Escape-løsninger MIME Quoted Printable =C5 XHTML spesialsymboler Å INF040-Oppsum- 00000 000000 Den endelige løsning UNICODE og ISO 0646 bit 2 47 48 648 ulike tegn! Planen er å bruke bare 2 bit, med mulighet for 4 2 tegn Tegnsettet er delt opp i 7 plan med 2 6 = 6556 tegn i hvert plan Plan 0: BMP Basic Multilingual Plane 0x0000 to 0xFFFD Plan : SMP Supplementary Multilingual Plane historiske språk (f eks egyptiske hieroglyfer), musikk Plan 2: SIP Supplementary Ideographic Plane sjeldne kinesiske tegn Plan 4: SPP Supplementary Special Purpose Plane tag characters 0000 FF00 00 FF 256 256 7 BMP Basic Multilanguage Plane se http://wwwunicodeorg/ INF040-Oppsum-4

Representasjon av tegn Må ha standarder for: tegn kodepunkt representasjon Tegn Kodetabell Kodepunkt Representasjon A 0x4 00000 65 0 Fra kodepunkt til representasjon Vanligvis "rett fram etter nesa" 0x4 > 00000 men av og til unntak basert på "escape"-prinsippet ("det bitmønsteret som kommer nå, er ikke en vanlig representasjon det skal spesialbehandles") Eksempel: Spesialtegn i XML "Rett fram etter nesa"-bitmønsteret for &, dvs 00000, representerer ikke &, men begynnelsen på et spesialsymbol: &#UNIKODE-kodepunkt; Da må også & være et spesialsymbol: & > 00000 00000 0000 00000 0000 000 INF040-Oppsum-5 INF040-Oppsum-6 Surrogat-par Noen av tegnene i BMP fungerer som halvtegn Første halvdel (high surrogate): 0xD800 0xDBFF Siste halvdel (low surrogate): 0xDC00 0xDFFF Peker til et kodepunkt S utenfor BMP ved hjelp av følgende algoritme: S = (high 0xD800) * 0x0400 + (low 0xDC00) + 0x0000 Dette gir indirekte tilgang til 048 546 ekstra tegn fra BMP UNICODE UTF-8 Representasjoner med variabel lengde fra til 4 bytes Tegn i ASCII-settet representeres i byte "rett fram etter nesa" Tegn utenfor ASCII-settet representeres med 2 eller flere bytes Første byte innledes med et antall ere, like mange som det er bytes i representasjonen, etterfulgt av en 0 Resten av første byte brukes for å lagre en del av kodepunktet Så følger et antall bytes på formen 0xxxxxx, der xxxxxxx brukes for å lagre resten av kodepunktet 256 256 7 4 Antall kodepunkter som kan representeres BMP med surrogat-par: (4*256)*(4*256) = 6 * 256 * 256 INF040-Oppsum-7 Eksempel: 'ø', kodepunkt F8 = 000 UNICODE UTF-8: 0000 0000 Legg merke til at det ikke finnes noen "rett fram etter nesa"- representasjoner som begynner på INF040-Oppsum-8

Tall Posisjonstallsystemer Tall som tekst (ASCII-tegn representasjon) Heltall Positive Negative (flere mulige representasjoner, 2er komplement er vanlig) Desimaltall 0000 posisjon 000 posisjon 00 posisjon 0 posisjon 4 5 6 7 posisjon 6 posisjon Binært tall 8 posisjon 4 posisjon 2 posisjon posisjon 0 0 Tall avbildet på heltall (for eksempel bruk av bias) Flytende tall x 0,000 = 0000 + 4 x,000 = 4000 + 5 x 00 = 500 + 6 x 0 = 6 + 7 x = 7 = 4567 (0) x 6 = 6 + 0 x 8 = 0 + x 4 = 4 + 0 x 2 = 0 + x = = 2 (0) INF040-Oppsum-9 INF040-Oppsum-0 2er-komplementet Det binære 2er-komplementet er lett å beregne: Ta et binært tall Erstatt alle 0 med, alle med 0 0 (legg merke til at vi må vite antall biter 0 for tallrepresentasjonen) 00 Legg til 0 Eksempel: 2 (0) = 000 00 (forutsetter 8 bit) 2er-komplementet er 0 00 + = 0 0, dvs 25 (0) Regne ut 5 + ( 2): 00 00 + 0 0 = 000 0000 = 2 (0) - -4-5 - -2-6 -7 00 00 0000 0-8 4 biter 000 000 7 2 6 0 000 4 5 Populært kalt "klokkearitmetikk" 00 INF040-Oppsum- 00 000 00 Et binært flytende tall er basert på 2 eksponent * mantisse Vi må representere eksponent og mantisse Begge må kunne være både positive og negative (og null) Mange representasjonsmuligheter, verden har imidlertid standardisert på IEEE 754 To varianter: 2-biter representasjon (single precision, datatype real ) 64-biter representasjon (double precision, datatype double ) Eksempel: Single precision Binære flytende tall fortegnsbit 8 2 eksponent med bias 27 mantisse ( fraction ) Ikke-lagret ledende med antatt desimalpunkt INF040-Oppsum-2

Eksempel: Binære flytende tall - eksempel fortegnsbit 8 2 eksponent med bias 27 mantisse ( fraction ) Anta at vi skal representere 5, dvs 2 0 * 5 (eksempel behendig valgt slik at mantissen begynner med ) Fortegnsbit: (fordi tallet er negativt) Eksponent: 0 + 27 0 = 0 Ikke-lagret ledende med antatt desimalpunkt "Fraction": (5 0 2 ) = 05 0 = (2 - ) 0 = 000 Altså: 0 0000000000000000000000 INF040-Oppsum- Data Formål: Kryptering av data Krypterte data Gjøre data som sendes eller lagres uleselige for uvedkommende Utfordringer: Finne tilstrekkelig effektive krypterings- og dekrypteringsprosesser Gjøre det praktisk umulig å finne dekrypteringsnøkkelen ( knekke koden ) Administrere dekrypteringsnøkler Dekrypteringsprosess Krypteringsnøkkel Dekrypteringsnøkkel Krypteringsprosess Data INF040-Oppsum-4 Symmetrisk krypteringsteknikk Asymmetrisk krypteringsteknikk Samme nøkkel k brukes for både kryptering og dekryptering: Ek(P) > C Dk(C) > P Kommunikasjonspartnerne deler en hemmelighet: Nøkkelen Sikrer autentisering av kommunikasjonspartnerne og hemmeligholdelse Fordel: Brukbar effektivitet Samme algoritme ED brukes for både kryptering og dekryptering, men det brukes et nøkkelpar: En offentlig nøkkel (allment kjent) En privat nøkkel (hemmelig) EDmottakeroff(P) > C EDmottakerpriv(C) > P Sikrer hemmeligholdelse Forenkler administrasjon av nøkler Problem: Distribusjon (og hemmeligholdelse) av nøkkelen INF040-Oppsum-5 INF040-Oppsum-6

RSA-algoritmen RSA-algoritmen - hvordan den virker La meldingen P være et tall mindre enn N Kryptering: C = EDe(P) = P e % N Dekryptering: P = EDd(C) = C d % N N og e er den offentlige nøkkelen d er den private nøkkelen N, e og d må være omhyggelig valgt etter følgende regler: N = p * q, der p og q er store primtall d er et stort tall relativt prim til (p-)(q-) e er valgt slik at e*d % (p-)(q-) = Eksempel: p =, q = 5, d = 7, e = 2, N = 5 Meldingen P er tallet : Kryptering: C=ED2() = 2 % 5 = 2 Dekryptering: P= ED7(2) = 2 7 % 5 = Hvis p og q velges slik at N blir tilstrekkelig stor (mer enn 00 siffer), er det i praksis ikke mulig (selv med datamaskin) å finne d, selv om du kjenner e og N Hybride teknikker Kombinasjon av symmetriske og asymmetriske teknikker mest brukt i praksis Hvordan det virker: velg en tilfeldig hemmelig engangsnøkkel bruk en symmetrisk teknikk for å kryptere meldingen med denne hemmelige engangsnøkkelen bruk en asymmetrisk teknikk for å kryptere den hemmelige engangsnøkkelen send kryptert melding og engangsnøkkel til mottaker Gir god sikkerhet hvis engangsnøkkel velges tilfeldig INF040-Oppsum-7 INF040-Oppsum-8 Autentisering av avsender med asymmetrisk krypteringsteknikk Autentisering kan oppnås ved EDsenderpriv(P) > C EDsenderoff(C) > P Hemmeligholdelse og autentisering oppnås med dobbel kryptering EDmottakeroff(EDsenderpriv(P)) > C EDmottakerpriv(EDsenderoff(C)) > P Sikring av data Kritiske data må sikres mot lesing og endring av uvedkommende (kryptering) eller skjules (steganografi) Ved kryptering brukes oftest en kombinasjon av symmetriske og asymmetriske krypteringsteknikker Vurderinger av sikkerheten mot knekking av krypteringer er kun basert på antagelser og empiri, intet er bevist Steganografi brukes for å skjule en melding i et dekke Vannmerker brukes for å gi tilleggsopplysninger som ikke kan fjernes uten å ødelegge dekket INF040-Oppsum-9 INF040-Oppsum-20

TCP/IP protokoll-stakken Application: Tilbyr et sett av mekanismer (et språk) til applikasjoner som vil kommunisere HTTP, FTP, SMTP dine applikasjoner Transport: Sørger for datatransport fra endesystem til endesystem TCP, UDP Network: Finner veien gjennom nettverket fra maskin til maskin, adresserer, ruter og videresender data IP Link: Datatransport mellom to naboer i nettverket, sikrer korrekt overføring av data over et fysisk medium Ethernet, PPP Physical: Biter på ledningen Application Transport Network Link Physical Physical hardware Fysikkens lover gir begrensninger Begrenset signalhastighet typisk ca 2*0 8 m/s Begrenset overføringskapasitet typisk fra 0 Mbps til mange Gbps Begrenset overføringslengde pga dempning ( attenuation ), støy og interferens jo lengre og jo tynnere kabel, jo større dempning Originalsignal overføringskapasitet signalhastighet 2/*c I de fleste tilfeller er begrensninger i overføringskapasiteten mer plagsomt enn begrensninger i signalhastigheten Dempet signal INF040-Oppsum-2 INF040-Oppsum-22 Lydbølgene er kontinuerlige (analoge) signaler Fra lyd til signaler Lydstyrke Hvor sterk en lyd er bestemmes av dens amplitude (lufttrykk-variasjoner) Trykk-amplituden P måles i Pascal (Pa=N/m 2 ) For å kunne lagre lyd på en CD eller PC, må vi representere signalet digitalt Dette gjøres ved å sample det analoge signalet (plukke ut verdier med bestemte intervaller) Signalets lydstyrke på et bestemt tidspunkt må også kvantiseres til et endelig antall ulike verdier 0 ms av et musikkstykke lyd2wav Nye begreper: Analog til digital konvertering Sampling kvantisering Enheten intensitet I brukes også (energi/sekund/areal = W/m 2 ) Vi bruker ofte enheten decibel (db) istedet Verdien i db beregnes fra trykk-amplituden P eller fra intensiteten ved : L p = 20 log P P 0 = 0 log 0 = 0 log P0 P0 Decibel måler hvor sterk en lyd er i forhold til den svakeste lyden vi kan høre (P 0 er satt til 2*0-5 N/m 2 ) Hvis en lyd har styrke 40 db og en annen 60 db, er den andre lyden 0 2 ganger sterkere enn den første (i intensitet) 2 0 I I 0 INF040-Oppsum-2 INF040-Oppsum-24

Lyd som sinusoider Sinusoider er et felles navn på funksjonene cos(x) og sin(x) Sinus og cosinus-funksjoner beskriver periodiske signaler Periodisk signal: et periodisk signal gjentar seg etter en viss tid Antall svingninger pr sekund kalles frekvensen, f, og måles i Hz For sinusoider er perioden lik avstanden i sekunder mellom to punkter på samme sted i svingningen Amplituden forteller hvor sterk lyden er: x(t) = A cos(2πf 0 t) En faseforskyvning er en forskyvning langs tidsaksen x(t) = A cos(2πf 0 t + φ) Hvilke frekvenser inneholder lyden? Fourier-transformen dekomponerer signalet i sinus- og cosinuskomponenter med ulik frekvens og viser hvor sterkt bidrag hver komponent har Mennesket hører frekvenser mellom 20 og 20 000 Hz Hvis vi skal spille signaler opp til 20 000 Hz må vi ha en båndbredde på 20 000 Hz Ulike lydsignaler inneholder ulike bånd av frekvensspekteret: Musikk setter store krav til båndbredde (20 000 Hz) Tale ligger på max khz Øret mest følsomt mellom og 4 khz» Dette brukes i telefonoverføringer (max 4 000 Hz) Det mest sentrale er den maksimale frekvensen vi ønsker å representere INF040-Oppsum-25 INF040-Oppsum-26 Digitalisering av lyd Alle lydsignaler må samples og kvantiseres for å kunne lagres digitalt Samplingsintervall og samplingsfrekvens Vi antar at vi sampler uniformt, dvs med like lange tidsintervaller Avstanden i tid mellom samplene kalles samplingsintervallet T s (måles i sekunder) Prosessen som gjør signalet diskret i tid kalles sampling Å sample et signal vil si å plukke ut verdien til signalet på tidspunkter med gitte intervaller Lydstyrken ved tid t, x(t) må så kvantiseres for å kunne lagres (feks til unsigned byte som gir verdiene 0-255) Fra samplingsintervallet finner vi samplingsfrekvensen, f s =/T s (måles i Hertz) Hvor ofte vi må sample avhenger av hvor fort signalet varierer, dvs hvilke frekvenser signalet består av Det mest kritiske er signalets høyeste frekvens INF040-Oppsum-27 INF040-Oppsum-28

Sampling med Nyquist-raten Avspilling Vi antar at signalet er samplet med f s 2f max Diskret til analog rekonstruksjon gir som resultat den kombinasjon av sinusoider som er kompatibelt med det diskrete signal har de lavest mulige frekvenser Sampler vi under Nyquist raten og senere forsøker å rekonstruere det analoge signalet får vi rekonstruert feil signal I praksis oversampler vi med en faktor for å få god rekonstruksjon Når lydsignalet skal spilles av, må det konverteres til et kontinuerlig / analogt signal igjen Avspillingsprogrammet må også fylle ut med lydverdier mellom hvert sampel, dvs feks mellom tidspunkt t 0 og tidpunkt t Dette kan gjøres på flere måter (algoritmer), feks ved Sette inn nuller Sette inn kopier av forrige sampel Lineær interpolasjon Høyere-ordens interpolasjon t 0 t t 2 t t 4 t 5 t 6 INF040-Oppsum-29 INF040-Oppsum-0 Aliasing, undersampling og oversampling Kvantisering - antall bit pr sampel Aliasing betegner fenomenet at en sinusoid ved for lav samplingsrate gir opphav til samme diskrete signal som en sinusoid med lavere frekvens Undersampling betyr at vi sampler med lavere samplingsrate enn 2f max Da får vi forvrenginger i frekvensinnholdet/aliasing Oversampling betyr at vi sampler med en høyere samplingsrate enn 2f max I rekonstruksjon gjøres en filtrering for å få det analoge signalet Denne filtreringen blir enklere, og raskere, hvis vi oversampler Når vi oversampler, øker lagringsbehovet Antall bit pr sampel kalles ordlengde Med 8 bit pr sampel kan vi lagre verdiene 0-256 eller -28 til 27 Med heltall deler vi inn intervallet mellom v min og v max i N nivåer med bredde v=(v max -v min )/N Alle verdier for x(t) som ligger i samme celle representerer vi med samme verdi (kalles rekonstruksjonsnivå) Hvor mange bit trenger vi for å få så mange nivåer som vi vil? Output Rekonstruksjonsnivå Input INF040-Oppsum- INF040-Oppsum-2

Hvor stort blir bildet av objektet? Hvor mange piksler trenger vi til synsfeltet? y Vi kan se ca 60 svarte og 60 hvite rader per grad av synsfeltet F 2 F f f s s y Vårt synsfelt er ca 50 º horisontalt og 40º vertikalt for hvert øye Vi ser i landscape-format Kjenner vi avstanden s, objektets størrelse y, og avstanden s, så finner vi størrelsen på bildet av objektet y /s = y/s I praksis er ofte s f, slik at y f * y/s y = cm og s = 40 meter => y = 5 cm * cm / 4000 cm = 0025 cm = 25 µm Den fysiske størrelsen bør være slik at det er minst to piksler på den minste periodiske struktur i det analoge bildet Størrelsen på et piksel bør da være 05 * 25 µm = 625 µm 50º horisontalt synsfelt => 50*60 = 000 vertikale linjer -> 6 000 piksler 40º vertikalt synsfelt => 40*60 = 2 400 horisontale linjer -> 4 800 piksler INF040-Oppsum- INF040-Oppsum-4 Hvor små detaljer kan en linse avbilde? Hvis en f=50 mm linse har f / D = 6, så er D = 50mm / 6 = 25 mm Ser vi på et objekt med høyde y meter på en avstand av s meter, så er vinkelen dette objektet opptar, uttrykt i radianer (vinkel = bue/avstand): θ = y/s radianer For små vinkler er vinkelen (i radianer) og sinus til vinkelen like Rayleigh-kriteriet som gir oss vinkel-oppløsningen til en linse blir da veldig enkel: θ = y/s = 22 * λ / D Dette gir oss for den maksimale avstanden fra objekt til kamera, hvis vi skal kunne se et objekt på cm på bølgelengden 69 nm: s = y*d /22*λ = *0-2 m * 25*0 - m / 22 * 69*0-9 m = 40 m Digitalisering i tre enkle steg Et kontinuerlig bilde er en reell funksjon f(x,y) av to (eller flere) reelle og kontinuerlige variable Vi skal sample og kvantisere dette til et digitalt bilde Vi legger på et rutenett, og beregner gjennomsnittsverdien av f(x,y) i hver rute: Rutenettet er vanligvis kvadrater Vi har nå en reell funksjon f (x,y ), der heltallene x og y gir nummereringen av rutene 2 Vi skalerer f (x,y ) slik at den passer innenfor det område vi skal bruke som gråtoneskala Vi kvantiserer verdiene av f (x,y ) til nærmeste heltalls verdi i gråtoneskalaen Vi har nå funnet f (x,y ), som er en heltalls funksjon av to heltalls variable INF040-Oppsum-5 INF040-Oppsum-6

Viktige begreper Et digitalt bilde er en funksjon av to (eller flere) heltallsvariable f(x,y) (x og y er heltall) Et 2-dimensjonalt digitalt bilde er en 2-dimensjonal array/matrise Dette kalles raster-representasjon Hvert element i matrisen kalles et piksel, og angis ved koordinater x og y Tallverdien til hvert piksel angir intensiteten (hvor lyst/mørkt) til pikslet y 2 5 5 7 4 6 7 7 4 5 x 6 9 5 6 4 4 9 6 Merk: origo (0,0) er ofte oppe i venstre hjørne i bildet Det første pikslet kan ha indekser (0,0) eller (,) 4 4 9 6 RGB-kuben blå 0,0, magenta Gråtonebilder: r=g=b 0,0,0 svart,0,0 rød gul hvit cyan grønn 0,,0 Merk: fargene her er normaliserte slik at de ligger mellom 0 og INF040-Oppsum-7 INF040-Oppsum-8 CMYK-fargemodellen Hue, Saturation, Intensity (HSI) CMYK-modellen er subtraktiv (start med hvitt, trekk fra farger) Alternativ til r,g,b som basisfarger er cyan, magenta, yellow (CMY-modeller) hvit Hue: ren farge - gir bølgelengden i det elektromagnetiske spektrum C = - R eller 255 - R hvis 8-bits ikke-normaliserte bilder M = - G 255 - G Y = - B 255 - B RGB er vanlig på display, men CMYK er vanlig på fargeprintere (K er ekstra komponent for svart) Egen komponent for svart fordi full verdi av C, M og Y gir mørk brunt og ikke svart cyan H grønn gul rød blå S magenta I H er vinkel og ligger mellom 0 og 2π: Rød: H=0, grønn: H= 2π/, blå= 4π/, gul: H=π/, cyan= π, magenta= 5π/, Hvis vi skalerer H-verdiene til 8-bits verdier vil Rød: H=0, grønn: H= 85, blå= 70, gul: H=42, cyan= 27, magenta= 2 svart INF040-Oppsum-9 INF040-Oppsum-40

Fargebilder og fargetabeller RGB kan lagres med like mange bit for r, g, b, feks (8+8+8) Selv ++ =9 bits gir oss 8x8x8=52 kombinasjoner, men bare 8 forskjellige nivåer av rødt, grønt og blått, og dermed også bare 8 forskjellige gråtoner Det er ikke sikkert at alle de 52 fargene finnes i bildet Et scene med mange nyanser av en farge vil da se ille ut! Hvorfor? Jo fordi den bare får 8 forskjellige farger! Alternativt kan man bruke 8 bit og fargetabeller Hver rad i tabellen beskriver en r, g, b-farge med 24 bits, og tabellen inneholder de 256 fargene som best beskriver bildet I bilde-filen ligger pikselverdiene som tall mellom og 255, men når vi skal vise bildet, slår vi bare opp i samme rad som pikselverdien, og finner r, g, b-verdiene til pikselet Pikselverdi 0 2 254 255 Disse verdiene ligger lagret på bildefilen RGB-verdi 0,0,0 255,0,0 255,255,0 0,255,0 255,00,0 0,00,255 255,255,255 Fargetabell Disse verdiene vises på skjermen Vise RGB-verdier på 8 bits skjerm Eller vise pseudofarger fra et gråtonebilde Pikselverdiene fra 0 til 255 tilordnes et RGB-triplet Ved framvisning leses pikselverdien, som brukes til å indeksere tabellen for å finne den RGB-fargen som vises INF040-Oppsum-4 INF040-Oppsum-42 Fra bilder til video Når vi lukker øynene, tar det litt tid før etter - bildet forsvinner, spesielt hvis intensiteten er høy (i deler av) bildet Bildet forsvinner gradvis (eksponensielt) fra retina Det er en kort periode da vi ikke kan ta inn ny informasjon -- selv om øynene er åpne Dette kan vi teste med periodiske lysblink Det viser seg at critical flicker fusion frequency øker logaritmisk med økende luminans Den er så lav som 4 s - for lave lysstyrker, der bare stavene er virksomme Den er ca 60 s - for kraftig lysstyrke, der bare tappene er virksomme, og konvergerer mot 80 s - Optimal digital video Digital video består av en tids-sekvens av digitale still-bilder Hvert bilde er digitalisert i henhold til de regler som gjelder for digitale bilder Geometrisk oppløsning: Husk Nyquist-teoremet og Rayleighkriteriet! Fargekamera: For hvert piksel måles lysintensitet i tre separate bånd i det elektromagnetiske spekteret Husk at for hvert bånd (red, green, blue) skal vi : beregne gjennomsnittsverdien i hver rute 2 skalere slik at den passer innenfor det tall-området vi skal bruke kvantiserer verdiene til nærmeste heltalls verdi i tall-området Bilde-frekvensen må være høy nok (60 Hz) til å fange opp all den tids-informasjon som vi er i stand til å oppfatte INF040-Oppsum-4 INF040-Oppsum-44

To representasjoner for bilder Det er to fundamentalt forskjellige måter å representere et bilde på: Lagre alle pikselverdiene (gråtoneverdi, eller fargekomponenter) 2 Lagre en parametrisert beskrivelse av bildets innhold Den siste metoden krever at bildet deles opp i objekter, og at hvert objekt beskrives ved en rekke parametre Dette forutsetter Enten at bildet er forholdsvis enkelt (skisser, tegninger, CAD, kart, ) 2 Eller at det brukes veldig mange parametre for å generere noe som ligner på et naturlig bilde ( virtual reality ) I det siste tilfellet er det naturlig å la objekter ha overflate-egenskaper (varierende farge, refleksjonsegenskaper, tekstur, etc) Kompresjon kan deles inn i tre steg: Kompresjon Transform - representer sekvensen på en mer kompakt måte (reversibel) Kvantisering runder av koeffisienter til mindre presisjon (ireversibel) Koding representerer hvert datapunkt mer effektivt (reversibel) Det finnes en mengde kompresjonsmetoder som kombinerer de tre stegene Mange er basert på å representere en tekst/bilde/lydsignal på en annen måte, altså transformer av original-dataene Eks kjedekode, løpelengder/run-length, differansetransform Hvis vi kvantiserer original-dataene, så kan ikke dette reverseres Eksakt/tapsfri ( loss-less ) kompresjon gir eksakt rekonstruksjon Ikke-tapsfri ( lossy ) kompresjon gir ikke eksakt rekonstruksjon Resultatet kan likevel være godt nok Koding bygger ofte på sannsynlighetsfordelinger, dvs histogrammer INF040-Oppsum-45 INF040-Oppsum-46 Ulike typer redundans Kompresjonsrate og redundans Begrepet redundans sier noe om hvor stor del av datamengden vi kan fjerne uten at vi mister informasjonen i dataene Kodings-redundans Eks: 5555526555 - Huffman-koding bruker færrest bit på å kode 5-tallet, som forekommer ofte, og flere bit for 6-tallet Intersampel redundans Eks: 000066 kan run-length kodes som (0,4),(,),(6,2),(,2) Psykovisuell/psykoakustisk redundans Fjern informasjon vi ikke kan se eller høre Interbilde redundans For videokoding: En video består av en sekvens av stillbilder Vi kan kode første bilde i sekvensen, og deretter bare endringene fra ett bilde til det neste Kompresjonsraten angis som CR = i/c, der i er antall bit pr sampel originalt, og c er antall bit pr sampel i det komprimerte datasettet Relativ redundans: R = = CR c i percentage removed = 00 (-c/i) % INF040-Oppsum-47 INF040-Oppsum-48

Naturlig binær-koding Eks: vi har 8 mulige verdier Symbol nr Symbol Kode c i s 000 2 s 2 00 00 0 00 Naturlig binærkoding er bare optimal hvis alle verdiene i sekvensen er like sannsynlige For ulike sannsynligheter er koder med variabel lengde på kode-ordene bedre Hyppigere symboler kortere kode-ord Sjeldne symboler lengere kode-ord Dette var forretnings-ideen til Samuel Morse s 4 s 4 0 0 5 s 5 6 s 6 7 s 7 8 s 8 Morse-alfabetet bruker kortere kode-ord for de vanligste symbolene INF040-Oppsum-49 Histogrammer over symboler Vi har N symboler i en sekvens Tell opp antall ganger symbol s i forekommer og la n i være dette antallet Dette er det samme som histogrammet til sekvensen Sannsynligheten til symbolene finnes da som: p i = n i /N Altså det normaliserte histogrammet Ved hjelp av dette skal vi konstruere en kode c,c N slik at symbol s i kodes med kodeordet c i b i er lengden i bit av kodeordet c i Gjennomsnittlig antall bit pr symbol for denne koden er: R= b p + b2 p 2 + + b N p N i = = N bi pi INF040-Oppsum-50 Informasjons-innholdet i EN hendelse Vi definerer informasjonsinnholdet I(s i ) i hendelsen s i ved I( si ) = log2 = log2 ( p( si )) p( s ) log 2 (x) er 2-er logaritmen til x Hvis log 2 (x) = b så er x = 2 b Eks: log 2 (64) = 6 fordi 64 = 2 6 (2 6 = 2*2*2*2*2*2 ) log 2 (8) = fordi 8 = 2*2*2 = 2 Har ikke log 2 på kalkulatoren, hjelp! log 2 (tall) = log 0 (tall) / log 0 (2) log 2 (/p(s i )) gir oss informasjonsinnholdet i den hendelsen det er at symbolet s i forekommer en gang, uttrykt i bit i Gjennomsnittlig informasjon pr symbol: entropi Vi definerte informasjonsinnholdet I(s i ) i hendelsen s i ved Hvis vi tar gjennomsnittet over alle N symboler s i i alfabetet, får vi gjennomsnittlig informasjon pr symbol, som er entropien, H: H = I( si ) = log2( p( si )) N i= 0 p( si )log 2 ( p( s i )) Entropien setter en nedre grense for hvor kompakt sekvensen kan representeres Dette gjelder hvis vi bare ser på hvert symbol for seg, altså bare ser på kodingsredundans INF040-Oppsum-5 INF040-Oppsum-52

Huffman-koding Huffman-koding er en algoritme for optimal koding med variabel-lengde koder Huffman-koding er basert på at vi kjenner sannsynligheten for at hvert av symbolene forekommer Ingen kode-ord danner prefiks i en annen kode Sikrer at en sekvens av kodeord kan dekodes entydig, uten at man trenger ende-markører Betyr at mottatt kode er instantant (øyeblikkelig) dekodbar Merk at kodeboken må overføres! Framgangsmåte - Huffman-koding Gitt en sekvens med N symboler: Sorter symbolene etter sannsynlighet, slik at de minst sannsynlige kommer sist 2 Slå sammen de to minst sannsynlige symbolene i en gruppe, og sorter igjen etter sannsynlighet Gjenta 2 til det bare er to grupper igjen 4 Gi kodene 0 og til de to gruppene Kode 0 til den mest og til den minst sannsynlige av de to 5 Traverser bakover, og legg til 0 og i kodeordet for de to minst sannsynlige gruppene i hvert steg INF040-Oppsum-5 INF040-Oppsum-54 Eksempel - Huffman-koding Gitt 6 begivenheter A, B, C, D, E, F med sannsynligheter Begivenhet A B C D E F Sannsynlighet 0 0 0 02 0 005 Eksempel - Huffman-koding Gitt 6 begivenheter A, B, C, D, E, F med sannsynligheter Begivenhet A B C D E F Sannsynlighet 0 0 0 02 0 005 Slå sammen de to minst sannsynlige, slå også sammen sannsynligheten deres Finn så de to som nå er minst sannsynlige, og slå dem sammen på samme måte Fortsett til det er bare to igjen 06 025 04 05 Gå baklengs gjennom strukturen og tilordne 0 eller til hver gruppe (F eks kode 0 til den mest sannsynlige og kode til den minst sannsynlige) 0 06 Kode 0 0 0 05 025 0 04 Kode INF040-Oppsum-55 INF040-Oppsum-56

Dette gir følgende kodebok Kodeboken Med sannsynlighetene 0 0 0 02 0 005 blir gjennomsnittlig antall bit pr symbol (R) for denne koden: Den ideelle binære kode-ord lengden for symbol s i er b i = - log 2 (p(s i )) Begivenhet Kode R= b p + b2 p2 + + bn pn = bi pi = 06 2 + 04 = 24 Siden bare heltalls ordlengder er mulig, er det bare 00 0 for heltall k som tilfredsstiller dette A B N i= C 00 D 0 E 0 F p( s i ) = 2 k Lempel-Ziv-koding Premierer mønstre i dataene, ser på samforekomster av symboler Bygger opp en symbolstreng-liste både under kompresjon og dekompresjon Denne listen skal ikke lagres eller sendes, for mottakeren kan bygge listen av den symbolstrengen han mottar Det eneste man trenger er et standard alfabet (feks ASCII) Mottaker kjenner bare alfabetet, og lagrer nye fraser ved å ta nest siste streng pluss første symbol i sist tilsendte streng, inntil listen er full (det er en praktisk grense her!) En ulempe er at man av og til lager kodeord som man ikke får bruk for INF040-Oppsum-57 INF040-Oppsum-58 Løpelengde-transform (run-length) Ofte inneholder bildet objekter med lignende gråtoner, feks svarte bokstaver på hvit bakgrunn Vi kan benytte oss av kompresjonsteknikker som tar hensyn til at nabopiksler på samme linje ofte er like Løpelengde-transform er reversibel Først et eksempel: 555555555544777777 (24 byte) Når tallet forekommer 6 ganger etter hverandre, trenger vi bare lagre tallparet (,6) Tilsammen trenger vi her 4 tallpar, (,6), (5,0), (4,2), (7,6) altså 8 tall til å lagre hele sekvensen 24 tall ovenfor Hvor mange bit vi bruker pr tall, avhenger av den videre koding Vi kan for eksempel bruke Huffman-koding på tallparene (se ukeoppgaven) Differansetransform Gitt en linje i bildet med gråtoner x,, x N som har pikselverdier mellom 0 og 2 b- Transformer bildet ved at du fra hver pikselverdi subtraherer foregående pikselverdi (bortsett fra for første piksel) x, x 2 -x, x -x 2,, x N -x N- Vi har nå dobbelt så mange mulige verdier, og trenger b+ biter hvis vi skal tilordne like lange binære koder til alle mulig verdier Men, i differansehistogrammet vil de fleste verdiene samle seg rundt 0, feks mellom -8 og 8 Differanserepresentasjonen kan derfor kodes mer effektivt feks med Huffman-koding NB! I en videosekvens kan vi også ta differansen mellom et bilde og det forrige bildet i sekvensen Hvordan ser et slikt bilde ut? INF040-Oppsum-59 INF040-Oppsum-60

JPEG-kompresjon Bildet deles opp i blokker på 8x8 piksler, og hver blokk kodes separat Hver blokk transformeres med DCT (Diskret Cosinus Transform), som gir reelle koeff og transformkoeffisientene kvantiseres Sikk-sakk-scanning ordner koeffisientene i D-rekkefølge Mange koeffisienter vil rundes av til null Løpelengde-transform av koeffisientene, fulgt av Huffman-koding Ved JPEG-koding kan man velge en kvalitetsparameter som ligger mellom 0 og 00 (prøv xv eller gimp) For de spesielt interesserte: dette gjelder den gamle JPEGstandarden, ikke JPEG 2000, som bruker wavelets Oppsummering - kompresjon Hensikten med kompresjon er mer kompakt lagring eller rask oversending av informasjon Kompresjon er basert på informasjonsteori Antall bit pr sampel er sentralt, og varierer med kompresjonsmetodene og dataene Sentrale metoder: Huffman-koding lag sannsynlighetstabell, send kodebok Universell koding utnytter mønstre sender ikke kodebok For bilder: løpelengde-koding og differansekoding INF040-Oppsum-6 INF040-Oppsum-62