INF1040 – Digital representasjon Hvordan lagres bitene...
Transcript of INF1040 – Digital representasjon Hvordan lagres bitene...
INF1040-Oppsum-1© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
INF1040 – Digital representasjonOppsummering
Gerhard Skagestein, Fritz Albregtsen
INF1040-Oppsum-2© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Hvordan lagres bitene?Elektriske ladninger (halvlederteknologi)
RAM
Flash memory
Magnetisme
Magnetplater (disk)
Magnetbånd
”Core”
Optisk
CD, DVD
Hullkort
Hullbånd
strøm-regulator
lagret bit
strøm
sensor
Interessante egenskaper:• Pris• Lagringskapasitet• Lese/skrivehastighet• Søketid (latency)• Adresserbarhet• Lagringsevne uten strømtilførsel• Lagringsevne over tid• Levetid
INF1040-Oppsum-3© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Fysikkens lover gir begrensningerBegrenset signalhastighet
3*108 m/s (lyshastigheten) i fritt rom
typisk ca 2/3 av dette i et fysisk medium (optisk eller elektrisk)
Begrenset overføringskapasitet – typisk fra 10 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 Dempet signal
signalhastighet
overføringskapasitet
Merk at vi i dagligtalen som oftest omtaleroverføringskapasiteten som “hastigheten påsambandet” (målt i biter per sekund – bps)
2/3*c
c
INF1040-Oppsum-4© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Konvertering mellom tallsystemerTitall-
systemet
Det binære tallsystemet
Det heksadesimaletallsystemet
Suksessive divisjoner
med 2
Grupper 4 og 4 biterog bruk tabell F1111
E1110D1101C1100B1011A101091001810007011160110501014010030011200101000100000
heksbinært
∑ sk*16(n-k)
k=1
n
Erstatt hvert heks-siffer
med fire biter fra tabell
∑ sk*2(n-k)
k=1
n
Og hva med det oktaletallsystemet?
INF1040-Oppsum-5© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
ASCII og etterfølgerne
ASCII
ISO-8859-x
Windows CP 1252
Unicode UTF-8
UTF-16
UTF-32
Escape-løsninger
XHTML spesialsymboler Å
MIME Quoted Printable =C5
INF1040-Oppsum-6© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Unicode og ISO 1064621 bit, med mulighet for 1 114 112 tegn
Tegnsettet er delt opp i 17 plan med 216 = 65536 tegn i hvert plan
Plan 0: BMP – Basic Multilingual Plane U+0000 to U+FFFD
Plan 1: SMP – Supplementary Multilingual Plane – historiske språk (f. eks. egyptiske hieroglyfer), musikk
Plan 2: SIP – Supplementary Ideographic Plane – sjeldne kinesiske tegn
Plan 14: SPP – Supplementary Special Purpose Plane – tag characters
256
256
17 BMP –Basic Multilanguage Plane
se http://www.unicode.org/00 FF0000
FF00
000000
100000
I Unicodeskriver vi U+ istedenfor 0x
INF1040-Oppsum-7© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Fra glyf til representasjon
Må ha standarder for: tegn ↔ kodepunkt ↔ representasjon
A
Kodetabell
0x41
Tegn Kode-punkt
Represen-tasjon
6510
1000001
Glyf
A
INF1040-Oppsum-8© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Glyfer og tegnTegn: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ömProblem:Når er to glyfer så forskjellige at de visualiserer to ulike tegn?Eksempel: Klartekst A og Braille A
AEksempel: Arabisk heh – kontekstuelle former
Representativ glyf: ه Kontekstuelle former: ه ه ه ه
INF1040-Oppsum-9© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Fra kodepunkt til representasjonVanligvis "rett fram etter nesa"0x41 —> 1000001
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 00101010, representerer ikke &, men begynnelsen på et spesialtegn:&#Unicode-kodepunkt;Da må også & være et spesialtegn: & —> 00101010 00100011 01111000 00110010 00110101 00111011
INF1040-Oppsum-10© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
og så har vi alle Unicode-transformasjoneneCharacter encoding forms (fra kodepunkt til ”kodingsenheter”)
UTF-8 – variabel lengde fra 1 til 4 bytes 1 byte for ASCII
UTF-16 – variabel lengde fra 1 til 2 bytes1 byte for tegn i BMP, ellers surrogatpar
UTF-32 – fast lengde på 4 bytes
Character encoding schemes (fra ”kodingsenhet” til bytesekvens)
UTF-8
UTF-16 med byte-order mark eller lignende
UTF-16BE
UTF-16LE
UTF-32 med byte-order mark eller lignende
UTF-32BE
UTF-32LE
INF1040-Oppsum-11© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Unicode UTF-8Enslig motorvogn = 0+ ASCII-kodeMotorvogn i tog begynner alltid med et antall 1er-biteretterfulgt av en 0Antall 1er-biter i motorvognen = antall vogner i togetVognene begynner alltid med 10Disse bitmønstrenebrukes ikke for vanlige tegn i UTF-8
ASCII med en ekstra ledende 0er kompatibel med UTF-8
0xxxxxxx
110xxxxx 10xxxxxx
1110xxxx 10xxxxxx
11110xxx 10xxxxxx
10xxxxxx
10xxxxxx 10xxxxxx
7 biter
11 biter
16 biter
21 biter
http://www.ifi.unizh.ch/mml/mduerst/papers/PDF/IUC11-UTF-8.pdfINF1040-Oppsum-12© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Unicode UTF-16Med 16 biter kan kodepunktene i BMP representeres direkte
De 16 planene over BMP adresseres med surrogatpar fra BMP
Surrogatpar: ”Tegn” i BMP som fungerer som ”halvtegn” av 21-biters tegn
Første halvdel (high surrogate): U+D800 – U+DBFF
Siste halvdel (low surrogate): U+DC00 – U+DFFF
Peker til et kodepunkt S utenfor BMP ved hjelp av følgende algoritme:S = (high – 0xD800) * 0x0400 + (low – 0xDC00) + 0x10000
Dette gir indirekte tilgang til 220 = 1 048 576 ekstra tegn ut fra BMP
Disse kodepunktene brukes ikke for noe annet, og reduserer derfor antall vanlige tegn i BMP
256
256
17
INF1040-Oppsum-13© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Formatert tekstEt sentralt prinsipp:Skille innhold og fremvisningsdirektiver
Fordeler:
Gir enhetlig utseende
Gjør det enkelt å skifte utseendet gjennomgående
Gjør det enkelt å tilpasse utseendet til fremvisningsmediet
Kan bidra til å senke datamengden
Eksempler
Uformatert tekst og stiler i MS Word
XHTML-strict med eksterne stilark
Ikke bruke XHTML-tabeller for layout (!?)
Inovanis hodeanimasjoner
INF1040-Oppsum-14© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
SGML-familien
SGML – Standard General Markup Language
HTML – Hypertext Markup Language
XML – Extensible Markup Language
XHTML –Extensible Hypertext Markup Language
OtherXML-based Languages
ISO 8879:1985
INF1040-Oppsum-15© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Et meget enkelt XML-eksempel
<?xml version = "1.0" encoding="ISO-8859-1"?>
<eventyr>
Det var en gang…
…
og snipp, snapp, snute, så var det eventyret ute.
</eventyr>
startmarkering(starttag)
sluttmarkering(endtag)
element(element)
Alle XML-filer begynner slik!
Tegnsett brukt i XML-filen
INF1040-Oppsum-16© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Oppbyggingen av et element
Et element må ha både en startmarkering og en sluttmarkering <markering>elementinnhold</markering>
Tomme elementer kan ha en kombinert kombinert start- og sluttmarkering <markering/>
Et XML-dokument kan inneholde kun ett rotelement– som da inneholder de øvrige elementene
<elementnavn attributtnavn= "verdi">tekst og/eller elementer
</elementnavn>
startmarkering
sluttmarkering
elementinnhold
INF1040-Oppsum-17© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
SpesialtegnTegnene < > & har en spesiell betydning i XML(de brukes som ”escape”-tegn)
Hvis slike tegn inngår i teksten, må de kodes på en spesiell måte:&tegnnavn; eller &#kodepunkt;
altså:< < <> > >& & &
Andre tegn kan kodes på tilsvarende måte.
For konvertering fra Unicode-tegn til heksadesimal, bruk for eksempel http://pioneer.stereo.lu/converter.html
x betyr at kodepunktet er angitt i heksadesimal
INF1040-Oppsum-18© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Den minimale XHTML nettside<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml">
<head>
<title> En minimal nettside </title>
</head>
<body>
<div>Hallo, verden!</div>
</body>
</html>
Angivelse av DTD
Angivelse av navnerom
INF1040-Oppsum-19© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
TallTall som tekst (ASCII-tegn representasjon)
Heltall
Positive
Negative (flere mulige representasjoner, 2er komplement er vanlig)
Tall avbildet på heltall (for eksempel bruk av bias)
Flytende tall
INF1040-Oppsum-20© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
”Naturlig” representasjon av heltallBruker formelen for tall bygd opp i posisjonssystemet
0 = 0 * 20 → 02
1 = 1 * 20 → 12
2 = 1 * 21 + 0 * 20 → 102
3 = 1 * 21 + 1 * 20 → 112
4 = 1 * 22 + 0 * 21 + 0 * 20 → 1002
5 = 1 * 22 + 0 * 21 + 1 * 20 → 1012
6 = 1 * 22 + 1 * 21 + 0 * 20 → 1102
7 = 1 * 22 + 1 * 21 + 1 * 20 → 1112
8 = 1 * 23 + 0 * 22 + 0 * 21 + 0 * 20 → 10002
9 = 1 * 23 + 0 * 22 + 0 * 21 + 1 * 20 → 10012
…
∑ sk*2(n-k)
k=1
n
INF1040-Oppsum-21© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Gray-kode-representasjon av heltall
Poenget med Gray-kode er at et tall skal skille seg fra det neste kun i en eneste bit
Konstruksjons-algoritme for ”binary reflectedGray code”:Se kompendium side 17-7
00000000
01
00011110
0000000000000000000000000000000011001101111111101010101110011000
01
00011110
00000001001100100110011101010100
10
10110100
100101111110010011001000
0000000000000000000000000000
1011110
000001011010110111101100
23
89
101112131415
01
4567
→→→→→→→→→→→→→→→→
Brukes bl.a. for representasjon av gråtonebilder
INF1040-Oppsum-22© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Konvertering mellom Gray-kodeog ”naturlige” binære tall
1 1 0 1
1 0 1 1
Fra naturlig binær til Gray-kode
1 0 1 1
1 1 0 1
Fra Gray-kodetil naturlig binær
: ”exclusive or”-operasjonen
Husk: I begge konverteringer xor’esmed forrige bit i det binære tallet!
INF1040-Oppsum-23© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Det binære 2er-komplementet er lett å beregne:Ta et binært tallErstatt alle 0 med 1, alle 1 med 0 (legg merke til at vi må vite antall biter for tallrepresentasjonen)Legg til 1
Eksempel:21(10) = 0001 0101 (forutsetter 8 bit)2er-komplementet er 1110 1010 + 1 = 1110 1011,
Regne ut 53 + (–21):0011 0101 + 1110 1011 = 1 0010 0000 = 32(10)
2er-komplementet for negative heltall
Populært kalt"klokke-aritmetikk"
0 12
4
5
7-8-7
-5
-4
-3
-1
3
6-6
-2
0000 0001
0010
0011
0100
0101
0110
011110001001
1010
1011
1100
1101
1110
1111
4 biter
INF1040-Oppsum-24© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Tall med "bias"Vi skal representere tallene [–128,…,127] (8 biters tallrepresentasjon)
Vi legger en bias 128 til alle tallene, slik at vi istedenfor kan representere tallene [0,…,255] – og det er jo helt kurant
Ved addisjon kommer bias med to ganger, så vi må trekke den fra igjen
Eksempel (forutsetter 8 biters tallrepresentasjon og derfor bias 128):Vi skal addere 53 og –21.53 bias 128 = 181 = 1011 01012
-21 bias 128 = 107 = 0110 10112
181 + 107 – 128 = 101101012 + 0110 10112 - 1000 00002
= 1010 00002 = 10 * 16 = 160 = 32 bias 128
Dette prinsippet brukes for eksponenten i flytende tall
INF1040-Oppsum-25© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Binære flytende tall (forts.)
1 8 23
fortegnsbit
mantisseeksponent med bias 127
1 11 52
fortegnsbit
mantisseeksponent med bias 1023
Singleprecision
Doubleprecision
1. Ikke-lagret ledende 1 med antatt binærpunkt
1. Ikke-lagret ledende 1 med antatt binærpunkt
Mantissen er normalisert, slik at første bit alltid er 1. Derfor sparer vi plass ved ikke å lagre denne biten!
Vi legger en bias til eksponenten slik at representa-sjonen aldri er negativ!
INF1040-Oppsum-26© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Binære flytende tall - eksempel
Eksempel:
Anta at vi skal representere – 1.5, dvs – 20 * 1.5(eksempel behendig valgt slik at mantissen begynner med 1.)
Fortegnsbit: 1 (fordi tallet er negativt)
Eksponent: 0 + 12710 = 01111111
"Fraction": (1.510 – 12) = 0.510 = (2-1)10 = .1000…
Altså: 1 01111111 10000000000000000000000
1 8 23
fortegnsbit
mantisse (”fraction”)eksponent med bias 127
1. Ikke-lagret ledende 1 med antatt desimalpunkt
INF1040-Oppsum-27© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Fra lyd til signalerLydbølgene er kontinuerlige (analoge) signaler.
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 lydintensitet på et bestemt tidspunkt må ogsåkvantiseres til et endelig antall ulike verdier.
10 ms av et musikkstykke
lyd2.wav
Nye begreper:Analog til digital konvertering
Sampling og kvantiseringLydintensitet
INF1040-Oppsum-28© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
LydintensitetIntensiteten er den mengde energi som passerer gjennom en flate pr tidsenhet, og måler dette i W/m2.
Vi kan høre lyder over et stort omfang av intensiteter:fra I0 = 10-12 W/m2 , Høreterskelen til 1 W/m2 , Smerteterskelen
Oftest angir vi ikke absolutt lydintensitet
Vi angir intensiteten i forhold til høreterskelen I0Vi bruker en logaritmisk skala, decibelskalaen, forkortet dB
Logaritmen med basis 10 til et tall x, er den potensen vi må opphøye basistallet 10 i for å få tallet x.
Eksempel1: log10(100)=2 fordi 100=10*10=102
Eksempel 2: log10(1 000 000)=6 fordi 1 000 000 =106
Decibel kommer av enheten bel, oppkalt etter Alexander Graham Bell
⎟⎟⎠
⎞⎜⎜⎝
⎛=
010log10)(
IIdBβ
INF1040-Oppsum-29© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
LydtrykkHørbar lyd er trykkbølger.
Både atmosfæretrykket og trykk-amplituden P måles i Pascal (Pa=N/m2). 1 atm =101,325 Pa.
Høreterskelen er P0 = 2 x 10-5 Pa
Sammenhengen mellom I og P er også avhengig av massetettheten og lydhastigheten : I = P2/(2ρv)
Lydtrykket i dB beregnes fra trykk-amplituden P :
Faktoren 20 kommer av at 10-er logaritmen til kvadratet av et tall er 2 ganger logaritmen til tallet.
Effekten i en trykkbølge er proporsjonal med kvadratet av trykkamplituden.
⎟⎟⎠
⎞⎜⎜⎝
⎛=⎟⎟
⎠
⎞⎜⎜⎝
⎛=
010
2
010 log20log10)(
PP
PPdBβ
INF1040-Oppsum-30© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Lydens svingninger
Hvordan lyden høres ut, avhenger av hvor raske svingninger den inneholder.
Antall svingninger per sekund er frekvensen til en tone, og måles i Hz ( ≡ s-1)
Vi hører lufttrykk som svinger mellom 18 ganger per sekund og 20 000 ganger per sekund, og med en lydintensitet som er opptil 10 000 000 000 ganger høreterskelen, og denne er bare 2/10 000 000 av standard atmosfærisk trykk.
Hørselen svekkes med alderen.
Svekkelsen er ikke lik for alle frekvenser.
De ca 30 000 endepunktene for hørenervene slites / knekker.
De fleste lyder består av flere rene toner med ulik frekvens.
Øret er veldig følsomt for forandringer i frekvens (0.3% endring).
INF1040-Oppsum-31© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Lyd som sinusoider
Sinusoider er et felles navn på funksjonene cos(x) og sin(x).
Periodisk signal: et periodisk signal gjentar seg etter en viss tid.
Sinus og cosinus-funksjoner beskriver periodiske signaler.
INF1040-Oppsum-32© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Hvordan kan vi se hvilke frekvenseren lyd inneholder?
Vi bruker frekvensspekteret for å se hvilke frekvenskomponenter en lyd inneholder.
Frekvensspekteret er basert på å ta Fourier-transformentil lydsignalet
Fourier-transformen dekomponerer lydsignalet i sinus- og cosinuskomponenter med ulik frekvens og ser hvor sterkt bidrag hver komponent har.
INF1040-Oppsum-33© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Diskret representasjon av kontinuerlig signalAlle lydsignaler må samples og kvantiseres for å kunne lagres digitalt.
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 tiden t, y(t) må så kvantiseres for å kunne lagres (f.eks. til un-signed byte som gir verdiene 0-255).
-1
0
1
0 0,001 0,002 0,003
tid, sekunder
Amplitude
INF1040-Oppsum-34© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Samplingsintervall og samplingsfrekvensSampling er første skritt i en digitalisering
Tiden diskretiseres, og vi tar bare vare på en sekvens av amplitudeverdien y(t) ved bestemte diskrete tidspunkter.
Sekvensen y[n], for n = 0,1,2,3, …, N-1 er en diskret-tid(eller digital) representasjon av det kontinuerlige signalet y(t).
Tidsavstanden mellom to sampler, gitt i sekunder (eller millisekunder) kalles samplingsintervallet.
Hvis samplingsintervallet er det samme mellom alle sampler sier vi at vi har en uniform sampling.
Samplingsfrekvens, (også kalt samplingsrate) angis i Hz, og er det inverse av samplingsintervallet.
Samplingen gjøres av en AD-omformer ved at lydstyrken/mikrofonspenningen holdes i et lite tidsintervall.
INF1040-Oppsum-35© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Uniform kvantiseringAnta at spenningen varierer mellom ymin og ymax.
Anta at vi deler området mellom ymin og ymaxi N kvantiseringsnivåer.
Da er B = {b0, b1, …, bN} de N+1 beslutningsgrensenesom bestemmer hvilket nivå en målt spenning y(t) havner i.
Vi har N forskjellige outputverdier eller rekonstruksjonsnivåer, Q = {q1, q2, …, qN}.
Hvis alle kvantiseringsnivåene har lik bredde, Δ, kalles dette uniform kvantisering.
Illustrert for N = 4 nivåer med lik bredde Δ.
ymin ymax
b4b3b2b1b0
q4
q3
q2
q1 Δ
INF1040-Oppsum-36© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
DigitaliseringEt kontinuerlig lydsignal er en reell funksjon y(t) av tiden t.
Digitaliseringsprosessen består av tre enkle steg:
1. Bestem samplingsintervallet Ts , og ta N diskrete sampler y[n], n=0,1,2,3, …, N-1.
2. Skalér verdien av alle samplene, for eksempel til 0-255.
3. Kvantiser verdiene av de skalerte samplene til nærmeste heltallsverdi.
Legg merke til at vi ikke trenger å ta vare på verdien av tiden eller verdien av n for hvert sampel.
Så lenge vi lagrer dem etter hverandre og kjenner Ts, er tidspunktet for hvert sampel implisitt gitt.
INF1040-Oppsum-37© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Nyquist-teoremetVi har et fundamentalt spørsmål:
Hvor ofte må vi måle lydintensiteten i et gitt lydsignal?
Harry Nyquist og Claude Shannon ga oss følgende teorem:
Anta at et analogt signal er bånd-begrenset, dvs. at det ikke harsinuskomponenter med frekvenser over et maksimum fmax. Signalet kan da rekonstrueres eksakt fra de samplene vi har,
hvis samplingsfrekvensen fs = 1/Ts er større enn 2fmax.
2fmax kalles Nyquist raten.
Hvis vi sampler med en samplingsfrekvens fs som er minst 2fmax, så sampler vi i henhold til Nyquist-teoremet.
Anta at vi skal sample lyd slik at vi kan rekonstruere alle hørbare frekvenser (opp til 20 000 Hz) uten noen feil eller forvrenging. Hva er fs?
INF1040-Oppsum-38© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
AliasingAliasing betegner fenomenet at en sinusoid ved for lavsamplingsrate gir opphav til samme diskrete signal som en sinusoid med lavere frekvens.
Sampler en f =125 Hz sinus med fs= 1,5*f = 187,5 Hz.
Dette gir f.eks sampler ved t = 0,002og ved t = 0,733 (stiplede røde piler).
Gir sinus med fa= 62.5 Hz, (stiplet kurve i figuren).
Vi har fått en ”aliasing”.
fa = fs – f når f < fs < 2 * f
fs=1 kHz gir fs/f = 1 000/125 = 8 sampler pr periode . Dette er en 4X oversampling (svarte piler i figuren).
-1
0
1
0 0,001 0,002 0,003 0,004 0,005 0,006 0,007 0,008
tid, sekunder
Am
plitu
de
125 Hz 62,5 Hz
INF1040-Oppsum-39© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Avspilling
Avspillingsprogrammet må fylle ut med lydverdier mellom hvert sampel, dvs. f.eks. mellom tidspunkt t0 og tidpunkt t1.
Dette kan gjøres på flere måter (algoritmer), f.eks. ved
Sette inn nuller
Sette inn kopier av forrige sampel
Lineær interpolasjon
Høyere-ordens interpolasjon
t0 t1 t2 t3 t4 t5 t6
INF1040-Oppsum-40© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Maskering av lyd
Maskering: “Én lyd er ikke hørbar samtidig med en annen lyd”
1. Simultan maskering
– Støy kan maskere en tone
– En tone kan maskere støy
– Støy kan maskere støy
2. Tids-maskering
» Pre-maskering (ca 2 ms)
» Post-maskering (ca 100 ms)
INF1040-Oppsum-41© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Egenskaper ved synetVi kan se lysintensiteter over et stort intervall, 10 dekader
”Blendings-intensiteten” er 1010 ganger så høy som den svakeste intensitet vi kan oppfatte.
Vi ser bare et visst antall nivåer samtidig : - den minste gråtone-forskjellen vi kan oppfatte er ca 2%=> ca 50 forskjellige gråtoner, men mange flere farger.
Når øyet skifter fokus til et annet sted i bildet som har et annet bakgrunnsintensitetsnivå, tilpasser øyet seg dette og ser fint lokale intensitets-forskjeller.
INF1040-Oppsum-42© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Objekt-bilde relasjonen
Objekt-bilde relasjon: 1/s + 1/s’ = 1/f – Mer praktisk:
Forstørrelse: m = y’/y = s’/s
Hvor stort blir bildet? y’ = ys’/s.
Setter vi inn det uttrykket vi har for s’ ovenfor, finner vi et nyttig uttrykk for størrelsen på bildet i fokalplanet:
( )fsfss−
='
y
y’F1
F2
f fs s’
( )fsfyy−
='
INF1040-Oppsum-43© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Hvor små detaljer kan vi se med øyet?Anta D=2.5 mm, og λ = 550 nm,
Rayleigh’s kriterium sier at vinkeloppløsningen er gitt ved
For små vinkler er sin(θ) = θ, når vinkelen θ er gitt i radianer.
Omformer vi θ fra radianer til grader, ser vi at oppløsningen er
Vi sa tidligere at vi kan se 60 linjer per grad.
Nå har vi altså sett at denne erfaringen stemmer med teorien.
43
9107.2
105.21055022.122.1sin −−
−
=== xx
xxDλθ
gradx601180107.2 4 ≈= −
πθ
INF1040-Oppsum-44© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Viktige begreperEt 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.
665565
999333
111133
443442
346773
463751
x
y
Merk: origo (0,0) er ofte oppe i venstre hjørne i bildet.Det første pikslet kan ha indekser (0,0) eller (1,1)
INF1040-Oppsum-45© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Sampling Bildet varierer i intensitet med ulike frekvenser.
Antar bildet inneholder av et endelig antall frekvenser.
En høy frekvens beskriver et mønster som varierer hurtig i bildet, lav frekvens noe som varierer langsomt.
Nyquist-kriteriet: Samplingsraten må minst være dobbelt såstor som den høyeste frekvensen i bildet.
Dette betyr: Vi må sample minst to ganger pr. periode av det objektet som varierer hurtigst i det kontinuerlige bildet.
Det digitale bildet må altså ha minst to piksler pr periode for den minste periodisk struktur i det kontinuerlige bildet.
I tillegg må vi ha god nok optikk til å avbilde slike strukturer !
INF1040-Oppsum-46© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Digitalisering i tre enkle steg
Et kontinuerlig bilde er en reell funksjon f(x,y) av to (eller flere) reelle og kontinuerlige variable.
1. 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.
3. 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.
INF1040-Oppsum-47© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
RGB-kuben
0,0,0
0,0,1
1,0,0
0,1,0
svart
magenta
cyanblå
grønn
rød
hvit
gul
Gråtonebilder: r = g = b
Merk: RGB-verdiene er normaliserte slik at de ligger mellom 0 og 1
INF1040-Oppsum-48© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
CMYK-fargemodellen
CMYK-modellen er subtraktiv (start med hvitt, trekk fra farger).
Alternativ til r,g,b som basisfarger er cyan, magenta, yellow(CMY-modeller) .
C = 1 - R eller 255 - R hvis 8-bits ikke-normaliserte bilder
M = 1 - G 255 - G
Y = 1 - 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.
På ulike printere ser også de rene fargene ulike ut når de skrives ut, så fargebilder forvrenges ofte ved utskrift.
INF1040-Oppsum-49© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
YCbCr-modellenDette er fargemodellen for digital TV og video!
Y er luminans (luma)
Cb er blå minus luma (B-Y)
Cr er rød minus luma (R-Y).
YCbCr er kun digital, mens RGB kan være både analog og digital.
MPEG-kompresjon (i DVD’er, digital-TV og video CD’er) er kodet i YCbCr
digitale videokameraer (MiniDV, DV, Digital Betacam, osv.) gir et YCbCr signal over en digital link som FireWire eller SDI.
Den analoge ”tvillingen” til YCbCr er YPbPr.
INF1040-Oppsum-50© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Hue, Saturation, Intensity (HSI)
hvit
rød
gulgrønn
blå magenta
cyan
svart
H
S
I
Hue: ren farge - gir bølgelengden i det elektromagnetiske spektrum.
H er vinkel og ligger mellom 0 og 2π:Rød: H=0, grønn: H= 2π/3, blå= 4π/3, gul: H=π/3, cyan= π, magenta= 5π/3,
Hvis vi skalerer H-verdiene til 8-bits verdier vil Rød: H=0, grønn: H= 85, blå= 170, gul: H=42, cyan= 127, magenta= 213.
INF1040-Oppsum-51© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Fargebilder og fargetabellerRGB kan lagres med like mange biter for r, g, b, f.eks (8+8+8)
Selv 3+3+3 = 9 biter gir oss 8x8x8=512 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 512 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 biter og fargetabeller.
Hver rad i tabellen beskriver en r, g, b-farge med 24 biter, og tabellen inneholder de 256 fargene som best beskriver bildet.
I bilde-filen ligger pikselverdiene som tall mellom 1 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 pikselen.
INF1040-Oppsum-52© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Optimal digital videoDigital 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 Rayleigh-kriteriet !
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 :
1. beregne gjennomsnittsverdien i hver rute
2. skalere slik at den passer innenfor det tall-området vi skal bruke
3. kvantiserer verdiene til nærmeste heltalls verdi i tall-området
Bilde-frekvensen må være høy nok (50-60 Hz) til å fange opp all den tids-informasjon som vi er i stand til å oppfatte.
INF1040-Oppsum-53© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Chroma 4:4:4, 4:2:2, 4:1:1 eller 4:2:0
Subsamplingen i YCbCrbetegnes med talltrippelet 4:n:n
n angir hvor mange av 4 originale piksler i Cb og Cr som faktisk sendes.
8x8 piksler er en "blokk" i et videobilde.
En blokk er grunnsteinen i JPEG-kompresjonav digitale bilder.
JPEG bruker 4:2:0
INF1040-Oppsum-54© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
MakroblokkerVideostandarden H.261 bruker en ”makroblokk” på 16 x 16 piksler i intensitets-komponenten Y, en 8 x 8 blokk i Cb og en 8 x 8 blokk i Cr.
6 stk 8x8 blokker gir oss all informasjon fra en makroblokk på 16 x 16 piksler i bildet.
En makroblokk betegnes med MB
dette har ikke noe med forkortelsen for MegaByte å gjøre.
Med ordlengde 8 bit vil en MB inneholde 512 byte, altså ½ KB.
INF1040-Oppsum-55© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Inter kontra intraMen med jevne mellomrom må vi kode virkelige bilder, ikke bare prediksjonsfeil. Det samme gjelder hvis prediksjonsfeilen blir for stor. Dette kalles intra mode.
Bilde 4 er predikert fra bilde 1,
bilde 2 og 3 er predikert både forover og bakover fra bilde 1 og 4
Bildene kodes i rekkefølgen 1 4 2 3 7 5 6
1 kodes direkte (intra),
resten kodes som prediksjonsfeil (inter).
INF1040-Oppsum-56© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Bevegelses-estimeringPrediksjonen blir bedre hvis vi kan kompensere for bevegelse.
Gjøres for hver makroblokk i det bildet vi skal predikere.
Vi søker gjennom et referansebilde både foran og bak i sekvensen
» til vi finner den makroblokken som ligner mest.
Undersøker om makroblokkene må forskyves
Maksimum forskyvning er 15 piksler.
Estimering for hver makroblokk
beskriver forflytning med få vektorer
» istedenfor feil i mange piksler.
Forskjellige video standarder håndterer dette problemet påforskjellige måter.
INF1040-Oppsum-57© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
To representasjoner for bilderDet er to fundamentalt forskjellige måter å representere et bilde på:
1. 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
1. 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.).
INF1040-Oppsum-58© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
KompresjonKompresjon kan deles inn i tre steg:
Transform - representer sekvensen på en mer kompakt måte.Kvantisering - her gjøres en avrunding.Koding - her lages og brukes kodeboken.
Kompresjons kan gjøres
Eksakt / tapsfri (”loss-less”)» Her kan vi rekonstruere den originale meldingen eksakt.
Ikke-tapsfri (”lossy”)» Vi kan ikke rekonstruere eksakt. » Resultatet kan likevel være ”godt nok”.
Det finnes en mengde ulike metoder for begge kategorier kompresjon.
inndata transform kvantisering koding utdata
INF1040-Oppsum-59© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Kompresjon
Mange metoder er basert på å representere en tekst/bilde/lydsignal påen annen måte, altså transformer av original-dataene.
Differansetransform
løpelengder/run-length,
Hvis vi kvantiserer original-dataene, så kan ikke dette reverseres.
Koding bygger ofte på sannsynlighetsfordelinger,
dvs normaliserte histogrammer
Transformer og koding er alltid reversible.
Kvantisering gir alltid et tap av presisjon.
inndata transform kvantisering koding utdata
INF1040-Oppsum-60© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Ulike typer redundansPsykovisuell/psykoakustisk redundans
Det finnes informasjon vi ikke kan se eller høre (se kapittel 9).
Interbilde redundans
Det er en viss likhet mellom bilder som kommer etter hverandre i en sekvens
Vi koder første bilde i sekvensen, og deretter bare differanser (kapittel 17).
Intersampel redundans
Nabo-symboler, - amplituder, -piksler ligner på hverandre eller er like.
Eks: 00001116611 kan ”run-length” kodes som (0,4),(1,3),(6,2),(1,2)
Kodings-redundans
Gjennomsnittlig kodelengde minus teoretisk minimum.
Eks: 5535552635535 - Huffman-koding bruker færrest bit på å kode 5-tallet, som forekommer ofte, og flere bit for 6-tallet. Hvor godt er dette?
INF1040-Oppsum-61© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Kompresjonsrate og redundans
Vi vil lagre en gitt informasjonsmengde ved bruk av færre data. Redundante data må bort.
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:
”percentage removed” = 100 (1-c/i) %
ic
CRR −=−= 111
INF1040-Oppsum-62© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
DifferansetransformGitt en linje i bildet med gråtonerx1,.....xN , 0 ≤ xi ≤ 2b-1.
Transformer (reversibelt) til
x1, x2-x1, x3-x2,......,xN-xN-1.
Vi trenger nå b+1 bits hvis vi skal tilordne like lange binære koder til alle mulig verdier.
Men, i differansehistogrammet vil de fleste verdiene samle seg rundt 0, f.eks. mellom -8 og 8.
Derfor er det ikke slik at en naturlig bit-koding av differansene er det optimale.
INF1040-Oppsum-63© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Løpelengde-transform (run-length)Ofte inneholder bildet objekter med lignende gråtoner, f.eks. 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:
333333555555555544777777 (24 byte)
Når tallet 3 forekommer 6 ganger etter hverandre, trenger vi bare lagre tallparet (3,6).
Tilsammen trenger vi her 4 tallpar, (3,6), (5,10), (4,2), (7,6)altså 8 tall til å lagre hele sekvensen 24 tall ovenfor.
Hvor mange biter vi bruker pr. tall, avhenger av den videre kodingen.
INF1040-Oppsum-64© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Løpelengder i binære bilder
I to-nivå bilder trenger vi bare å angi løpelengden for hvert ”run”, forutsatt at vi vet om linjen starter med et hvitt eller et svart run.
Vi trenger kodeord for EOL og EOI.
Run-lengde histogrammet er ofte ikke flatt. Benytter da en kode som gir korte kode-ord til de hyppigste run-lengdene.
En standard (CCITT) Huffmann kode basert på dokument-statistikk brukes for dokument-overføring pr fax.
Egen kodebok for svarte og hvite runs.
Mer effektiv dersom kompleksiteten er lav.
INF1040-Oppsum-65© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Koding
Et alfabet er mengden av alle mulige symboler (eks. gråtoner)
Hvert symbol får et kode-ord, til sammen er de en kode-bok.
Koding skal være reversibel.
(Fra koden skal vi kunne rekonstruere det originale symbolet).
Unikt dekodbare koder har den egenskap at en mottatt sekvens av kode-ord kan dekodes på en og bare en måte.
INF1040-Oppsum-66© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Naturlig binær-kodingNaturlig binær-koding:
Alle kode-ord er like lange.
Kjenner vi noen eksempler på dette?
Eks: vi har 8 mulige verdier
Naturlig binærkoding er bare optimal hvis alle verdiene i sekvensen er like sannsynlige.
111110101100011010001000Kode ci
s8s7s6s5s4s3s2s1Symbol
87654321Symbol nr.
INF1040-Oppsum-67© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Koder med variabel lengdeFor ulike sannsynligheter er koder med variabel lengde påkode-ordene bedre
Hyppigere symboler kortere kode-ord.
Sjeldne symboler lengere kode-ord.
Dette var forretningsideen til Samuel Morse
De vanligste symbolene i engelsk tekst er e, t, a, n, o, i,…
- . - -Y-T- - -O. - - -J.E
- . . -X. . .S- .N. .I- . .D
. - -W. - .R- -M. . . .H- . - .C
. . . -V- - . -Q. - . .L- - .G- . . .B
. . -U. - - .P- . -K. . - .F. -A
INF1040-Oppsum-68© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Hva er et histogram?Anta at vi har et gråtonebilde med m×n piksler
hvert piksel har ordlengde b bit => vi har 2b mulige gråtoner.
Ser på gråtonen i hvert piksel, teller opp hvor mange piksler det finnes for hver pikselverdi, får vi et gråtone-histogram.
Histogrammet h(v) er en tabell over antall forekomster av verdien v.
1232
2114
3545
1231
1 2 3 4 5
INF1040-Oppsum-69© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Mer om histogrammet
Summen av h(v) for v fra 0 til 2b – 1, er antall piksler i bildet, mxn.
Dividerer vi alle h(v) med antall piksler i bildet, får vi et normalisert histogram, p(v).
p(v) er sannsynligheten for at vi finner pikselverdien vhvis vi velger et vilkårlig piksel i bildet.
Summen av alle p(v) for v fra 0 til 2b – 1 er 1.
(summen av alle sannsynlighetene for at vi finner en pikselverdi mellom 0 og 2b – 1).
INF1040-Oppsum-70© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Gjennomsnittlig antall biter pr. symbol
Vi konstruerer en kode c1,....cN
slik at symbol si kodes med ci.
bi er lengden i bit av kodeordet ci.
Gjennomsnittlig antall biter pr. symbol for denne koden er:
Entropien H kan gi oss en nedre grense for hvor mange biter vi gjennomsnittlig trenger pr. sampel (hvis vi bare ser på hvert symbol for seg, altså bare kodingsredundans).
∑=
=+++=N
iiiNN pbpbpbpbR
12211 ...
INF1040-Oppsum-71© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Informasjons-innholdet i EN hendelseVi definerer informasjonsinnholdet I(si) i hendelsen si ved
log2(x) er 2-er logaritmen til x
Hvis log2(x) = b så er x = 2b
Eks: log2(64) = 6 fordi 64 = 26 (26 = 2*2*2*2*2*2 )
log2(8) = 3 fordi 8 = 2*2*2 = 23
Har ikke log2 på kalkulatoren, hjelp! log2 (tall) = log10(tall) / log10(2)
log2(1/p(si)) gir oss informasjonsinnholdet i den hendelsen det er at symbolet si forekommer en gang, uttrykt i bit.
))((log)(
1log)( 22 ii
i spsp
sI −==
INF1040-Oppsum-72© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Gjennomsnittlig informasjon pr symbol: entropiVi definerte informasjonsinnholdet I(si) i hendelsen si ved
Hvis vi tar gjennomsnittet over alle N symboler si i alfabetet, får vi gjennomsnittlig informasjon pr. symbol, som er entropien, H:
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
∑=
−=N
iii spspH
02 ))((log)(
))((log)( 2 ii spsI −=
INF1040-Oppsum-73© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Shannon-Fano kodingEn enkel metode:
Vi lager et histogram over symbolene.Sorterer symbolene etter hyppighet.Deler symbolene rekursivt i to omtrent like store grupper
» fortsetter dette til hver gruppe er ett symbol.
Tilordner ett bit til hver gren i treet» 1 til høyre, 0 til venstre.
Traverser treet ”fra rot til blad”» Dette gir koden for hvert symbol
Eksempel: ”HALLO”Koden er unikt dekodbar,
Men det finnes flere likeverdigeløsninger. 10Totalt antall biter
31112,321O
31102,321A
2102,321H
201,322L
Antall bit
Kodeord
-log2(pi)Antall
Symbol
0 1
H, A, O (3)L (2)
0 1
H, O (2)H (1)
0 1
A (1) O (1)
H, A, L, O (5)
INF1040-Oppsum-74© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Framgangsmåte - Huffman-koding
Gitt en sekvens med N symboler:
1. 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.
3. Gjenta 2 til det bare er to grupper igjen.
4. Gi kodene 0 og 1 til de to gruppene.
Kode 0 til den mest og 1 til den minst sannsynlige av de to
5. Traverser bakover, og legg til 0 og 1 i kodeordet for de to minst sannsynlige gruppene i hvert steg.
INF1040-Oppsum-75© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Eksempel - Huffman-kodingGitt 6 begivenheter A, B, C, D, E, F med sannsynligheter
0.050.10.120.130.30.3Sannsynlighet
FEDCBABegivenhet
Slå sammen de to minst sannsynlige, slåogså sammen sannsynligheten deres
0.15
Finn så de to som nå er minst sannsynlige, og slå dem sammen påsamme måte
0.25
0.6
0.4
Fortsett til det er bare to igjen
INF1040-Oppsum-76© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Eksempel - Huffman-kodingGitt 6 begivenheter A, B, C, D, E, F med sannsynligheter
0.050.10.120.130.30.3Sannsynlighet
FEDCBABegivenhet
0.15
0.25
0.6Kode 0
0.4
Kode 1
0 1
Gå baklengs gjennom strukturenog tilordne 0 eller 1 til hver gruppe.(F. eks. kode 0 til den mest sannsynligog kode 1 til den minst sannsynlige)
0 1
0 1
0 1
INF1040-Oppsum-77© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
KodebokenDette gir følgende kodebok
Med sannsynlighetene 0.3 0.3 0.13 0.12 0.1 0.05 blir gjennomsnittlig antall bit pr. symbol (R) for denne koden:
Den ideelle binære kode-ord lengden for symbol si er bi = - log2(p(si))
Siden bare heltalls ordlengder er mulig, er det bare
for heltall k som tilfredsstiller dette.
4.234.026.0...1
2211 =∗+∗==+++= ∑=
N
iiiNN pbpbpbpbR
1111101011000100Kode
FEDCBABegivenhet
kisp21)( =
INF1040-Oppsum-78© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Lempel-Ziv-kodingPremierer 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 (f.eks 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.
INF1040-Oppsum-79© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Ikke-tapsfri JPEG-kompresjonBildet 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 1D-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 100 (prøv xv eller gimp).
For de spesielt interesserte: dette gjelder den gamle JPEG-standarden, ikke JPEG 2000, som bruker ”wavelets”.
INF1040-Oppsum-80© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Sikring av dataKritiske 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
INF1040-Oppsum-81© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Kryptering av data
Formål: Gjøre data som sendes eller lagres uleselige for uvedkommende
Utfordringer: Finne tilstrekkelig gode krypterings- og dekrypteringsalgoritmerGjøre det praktisk umulig åfinne krypteringsnøkkelen (“knekke koden”)Administrere krypteringsnøkler
Data(klartekst)
Krypterings-algoritme
Dekrypterings-algoritme
Krypterte data(chiffertekst)
Krypteringsnøkkel
Alice, Bob & Wendy
Krypteringsnøkkel
Data(klartekst)
INF1040-Oppsum-82© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Symmetrisk krypteringKryptering av klartekst P med nøkkel k gir chiffertekst C:
Ek(P) → C
Dekryptering av chiffertekst C med samme nøkkel k gir
klartekst P:
Dk(C) → P
dvs. Dk(Ek(P)) → P
Kommunikasjonspartnerne deler en hemmelighet:
Nøkkelen
Fordel: Brukbar effektivitet
Problem: Distribusjon (og hemmeligholdelse) av nøkkelen
INF1040-Oppsum-83© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Stream-kryptering vs. blokk-kryptering
Stream-kryptering krypterer en og en bit etterhvert som de kommer
Blokk-kryptering opererer på en blokk av biter – typisk fra 64 til 384 – ad gangen
INF1040-Oppsum-84© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Bruksmåter (”modes of operation”)For å kryptere bitstrømmer lengre enn blokklengden, bakes blokk-krypteringen inn i ulike bruksmåter (”modes ofoperation”):
Electronic Code Book – ECB
Cipher feedback – CFB
Cipher Block Chaining – CBC
Output feedback – OFB
Counter mode – CTR
Noen av disse utfører ”diffusion” utenfor blokklengden
Ulike egenskaper med hensyn på sikkerhet og effektivitet
For detaljer, se de følgende lysarkse også http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation
Derfor snakker vi for eksempel om AES-CBC
INF1040-Oppsum-85© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Asymmetrisk krypteringSymmetrisk kryptering har ett stort problem:NøkkeladministrasjonAsymmetrisk kryptering arbeider med et nøkkelpar k1 og k2 som er matematisk relatert til hverandre –den ene nøkkelen brukes for kryptering, den andre for dekrypteringKryptering av klartekst P med nøkkel k1 gir chiffertekst C:Ek1(P) → CDekryptering av chiffertekst C med nøkkel k2 gir klartekst P:Dk2(C) → PForenkler nøkkeladministrasjonen, men algoritmene er tunge!
Krypterings-algoritme
Dekrypterings-algoritme
Kryptert bitstrøm
Klartekst bitstrøm
Klartekst bitstrøm
INF1040-Oppsum-86© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
RSA-algoritmenRSA-algoritmen - hvordan den virker
La meldingen P være et tall mindre enn NKryptering: C = EDe(P) = Pe % N Dekryptering: P = EDd(C) = Cd % N N og e er den offentlige nøkkelend er den private nøkkelenN, 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-1)(q-1) e er valgt slik at e*d % (p-1)(q-1) = 1
Eksempel: p = 3, q = 5, d = 7, e = 23, N = 15 Meldingen P er tallet 3:Kryptering: C=ED23(3) = 323 % 15 = 12 Dekryptering: P= ED7(12) = 127 % 15 = 3
Hvis p og q velges slik at N blir tilstrekkelig stor (mer enn 100 siffer), er det i praksis ikke mulig (selv med datamaskin) å finne d, selv om du kjenner e og N.
INF1040-Oppsum-87© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Praktisk bruk av asymmetrisk kryptering (1)Alice vil sende en hemmelig melding til Bob
På forhånd har Bob fått generert et nøkkelpar Bobk1 og Bobk2
Bobk1 offentliggjør han som sin offentlige nøkkel
Bobk2 holder han strengt hemmelig som privat nøkkel
Alice krypterer meldingen med Bobk1, altså Bobs offentlige nøkkel
Bob er den eneste som kan dekryptere meldingen, fordi bare han er i besittelse av Bobk2, den tilhørende private nøkkelen
INF1040-Oppsum-88© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Praktisk bruk av asymmetrisk kryptering (2)Alice vil sende en melding til Bob på en slik måte at Bob kan forsikre seg om at den virkelig er fra henne
På forhånd har Alice fått generert et nøkkelpar Alicek1 og Alicek2
Alicek1 offentliggjør hun som sin offentlige nøkkel
Alicek2 holder hun strengt hemmelig som privat nøkkel
Alice krypterer meldingen med Alicek2, altså sin egen private nøkkel
Bob ser at meldingen trolig kommer fra Alice, og dekrypter med Alicek1, dvs. hennes offentlige nøkkel.Går det bra, kan han gå ut fra at meldingen virkelig kommer fra Alice.
INF1040-Oppsum-89© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
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
INF1040-Oppsum-90© Institutt for informatikk – Gerhard Skagestein/Fritz Albregtsen 30. november 2005
Takk for oppmerksomheten !Det har vært en fornøyelse å forelese for dere!Vi har gitt dere
14 forelesningerEt 275 siders kompendiumTil sammen 534 lysark
Noe av dette ser dere sikkert nytten av allerede.Noe vil dere senere finne at dere har bruk for.Men det er sikkert noe dere ikke kan …- og noe dere ikke vet at dere ikke kan …
“As we know - there are known knowns. There are things we know we know.
We also know - there are known unknowns. That is to say we know there are some things - we do not know.
But there are also unknown unknowns, the ones we don't know - we don't know.”
D.H. Rumsfeld, DoD news briefing, — Feb. 12, 2002.
Vi står fortsatt til disposisjon og svarer på spørsmål, helt fram til eksamensdagen.Lykke til med eksamen !
Ken Musgrave, ”Blessed State” (1988)