Titel: Om fingeraftryk – komprimering med ... - of Arne Mejlholm
Titel: Om fingeraftryk – komprimering med ... - of Arne Mejlholm
Titel: Om fingeraftryk – komprimering med ... - of Arne Mejlholm
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