Der er et væld af billedformater - måder at gemme billeder på -, hvor .jpeg er det så absolut mest populære format, men også formater som .bmp, .gif og .png er meget udbredte. Derudover er der en række mindre kendte formater til web, samt diverse formater der bruges af forskellige kameratyper og billedprogrammer.
Meget få formater er ukomprimerede som bmp - bitmap. Her er de enkelte farvekoder gemt løbende efter hinanden, så de direkte læses af eks. grafikkortet og vises på en skærm. Stort set alle andre formater komprimere billedets data, da det ellers hurtigt fylder mange megabytes. Der skelnes mellem komprimeringsteknikker, hvor data blot gemmes på en optimal måde uden at der mistes information og komprimering med tab. Billedprogrammers formater og visse kameraers benytter sig stort set kun eller primært af komprimering uden tab, mens webformater altid bruger begge teknikker, så der genereres mindst mulig datatrafik over nettet.
Komprimering uden tab
Strategier hvor data pakkes uden tab kaldes på engelsk lossless og vi kender dem især fra zipfiler. Ulempen ved at komprimere på denne måde er udelukkende, at der skal bruges tid/processorkraft på at pakke og udpakke data.
Den grundlæggende strategi er prefix code, hvor man omkoder data, så der ikke er koder for alle mulige værdier, men kun for de værdier, der rent faktisk bruges i en fil. Skal der eks. gemmes et billede med kun 8 farver, så er det kun nødvendigt med koder for disse og ikke for alle andre mulige farver. Dermed skal bruges 3 bit per pixel i stedet for helt op til de 16,7 milioner, der bruges ved True Color! En udbredt udgave af prefix code er de tekst-webfarver der kan tildeles i HTML.
Prefix Code kan forbedres med Huffman Kodning, hvor de værdier der optræder flest gange gemmes med det mindst mulige binære tal. Her tildeles også kun "prefix koder" til de værdier der rent faktisk bruges, men derudover bruges den mindst mulige binære værdi at gemme den værdi, der optræder hyppigst, næstmindste til den næsthyppigste osv. Det kan der spares 10-30% på pladsen alt efter hvor skævt værdierne fordeler sig.
Tone | Blå | Hvid | Brun | Grøn | Gul | Rød |
3 bit Præfix kode | 001 | 010 | 011 | 100 | 101 | 111 |
Huffman kode | 1 | 011 | 010 | 001 | 0001 | 0000 |
Eksempel på komprimering af tegning med 6 farver, hvor Blå optræder hyppigst, så hvid osv.//
Lav selv Huffman Coding
Læs og lav opgaver om Huffman Coding - på engelsk ulpgc.es - Huffman Coding
Komprimering med tab
Den mest oplagte måde at nedjustere billedfilers størrelse på, er at nedjustere farveopløsning og rumlig opløsning. - Det er dog også den mest problematiske, da det også medfører en dårligere billedkvalitet.
I stedet for, arbejder formater som Jpeg med perceptuel codning, hvor der udelades detaljer, der ikke er synlige for det menneskelige øje. Det udnytter bl.a. at det menneskelige øje er bedst til at se forskelle i lysniveau, så der kan spares på mængden af informationer om farveniveauet og at det menneskelige syn har svært ved at skelne meget lyse farver.
Præsentation af billedformater
Del jer op på holdet i grupper af 2/3 personer og lav hver jeres præsentation af et billedformat. I kan holde oplægget i matrixgrupper eller for klassen. I stigende sværhedsgrad er de formater I bør komme omkring bmp, gif, png, jpg… Inddel jer efter, hvor udfordrende en opgave I vil have. Er mange på holdet kan I også vælge Gimps eget format og jeres kameraers formater.
Præsentation
- Hvor/hvornår bruges formatet primært og hvad er det velegnet til (foto, web, tegning, animation…)?
- Hvordan gemmer/komprimerer formatet i hovedtræk billeder?
- Hvordan ser data ud når billedet åbnes i en Binary viewer og/eller en Hex editor? Obs: - brug gerne samme billede som eksempel!
I freewaren HexEdit kan I få hjælp til at præsentere data i en billedfil, da den udpeger hvilke dele der er headere m.m. i forskellige filtyper - bmp, gif & jpeg. - Åbn en billedfil, klik på 'Template' så på 'Open file type' og vælg filtypen - se screendump!