Datakompression (består af processerne datakomprimering og datadekomprimering) er metoder man anvender indenfor computerteknologi til at få datamængder til at fylde mindre i perioder. Man kan komprimere enkelte filer såvel som hele samlinger af filer. Man "pakker filer", som det hedder i visse kredse. Man kan også på en gang komprimere indholdet af al data på et eller flere datalager-enheder (fx harddiske). Datalager-kapacitet er en konkurrenceparameter, så industrien er generelt interesseret i at data fylder så lidt som muligt. På trods af at målet er at få data til at fylde mindre, kan man i sjældne tilfælde risikere at få det modsatte resultat. Komprimering optager således megen interesse indenfor såvel datalogien som industrien.

Et fotografi af en blomst, JPEG-komprimeret med stigende grad af kompression fra venstre mod højre med stigende datatab til følge ift. det oprindelige foto. Bemærk: Der er færre detaljer og mindre nuancerede farver i højre side.

Hvordan komprimeres data

redigér

Det meste data som produceres, indeholder dublerende – redundant – information. Simple eksempler:

  • En tekstfil gentager bogstaverne i alfabetet adskillige gange.
  • I de fleste tekster forekommer de samme ord mange gange.
  • Et billedfil gentager rigtig mange gange farveværdier for alle pixels, som udgør en ensartet farveflade.

Komprimeringsprocessen finder (noget af) denne redundans, fjerner eller udskifter den med data om hvor meget den pågældende datamængde er dubleret. Komprimeringsprogrammer arbejder med forskellige metoder, kaldet algoritmer. Nogle algoritmer komprimerer hurtigere, andre er bedre til at håndtere større datamængder, andre igen opnår større kompression af data osv. Overordnet skelnes mellem to kategorier af kompression:

  1. Tabsfri kompression – alle data bevares og kan genskabes. Her kan der fx være tale om forskellige former for tekst-data, dokumenter o.l., hvor de oprindelige data skal kunne retableres 100% korrekt fra de komprimerede data. I denne kategori er også komprimerede sikkerhedskopier, som gerne skal kunne retableres fuldt ud.
  2. IKKE-tabsfri kompression – der forekommer et vist svind af data under processen, så data ikke fuldt kan genskabes ved dekomprimering. Denne form vælges typisk ved fx komprimering af billeder, hvor man kan acceptere et vist kvalitetstab, mod til gengæld at opnå højere grad af komprimering. Man er, med komprimeringsprogrammets valgmulighed for komprimeringsgrad, i stand til at vælge, hvor "hårdt" man vil reducere data.

Tabsfri kompression

redigér

Tabsfri datakompression er en betegnelse for, at data komprimeres med en algoritme, som sikrer, at alle data retableres 100% – uden tab – ved dekomprimering. Man kan til gengæld forvente, at data fylder mere.

En af de kendteste algoritmer er Lempel-Ziv-Welch (LZW) fra 1978 og offentliggjort igen i 1984, komprimerer effektivt uanset anvendt ordgrænse, tegnsæt eller ordstørrelse.

Nogle programmer kan håndtere kataloger med filer og underkataloger til vilkårlig dybde, andre mange inputfiler, mens andre kun kan pakke en enkelt fil.

Primært PC-programmer

redigér

Primært Linux-programmer

redigér
  • bzip2 – er fra 1996 og er i snit en bedre kompression end compress og gzip. Kompressionsprocessen er lidt langsommere end gzip, men komprimerer data mærkbart bedre.
  • gzip – er fra 1992 og er en åben standard udgivet som RFC 1950, RFC 1951 og RFC 1952. Anvender LZ77 og Huffman-kodning.
  • compress – gammelt program fra ca. 1983. Bruger LZ78 som igen anvender LZW.

Ikke-tabsfri kompression

redigér

Ikke-tabsfri datakompression er en betegnelse for, at data komprimeres med datatab. Datatabet resulterer i, at det dekomprimerede arkiv eller fil, vil være forskellig fra originalen.

Ikke-tabsfri datakompressionsalgoritmer anvendes især på lyd, rå scannet tekst, illustrationer, billeder og video. Langt de fleste af disse data anvender som hovedalgoritme, en optimeret algoritmeudgave af diskret Fourier-transformation; kaldet fast fourier transformation (FFT). En nyere og bedre algoritme til at komprimere anvender diskret Wavelet-transformation – faktisk fast wavelet-transformation (FWT).

FFT anvendes i bl.a. JPEG, MPEG-2 og MPEG-4.

FWT anvendes i bl.a. JPEG 2000.

Eksterne henvisninger

redigér
 Spire
Denne artikel om datalogi eller et datalogi-relateret emne er en spire som bør udbygges. Du er velkommen til at hjælpe Wikipedia ved at udvide den.