Kako se provodi kompresija? Za odgovor na to pitanje potrebno je znati da su u svim konvencionalnim digitalnim sustavima ograničeni i broj bitova po uzorku, kao i brzina prijenosa. Brzina prijenosa ograničava količinu podataka koja se može prenijeti u nekom vremenskom intervalu, no za većinu primjena, odnosno većinu programskog materijala, ta se granica ne dostiže.
Prema Shannonovom teoremu, signal koji se ne mijenja, ne sadrži informaciju. Uzmimo za primjer sinusni valni oblik: svaki period signala jednak je slijedećem, dakle, sinusni signal ne nosi nikakvu informaciju zbog činjenice da nema širinu pojasa.
U slučaju videosignala, prisutnost prepoznatljivih objekata u slici rezultira skupom elemenata slike sličnih karakteristika. Ti elementi slike daju kao rezultat frekvenciju signala koja je daleko ispod maksimalne koju je moguće prenijeti sustavom. Na primjer, u slučaju stacionarne slike, svaka slika je jednaka prethodnoj, tako da, u stvari, ne treba prenositi nove podatke jednom kad je prva slika već poslana.
Cilj sustava za kompresiju jest prepoznati i odašiljati samo korisni, promjenjivi dio ulaznog signala. Taj korisni dio signala naziva se entropija. Preostali, nepromjenjivi dio ulaznog signala naziva se redundancija (slika 3.).
Slika 3. Entropija i redundancija
U principu, redundanciju nije uopće potrebno prenositi. Međutim, u realnim uvjetima prijenosa dio redundancije se prenosi kako bi se omogućila rekonstrukcija informacija koje su se izgubile u prijenosu, tj. signal je otporniji na smetnje ako redundancija ipak postoji.
Slika 4. a) pokazuje slučaj idealne kompresije: ako koder pošalje svu entropiju, a u prijenosu ne dođe do gubitka, primljeni signal se ne može razlikovati od originala. Ukoliko dođe do bilo kakvih smetnji u prijenosu, dio informacije se gubi, i dekodirani signal će biti slabije kvalitete u odnosu na original.
Druga stvar na koju treba obratiti pažnju jest stupanj kompresije. U slučaju prevelikog stupnja kompresije, dolazio do oštećenja entropije, jer je već sva redundancija u potpunosti uklonjena (slika 4. b)). Stoga se postavlja zahtjev da se stupanj kompresije mora prilagoditi sadržaju slike.
Slika 4. Problem odabira stupnja kompresije
Pošto je entropija funkcija ulaznog signala, potrebna brzina prijenosa u slučaju idealne kompresije će biti promjenjiva. Nije uvijek moguće imati prijenosni kanal promjenjive brzine prijenosa, tako da mnogi uređaji za kompresiju imaju memorijske spremnike na oba kraja lanca. To usrednjuje brzinu prijenosa, no uzrokuje i kašnjenja. Takva kašnjenja mogu biti neprihvatljiva u nekim slučajevima (npr. videokonferencije) pa se koristi kanal sa stalnom brzinom prijenosa, čime se izbjegava potreba za memorijskim spremnicima. Takav sustav ima manja kašnjenja signala.
Sve do sada, razmatranja su se zasnivala na idealnom koderu, koji je uvijek sposoban razlučiti entropiju od redundancije. Nažalost, takav koder nije moguć, jer bi bio beskonačno složen i imao bi beskonačno kašnjenje. Stoga smo u praksi prisiljeni posegnuti za realnim koderom, koji će uvijek odstupati od idealnog, bez obzira na primjenu. Ta činjenica znači da ćemo uvijek morati odabrati manji stupanj kompresije od idealnog (najvećeg mogućeg), jer koder nije u stanju točno razlikovati entropiju od redundancije.
Slika 4. c) pokazuje slučaj realnog kodera: uz entropiju se prenosi još dio informacije koji može, ali i ne mora biti redundantan. Što je koder jednostavniji, taj dio informacije je veći. Dekoder, međutim, mora moći obraditi signal u bilo kojem slučaju. Zbog toga, sve odluke o načinu i stupnju kompresije donose se na razini kodera, a dekoder samo mora dekodirati primljeni signal što je bolje moguće. Takav sustav je dakle asimetričan: koder je najčešće složen, a dekoder je znatno jednostavniji.
Iz svega do sada navedenog, može se zaključiti da je složenost kodera, za neku traženu kvalitetu, to veća što je zahtijevana brzina prijenosa manja. Zbog toga se u primjeni nalazi velik broj različitih kodera.
Osnovne vrste redundancije koje se pojavljuju u videosignalu su:
a) statistička redundancija:
prostorna (unutar svake pojedine slike);
vremenska (između slika);
b) subjektivna redundancija (vezana za svojstva ljudskog vizualnog sustava).
Kompresija videosignala zasniva se na uklanjanju redundancije iz toka podataka koji je potrebno poslati kroz kanal. Drugim riječima, iskorištavaju se dvije pretpostavke koje definiraju redundanciju u nekom videosignalu.
Prva pretpostavka odnosi se na svojstvo ljudskog vizualnog sustava da je osjetljivost na šum u slici ovisna o frekvenciji, tj. oko slabije zapaža sitne detalje (visoke frekvencije).
Druga pretpostavka je da u nizu pokretnih slika uvijek postoji znatna sličnost između trenutne i slijedeće slike.
Slika 5. Ovisnost prostorne frekvencije o veličini objekta u slici
Slika 6. Osjetljivost oka na detalje
Iz slika 5. i 6. vidljivo je da se zbog karakteristika ljudskog oka mogu iz slike pri kompresiji ukloniti sitni detalji, budući da daju kao rezultat više frekvencije, koje oko manje zapaža.
Kompresija u načelu radi tako da reducira broj bitova digitalne riječi. To dovodi do smanjenja rezolucije i povećanja šuma, tako da se postupak mora provoditi pazeći da šum ne postane vidljiv, tj. pazeći na prostornu frekvenciju (frekvenciju generiranu sadržajem slike). Videokoderi zbog toga moraju provoditi analizu frekvencija koje se pojavljuju u ulaznom signalu, te obrađivati svaku frekvenciju posebno. Ako neke frekvencije u ulaznom signalu nema, neće biti prenesen nikakav podatak.
Dekoder se izvodi kao potpuno inverzni sklop u odnosu na koder (slika 7.)
Slika 7. Kompresija i dekompresija (osnovno načelo)
Postupak prikazan na ovoj slici tretira svaku pojedinu sliku zasebno i naziva se kodiranje unutar slike (intra-frame coding). Na taj način rade sustavi za kompresiju mirnih slika npr. JPEG (Joint Photographic Experts Group).
Pri kodiranju videosignala, osim kodiranja unutar slike, primjenjuje se i postupak kodiranja između slika (inter-frame coding), koji iskorištava vremensku redundanciju koja se pojavljuje između dviju slika u nizu. Na taj način mogu se postići veći stupnjevi kompresije.
Slika 8. prikazuje jednostavan sustav za kodiranje između slika. Počevši sa slikom kodiranom postupkom kodiranja unutar slike, sve slijedeće slike opisane su samo razlikama o odnosu na trenutnu sliku. Dekoder zbraja razliku slika s trenutnom slikom i na taj način stvara slijedeću sliku. Slika koja predstavlja razliku dobiva se oduzimanjem vrijednosti elementa slike u jednoj slici i vrijednosti istog elementa slike u drugoj slici. Ta slika se može, kao i svaka druga slika, komprimirati postupkom kodiranja unutar slike.
Postoje mnogi problemi koji sprečavaju ovakvu jednostavnu izvedbu. Na primjer, bilo koja pogreška koja se pojavi u toku prijenosa u samo jednoj slici, bit će vidljiva u svim slijedećim slikama (propagacija pogrešaka). Osim toga, nije moguće dekodirati signal ako se on ne prati od početka emitiranja, tj. nije moguće mijenjanje kanala. To sve dovodi do potrebe da se povremeno prenose i slike dobivene samo kodiranjem unutar slike (I-slike).
Ovaj način prijenosa otežava i naknadnu obradu videosignala jer točke rezova moraju biti tako odabrane da svaki isječak počinje I-slikom.
Slika 8. Kodiranje između slika
Sustav kodiranja između slika nije pogodan za prijenos videosignala u kojem postoje velike razlike između pojedinih slika (npr. nagli pokreti) jer su razlike prevelike da bi ih se moglo učinkovito kodirati. To dovodi do potrebe za uvođenjem nadomještanja pokreta (motion compensation).
Nadomještanje pokreta provodi se tako da se na strani kodera uspoređuju prethodna i trenutna slika, te se mjeri pomak područja slike za dobivanje vektora pomaka. Koder modelira objekt na novom položaju pomicanjem elemenata prethodne slike pomoću vektora pomaka. Odstupanja od stvarne situacije korigiraju se usporedbom modelirane i stvarne slike (slika 9.).
Koder šalje vektore pomaka i signal razlike slika. Dekoder pomiče objekt iz prethodne slike pomoću vektora pomaka i dodaje signal razlike da bi dobio slijedeću sliku.
Nadomještanje pokreta omogućava veći stupanj kompresije, uz veću složenost samog sustava.
Slika 9. Kodiranje s nadomještanjem pokreta