15.07.2013 Views

Titel: Om fingeraftryk – komprimering med ... - of Arne Mejlholm

Titel: Om fingeraftryk – komprimering med ... - of Arne Mejlholm

Titel: Om fingeraftryk – komprimering med ... - of Arne Mejlholm

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

6. Komprimeringsteknikker 6.2 Huffman kodning<br />

6.2 Huffman kodning<br />

Følgende er hovedsageligt baseret p˚a kilderne [34], [12], [7] og [13]. Da vi<br />

i vores eget billedformat, se afsnit 5.5, gerne vil have filen til at fylde s˚a<br />

lidt som muligt, har vi valgt at komprimere filen ved hjælp af Huffman<br />

koding. Hvis man gemmer data i ASCII 2 tegntabellen fylder alle tegn det<br />

samme. Dvs.at man har en fast længde til at repræsenter et tegn. Vores<br />

problem er, hvis repræsentationen af tallet 0 og 255 (0 og 255 er henholdsvis<br />

repræsentationen af sort og hvid) fylder det samme som alle andre tal, vil vi<br />

ikke opn˚a en væsentlig <strong>komprimering</strong> ved udelukkende at bruge wavelets 3<br />

Derfor vil vi bruge Huffmans metode til at repræsentere disse tal for at opn˚a<br />

en bedre <strong>komprimering</strong>.<br />

I 1950’erne stillede Claude Shannon og R.M. Fano sig selv spørgsm˚alet:<br />

Ville det ikke være bedre, hvis hyppigt fremkommende tegn havde en mindre<br />

længde og mindre hyppige en større længde?. De udviklede den første<br />

<strong>komprimering</strong>salgoritme efter dette princip, i 1950. Allerede i 1951 udgav<br />

D.A. Huffman en artikel hvori han forbedrede Shannon-Fano algoritmen, og<br />

Huffman algoritmen vandt hurtigt indpas [12].<br />

6.2.1 Princippet bag Huffman kodning<br />

I den traditionelle ASCII kode vil hvert tegn best˚a af 8 bit, da man i ASCII<br />

bruger en fast størrelse for alle tegn. Man kan derfor i ASCII, <strong>med</strong> den faste<br />

størrelse af 8 bit pr. tegn, have 256 tegn, hvilket svarer til 2 8 tegn. Hvorimod<br />

Huffman kodning tildeler hvert tegn et variabelt antal bit afhængig af deres<br />

hyppighed. Derved opn˚as betragtelige reduktioner i størrelsen af den samlede<br />

fil.<br />

Udgangspunktet er at en fil best˚ar af en række tegn, hvor hvert tegn<br />

best˚ar af en samling bits. Antallet af bits, der skal repræsentere et tegn,<br />

afhænger af hvor mange tegn, der ialt skal repræsenteres. F.eks. vil man <strong>med</strong><br />

1 bit kunne repræsentere 2 tegn. Et tegn for værdien 0 og et for værdien 1.<br />

Ligeledes kan man <strong>med</strong> 2 bit repræsentere 4 tegn, hvilket svarer til 2 2 , som<br />

kan ses p˚a nedenst˚aende tabel.<br />

første tegn: 00 andet tegn: 01<br />

tredje tegn: 10 fjerde tegn: 11<br />

Mere generelt kan 2 n tegn repræsenteres ved brug af n bit.<br />

2 American Standard Code for Information Interchange.<br />

3 Efter wavelet transformationen er der ikke opn˚aet nogen særlig <strong>komprimering</strong>, men<br />

outputfilen best˚ar hovedesagligt af 0 værdier, se afsnit 6.5.<br />

47

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!