Image Coding Common Image Formats GIF (Graphis Interchange Format) Lossless, but only in 256 colors Uses LZW for compression (Patent problem) PNG (Portable Network Graphics) More flexible replacement for GIF JPEG (Joint Photographers Expert Group) Complex standard with many modes Typically lossy, but has lossless mode as well 1 2 GIF Flexible color depth, but max is 256 colors Uses LZW to compress the data Codebook size is 4096 entries First version 1987, current version 1989 Has interlacing for progressive viewing Multiple images in one file possible (gif-animation) Förlustkomprimering - Bakgrund Bilder överförs för att visas upp för en människa. Människan är otålig och halvblind Otålig Frustrerande med väntan framför skärmen Halvblind Det mänskliga synsinnet uppfattar ej all information 3 4 Begränsningar - Färgseendet sämre - Begränsad upplösning - Olika känslighet för olika mönster - Skarpa kontraster döljer svagare Synsinnet Komprimeringsexempel Original Komprimerad 99 Kb / 100 sek 6 Kb / 6 sek 5 6 1
Komprimering JPEG Vad är det som skiljer? Komprimerad 4 x förstoring The best compression format for photo-like natural images Color or grayscale images Lossy or lossless compression Sequential or progressive display Exploits human visual system characteristics 7 8 JPEG Functional Overview Color conversion and downsample Split in 8x8 pixel blocks Do DCT (Discrete Cosine Transform) Quantize Diffence encode DC and Run-length encode AC Huffman encode Packetize Color split Split into three components (Y Cb Cr Color format) 9 10 Split in blocks Downsample chrominance components Split into 8x8 pixel blocks 11 12 2
Why DCT? Spatial locality! Split in blocks and do DCT Perform DCT 13 14 An 8x8 pixel block is transformed into 64 spatial frequencies (coefficients) Sort of 2-dimensional fourier transform Image Frequencies Summing of coefficients By using all 64 coefficients a perfect reconstrucion is possible Using fewer coefficients gives a good reconstruction and data reduction Ursprungsbild 15 16 Quantization / = Split in blocks and do DCT The quantization reduces the resolution (i.e. The amount of information) for the coefficents The number of zero coefficients is increased Quantize Diff code DC Differential encode DC coefficient 17 18 3
Split in blocks and do DCT Quantize Diff code DC and RLE AC The quantized coefficents are coded in a zig-zag manner This leads to longer zero runlength for the last coefficients. Zig-zag ordning Run Length Encode AC coefficients 19 20 Coder - overview Split in blocks and do DCT Quantize Diff code DC and RLE AC Huffman encode Headers Packetize One MCU 21 22 Decoder - overview Bilder på Webben - att tänka på Foton el. fotoliknande - använd JPEG Ritat / tecknat använd GIF / PNG Trimma färgdjupet i GIF Trimma quality i JPEG Ingen skalning i browser Inga thumbnails eller text i JPEG 23 24 4
Jämförelse storlek/kvalite Waveletkodning Förlust-kodning (lossy coding). Bygger delvis på samma princip som JPEG, men man gör en transformation på hela bilden i flera upplösningssteg, istället för 8x8 block. Använder en annan matematisk funktion än JPEG för att göra transformationen, många olika finns. Kräver mer processorkapacitet för kodning/dekodning än JPEG. Ger bättre komprimering för samma kvalite än JPEG. Senaste JPEG-standarden (JPEG2000) är waveletbaserad. (Från: http://www.psychology.nottingham.ac.uk/staff/cr1/graphics.html) 25 26 Kodning av Video VIDEOKODNING Videokodning MPEG1, ursprungligen för video med 1x CD-spelare MPEG2, Digital Satellit och kabel-tv, Många moder Videokodning för Videokonferanser H.261, äldre standard, används ex med ISDN H.263, nyare. Fungerar bättre vid låga överföringshastigheter Ny teknik MPEG 4 27 28 Översikt videokodning Begrepp i videokodning Spatial Redundans Redundans på grund av att närliggande pixlar typiskt har liknande värden. Tas bort genom DCT-transform/kvantisering/Huffman. Temporal Redundans Redundans på grund av att bildrutor efter varann typiskt har liknande innehåll. Tas bort genom makroblockskodning med rörelsevektorer och differansbilder. 29 30 5
Makroblockskodning Makroblockskodning 2 Rörelsevektorn anger hur mycket och åt vilket håll makroblocket rört sig. Differansbilden anger skillnaden inne i makroblocket mellan de kodade bildrutorna. 31 32 Transmissionsordning 33 34 MPEG 4 Meshkodning Mpeg 4 är objektbaserad, där både bild och ljudobjekt kan placeras in i ett tredimensionellt koordinatsystem. Dessa objekt kan sedan kodas och manipuleras oberoende av varandra. Tittaren kan även interagera med scenen, byta synvinkel osv. Ett område i bilden kan modelleras med en mesh. Parametrarna hos denna mesh förändras sedan när området förändras. Texturen skalas om enligt förändringen i meshen. Trådmodeller av ansiktet och animering av trådmodellsansikten med mappade texturer finns i MPEG 4 ver 1. Senare versioner har även modeller av människokroppen och rörelsemönter till den. 35 36 6
Spritekodning LJUDKODNING En bild kan ställas samman av en fast bakgrund och en rörlig sprite. Bakgrunden kan vara större än vad som visas på skärmen, för att kunna hantera kamerapanoreringar utan att behöva sända en ny bakgrund. 37 38 Ljudkodning Hörselgräns Utnyttja redundans i data Likheterna mellan kanalerna vid stereo Utnyttja hörselsinnets svagheter (psykoakustik) Hörselgränsen Frekvensbunden Maskning Tidsbunden Maskning Hörselsinnets känslighet varierar för olika frekvenser. Det som inte kan uppfattas behöver inte överföras. 39 40 Frekvensmaskning Tidsmaskning En stark ton maskar bort (döljer) omkringliggande Bredden på masken varierar med frekv. Högre=bredare Bredden kallas kritiskt band Starka toner maskar även i tid Vi kan inte uppfatta närliggande toner precis efter att en stark ton upphört 41 42 7
Maskning Frekvens och tidsmaskning kan modelleras som en yta Toner under ytan uppfattas ej, och deras information behöver ej kodas / överföras. MPEG 2 - Audio Layer 3 (MP3) Algoritmen: 1. Dela m.h.a. filter upp ljudet till 32 subband 2. Beräkna maskningen som varje band skapar 3. Om ett ljudstyrkan i ett band är maskad, koda ej bandet 4. Bestäm kvantiseringen med hänsyn till maskning och bitrate 5. Huffmankoda 6. Formatera utdataströmmen 43 44 8