En kodek er en algoritme som kan kode (transformere) informasjon om til en annen representasjon (transform) og/eller dekode (inverstransformere) transformen, det vil si utvinne den opprinnelige informasjonen. Den mest vanlige bruken av ordet er i forbindelse med datakompresjon, hvor formålet med transformen enten er å skille ut uviktig informasjon (kompresjon med tap), eller å øke den spesifikke entropien (tapsløs kompresjon). I en annen betydning kan en kodek være en maskinvareenhet som transformerer signaler mellom forskjellige fysiske representasjoner, eksempelvis mellom analog og digital lyd.

Av engelsk: codec, som er en sammentrekning av coder/decoder

Datakompresjon med tap

rediger

En vanlig måte å komprimere bilder og lyd er å transformere signalet til frekvensdomenet og så velge ut de viktigste frekvenskomponentene. Følgende algoritmer er godt egna til slik kompresjon, ettersom betydelige deler av den transformerte dataen gjerne kan forkastes uten at tapet oppleves som særlig stort:

Kompresjon kan oppnås for eksempel ved å forkaste alle frekvenskomponenter over ei viss grense i et lydklipp eller nulle frekvenser som bidrar lite (har lav koeffisient). Om ingen data forkastes vil signalet kunne tapsfritt transformeres tilbake, fordi algoritmene over i seg ikke medfører datatap.

Tapsfri datakompresjon

rediger
  • Det siste steget i tapsfri kompresjon er entropikoding. Huffman-algoritmen er et klassisk eksempel på dette.
  • Ofte kan signalet optimaliseres for entropikoding først. Dette kan omfatte å erstatte faktiske verdier med differansen fra en prediktor (som i FLAC), referere tilbake på tidligere signalforløp (som i Lempel-Ziv), eller å samle like data ved å stokke det om på en reverserbar måte (som i rzip).

Videokomprimering

rediger
Lav kompresjon, høy kvalitet. Bildet er kodet med jpeg og var originalt på 261KB, men her komprimert til 36KB, og inneholder mange detaljer.
Høy kompresjon, lav kvalitet. Jpeg-bildet var originalt på 60,1KB, men er her på 21KB. Mange detaljer er glattet ut.

Digitale bilder og billedstrømmer kan komprimeres for slik å spare plass når dataene lagres eller overføres. Videokompremering kan gjøres tapsfri, en kan godta tap av data, eller en film kan være en strøm av stillbilder.

Menneskeøyet er mer følsomt for gult og grønt lys enn for rødt [1], og begrensninger i menneskets fysiologi og psykologi gjør det mulig å fjerne detaljer uten at billedstrømmen oppfattes som dårligere.

"QuickTime Animation", "H.264 lossless" og VP9 er eksempler på kodeker som kan gi tapsfri koding, men dermed også mye data. Komprimering med tap vil kunne føre til at noen detaljer i et bilde blir uskarpe, eller at bakgrunnen og nyanser i fargene glattes litt ut. Digital-TV formatet H.264/MPEG-4 AVC benytter koding med tap, i likhet med forgjengere som DivX, Xvid, libavcodec, H.262/MPEG2 og MPEG1. WMV-formatet fra Microsoft, samt VP8 og VP9 fra Google er også formater som gir tap av data. Formater som "Motion JPEG" og "Apple ProRes 422/444" sender langt på vei en strøm av stillbilder.[2][3]

MP3, en mye brukt kodek for lyd, er egentlig MPEG-1 Audio Layer III eller MPEG-2 Audo Layer III, og er en kodek med tap. Bruk av psykoaukustiske metoder og kjennskap til det mennesklige hørselsområdet har gjort det mulig å komprimere lyd med 75-95% i forhold til CD-formatet, uten merkbar reduksjon i kvalitet for vanlige lyttere.

Referanser

rediger