Kako funkcionira JPEG format

JPEG slike su sveprisutne u našim digitalnim životima, ali iza ovog sloja svijesti stoje algoritmi koji uklanjaju detalje koji nisu vidljivi ljudskom oku. Rezultat je najviša vizualna kvaliteta u najmanjoj veličini datoteke - ali kako to točno sve funkcionira? Pogledajmo što točno naše oči ne vide!

Kako funkcionira JPEG format

Lako je uzeti zdravo za gotovo mogućnost slanja fotografije prijatelju i ne brinuti o tome koji uređaj, preglednik ili operativni sustav koristi – ali to nije uvijek bio slučaj. Do ranih 1980-ih, računala su mogla pohranjivati ​​i prikazivati ​​digitalne slike, ali bilo je mnogo suprotstavljenih ideja o najboljem načinu za to. Ne možete jednostavno poslati sliku s jednog računala na drugo i nadati se da će raditi.

Kako bi se riješio ovaj problem, 1986. godine okupljen je odbor stručnjaka iz cijelog svijeta pod nazivom "Zajednička skupina stručnjaka za fotografiju» (Joint Photographic Experts Group, JPEG), osnovan zajedničkim naporom Međunarodne organizacije za standardizaciju (ISO) i Međunarodne elektrotehničke komisije (IEC), dviju međunarodnih organizacija za normizaciju sa sjedištem u Ženevi, Švicarska.

Grupa ljudi pod nazivom JPEG stvorila je standard kompresije digitalne slike JPEG 1992. godine. Svatko tko je koristio Internet vjerojatno je naišao na JPEG kodirane slike. Ovo je najčešći način kodiranja, slanja i pohranjivanja slika. Od web stranica do e-pošte do društvenih medija, JPEG se koristi milijarde puta dnevno—praktički svaki put kada pogledamo sliku na mreži ili je pošaljemo. Bez JPEG-a, web bi bio manje šaren, sporiji i vjerojatno bi imao manje slika mačaka!

Ovaj članak govori o tome kako dekodirati JPEG sliku. Drugim riječima, ono što je potrebno za pretvaranje komprimiranih podataka pohranjenih na računalu u sliku koja se pojavljuje na ekranu. Ovo je vrijedno znati, ne samo zato što je važno za razumijevanje tehnologije koju koristimo svaki dan, već i zato što otključavanjem razina kompresije učimo više o percepciji i vidu te o detaljima na koje su naše oči najosjetljivije.

Osim toga, poigravanje slikama na ovaj način vrlo je zanimljivo.

Kako funkcionira JPEG format

Gledajući unutar JPEG-a

Na računalu je sve pohranjeno kao niz binarnih brojeva. Tipično su ovi bitovi, nule i jedinice, grupirani u grupe od osam kako bi sačinili bajtove. Kada otvorite JPEG sliku na računalu, nešto (preglednik, operativni sustav, nešto drugo) mora dekodirati bajtove, vraćajući izvornu sliku kao popis boja koje se mogu prikazati.

Ako preuzmete ovaj slatki fotografija mačke i otvorite ga u uređivaču teksta, vidjet ćete hrpu nesuvislih znakova.

Kako funkcionira JPEG format
Ovdje koristim Notepad++ za ispitivanje sadržaja datoteke, budući da će uobičajeni uređivači teksta poput Notepada u sustavu Windows oštetiti binarnu datoteku nakon spremanja i ona više neće zadovoljavati JPEG format.

Otvaranje slike u programu za obradu teksta zbunjuje računalo, baš kao što zbunjujete svoj mozak kada protrljate oči i počnete vidjeti mrlje u boji!

Ove točke koje vidite poznate su kao fosfeni, i nisu rezultat svjetlosnog podražaja ili halucinacije koju stvara um. Do njih dolazi jer vaš mozak misli da svi električni signali u optičkim živcima prenose informacije o svjetlu. Mozak mora napraviti te pretpostavke jer ne postoji način da se sazna je li signal zvuk, vizija ili nešto treće. Svi živci u tijelu prenose potpuno iste električne impulse. Pritiskom na oči šaljete signale koji nisu vizualni, već aktiviraju očne receptore koje vaš mozak tumači – u ovom slučaju netočno – kao nešto vizualno. Doslovno se vidi pritisak!

Smiješno je razmišljati o tome koliko su računala slična mozgu, ali to je također korisna analogija koja ilustrira koliko značenje podataka - bilo da se prenose kroz tijelo živcima ili su pohranjeni u računalu - ovisi o tome kako se tumače. Svi binarni podaci sastoje se od XNUMX i XNUMX, osnovnih komponenti koje mogu prenijeti informacije bilo koje vrste. Vaše računalo često shvaća kako ih protumačiti pomoću tragova kao što su ekstenzije datoteka. Sada ga prisiljavamo da ih interpretira kao tekst, jer to je ono što uređivač teksta očekuje.

Da bismo razumjeli kako dekodirati JPEG, moramo vidjeti same izvorne signale - binarne podatke. To se može učiniti pomoću heksadecimalnog editora ili izravno na izvorna web stranica članka! Postoji slika, pored koje su u tekstualnom polju svi njeni bajtovi (osim zaglavlja), prikazani u decimalnom obliku. Možete ih promijeniti, a skripta će ponovno kodirati i proizvesti novu sliku u hodu.

Kako funkcionira JPEG format

Možete puno naučiti samo igrajući se s ovim uređivačem. Na primjer, možete li reći kojim su redoslijedom pikseli pohranjeni?

Ono što je čudno u ovom primjeru je to što promjena nekih brojeva uopće ne utječe na sliku, ali, primjerice, ako broj 17 zamijenite 0 u prvom retku, fotografija će biti potpuno uništena!

Kako funkcionira JPEG format

Druge promjene, poput zamjene 7 on line 1988 s brojem 254, mijenjaju boju, ali samo sljedećih piksela.

Kako funkcionira JPEG format

Možda je najčudnije što neki brojevi mijenjaju ne samo boju, već i oblik slike. Promijenite 70 u retku 12 u 2 i pogledajte gornji red slike da vidite na što mislim.

Kako funkcionira JPEG format

I bez obzira koju JPEG sliku koristite, uvijek ćete pronaći ove misteriozne šahovske uzorke prilikom uređivanja bajtova.

Kada se igrate s uređivačem, teško je razumjeti kako se fotografija ponovno stvara iz tih bajtova, budući da se JPEG kompresija sastoji od tri različite tehnologije, primijenjene uzastopno u razinama. Proučavat ćemo svaki zasebno kako bismo otkrili misteriozno ponašanje koje vidimo.

Tri razine JPEG kompresije:

  1. Poduzorkovanje boja.
  2. Diskretna kosinusna transformacija i uzorkovanje.
  3. Kodiranje dužine izvođenja, delta и Huffman

Kako bismo vam dali predodžbu o veličini kompresije, imajte na umu da gornja slika predstavlja 79 819 brojeva ili oko 79 KB. Kad bismo ga pohranili bez kompresije, svaki bi piksel zahtijevao tri broja – za crvenu, zelenu i plavu komponentu. To bi iznosilo 917 brojeva, odnosno cca. 700 KB. Kao rezultat JPEG kompresije, konačna datoteka je smanjena za više od 917 puta!

Zapravo, ova se slika može mnogo više komprimirati. Ispod su dvije slike jedna do druge - fotografija s desne strane komprimirana je na 16 KB, odnosno 57 puta manje od nekomprimirane verzije!

Kako funkcionira JPEG format

Ako bolje pogledate, vidjet ćete da ove slike nisu identične. Obje su slike s JPEG kompresijom, ali je desna puno manjeg volumena. Također izgleda malo lošije (pogledajte kvadratiće boja pozadine). Zato se JPEG naziva i kompresija s gubitkom; Tijekom procesa kompresije slika se mijenja i gubi neke detalje.

1. Poduzorkovanje boja

Ovo je slika s primijenjenom samo prvom razinom kompresije.

Kako funkcionira JPEG format
(Interaktivna verzija - u izvornik članci). Uklanjanje jednog broja uništava sve boje. Međutim, ako se ukloni točno šest brojeva, to nema gotovo nikakvog utjecaja na sliku.

Sada je brojke malo lakše dešifrirati. Ovo je gotovo jednostavan popis boja, u kojem svaki bajt mijenja točno jedan piksel, ali je u isto vrijeme već upola manji od nekomprimirane slike (koja bi u ovoj smanjenoj veličini zauzimala oko 300 KB). Možete li pogoditi zašto?

Vidite da ovi brojevi ne predstavljaju standardne crvene, zelene i plave komponente, jer ako sve brojeve zamijenimo nulama, dobit ćemo zelenu sliku (umjesto bijelu).

Kako funkcionira JPEG format

To je zato što ti bajtovi označavaju Y (svjetlina),

Kako funkcionira JPEG format

Cb (relativno plavetnilo),

Kako funkcionira JPEG format

i Cr (relativno crvenilo) slike.

Kako funkcionira JPEG format

Zašto ne koristiti RGB? Uostalom, tako radi većina modernih ekrana. Vaš monitor može prikazati bilo koju boju, uključujući crvenu, zelenu i plavu, s različitim intenzitetom za svaki piksel. Bijela se dobije uključivanjem sva tri na punu svjetlinu, a crna isključivanjem.

Kako funkcionira JPEG format

Ovo je također vrlo slično funkcioniranju ljudskog oka. Receptori boja u našim očima nazivaju se "češeri“, a podijeljeni su u tri tipa, od kojih je svaki osjetljiviji na crvenu, zelenu ili plavu boju [čunjići tipa S osjetljivi su na ljubičasto-plavu (S od engleskog kratkog - kratkovalnog spektra), M -tip - u zeleno-žutom (M od engleskog Medium - srednji val), a L-tip - u žuto-crvenom (L od engleskog Long - dugovalni) dijelovima spektra. Prisutnost ove tri vrste čunjića (i štapića koji su osjetljivi u smaragdnozelenom dijelu spektra) daje osobi vid u boji. / cca. prijevod]. štapići, druga vrsta fotoreceptora u našim očima, sposoban je detektirati promjene svjetline, ali je mnogo osjetljiviji na boju. Naše oči imaju oko 120 milijuna štapića i samo 6 milijuna čunjića.

Zbog toga su naše oči puno bolje u otkrivanju promjena svjetline nego promjena boje. Ako odvojite boju od svjetline, možete ukloniti malo boje i nitko neće ništa primijetiti. Chroma subsampling je postupak predstavljanja komponenti boje slike u nižoj razlučivosti od komponenti svjetline. U gornjem primjeru svaki piksel ima točno jednu Y komponentu, a svaka pojedinačna grupa od četiri piksela ima točno jednu Cb i jednu Cr komponentu. Stoga slika sadrži četiri puta manje informacija o boji od originala.

Prostor boja YCbCr koristi se ne samo u JPEG-u. Izvorno je izumljen 1938. za televizijske programe. Nema svatko televizor u boji, pa je odvajanje boje i svjetline omogućilo svima da dobiju isti signal, a televizori bez boje jednostavno su koristili samo komponentu svjetline.

Dakle, uklanjanje jednog broja iz editora potpuno uništi sve boje. Komponente su pohranjene u obliku GGGG Cb Cr (zapravo, ne nužno tim redoslijedom - redoslijed pohranjivanja naveden je u zaglavlju datoteke). Uklanjanje prvog broja uzrokovat će da se prva vrijednost Cb percipira kao Y, Cr kao Cb, i općenito ćete imati domino efekt koji mijenja sve boje na slici.

JPEG specifikacija vas ne prisiljava da koristite YCbCr. Ali većina datoteka ga koristi jer proizvodi bolje slike smanjene uzorkovanja nego RGB. Ali ne morate mi vjerovati na riječ. Pogledajte sami u donjoj tablici kako će izgledati poduzorkovanje svake pojedinačne komponente u RGB i YCbCr.

Kako funkcionira JPEG format
(Interaktivna verzija - u izvornik članci).

Uklanjanje plave nije toliko vidljivo kao crveno ili zeleno. To je zato što je od šest milijuna čunjića u vašim očima, oko 64% osjetljivo na crveno, 32% na zeleno i 2% na plavo.

Najbolje se vidi smanjenje uzorkovanja Y komponente (dolje lijevo). Primjetna je čak i mala promjena.

Pretvaranje slike iz RGB u YCbCr ne smanjuje veličinu datoteke, ali olakšava pronalaženje manje vidljivih detalja koji se mogu ukloniti. U drugom stupnju dolazi do kompresije s gubitkom. Temelji se na ideji predstavljanja podataka u komprimiranijem obliku.

2. Diskretna kosinusna transformacija i uzorkovanje

Ova razina kompresije uglavnom je ono što je JPEG. Nakon pretvorbe boja u YCbCr, komponente se pojedinačno komprimiraju, tako da se tada možemo koncentrirati samo na komponentu Y. A evo kako bajtovi komponente Y izgledaju nakon primjene ovog sloja.

Kako funkcionira JPEG format
(Interaktivna verzija - u izvornik članci). U interaktivnoj verziji, klik na piksel pomiče uređivač do retka koji ga predstavlja. Pokušajte ukloniti brojeve s kraja ili dodati nekoliko nula određenom broju.

Na prvi pogled izgleda kao vrlo loša kompresija. Slika ima 100 000 piksela, a potrebno je 102 400 brojeva da bi predstavili njihovu svjetlinu (Y-komponente)—to je gore nego da ništa ne komprimirate!

Međutim, imajte na umu da je većina ovih brojeva nula. Štoviše, sve one nule na kraju redaka mogu se ukloniti bez promjene slike. Ostalo je oko 26 brojeva, a to je skoro 000 puta manje!

Ova razina sadrži tajnu šahovskih uzoraka. Za razliku od drugih učinaka koje smo vidjeli, izgled ovih uzoraka nije greška. Oni su građevni blokovi cijele slike. Svaki redak uređivača sadrži točno 64 broja, koeficijente diskretne kosinusne transformacije (DCT) koji odgovaraju intenzitetu 64 jedinstvena uzorka.

Ovi se obrasci formiraju na temelju kosinusnog dijagrama. Evo kako neki od njih izgledaju:

Kako funkcionira JPEG format
8 od 64 šanse

Ispod je slika koja prikazuje sva 64 uzorka.

Kako funkcionira JPEG format
(Interaktivna verzija - u izvornik članci).

Ovi uzorci su od posebne važnosti jer čine osnovu slika 8x8. Ako niste upoznati s linearnom algebrom, to znači da se bilo koja slika 8x8 može napraviti od ova 64 uzorka. DCT je proces dijeljenja slika u blokove 8x8 i pretvaranje svakog bloka u kombinaciju ova 64 koeficijenta.

Čini se kao magija da se svaka slika može sastaviti od 64 specifična uzorka. Međutim, to je isto kao da se bilo koje mjesto na Zemlji može opisati s dva broja - zemljopisnom širinom i dužinom [što označava hemisfere / pribl. prijevod]. Zemljinu površinu često smatramo dvodimenzionalnom, pa su nam potrebna samo dva broja. Slika 8x8 ima 64 dimenzije, tako da su nam potrebna 64 broja.

Još nije jasno kako nam to pomaže u pogledu kompresije. Ako nam trebaju 64 broja za predstavljanje slike 8x8, zašto bi to bilo bolje od samo pohranjivanja 64 komponente svjetline? To radimo iz istog razloga iz kojeg smo tri RGB broja pretvorili u tri YCbCr broja: to nam omogućuje uklanjanje suptilnih detalja.

Teško je točno vidjeti koji su detalji uklonjeni u ovoj fazi jer JPEG primjenjuje DCT na 8x8 blokove. Međutim, nitko nam ne brani da to primijenimo na cjelokupnu sliku. Evo kako DCT izgleda za Y komponentu primijenjenu na cijelu sliku:

Kako funkcionira JPEG format

Više od 60 brojeva može se ukloniti s kraja bez gotovo ikakvih vidljivih promjena na fotografiji.

Kako funkcionira JPEG format

Međutim, imajte na umu da će razlika biti očita ako izbrišemo prvih pet brojeva.

Kako funkcionira JPEG format

Brojevi na početku predstavljaju niske frekvencije promjena u slici, koje naše oko najbolje hvata. Brojevi pri kraju označavaju promjene u visokim frekvencijama koje je teže primijetiti. Kako bismo "vidjeli ono što oko ne može vidjeti", možemo izolirati ove visokofrekventne detalje nuliranjem prvih 5000 brojeva.

Kako funkcionira JPEG format

Vidimo sva područja slike u kojima se događa najveća promjena od piksela do piksela. Ističu se mačje oči, njegovi brkovi, frotirna deka i sjene u donjem lijevom kutu. Možete ići dalje nuliranjem prvih 10 000 brojeva:

Kako funkcionira JPEG format

20 000:

Kako funkcionira JPEG format

40 000:

Kako funkcionira JPEG format

60 000:

Kako funkcionira JPEG format

Ove visokofrekventne detalje uklanja JPEG tijekom faze kompresije. Nema gubitka u pretvaranju boja u DCT koeficijente. Gubitak se javlja u koraku uzorkovanja, gdje se uklanjaju visokofrekventne vrijednosti ili vrijednosti blizu nule. Kada smanjite kvalitetu spremanja JPEG-a, program povećava prag za broj uklonjenih vrijednosti, što smanjuje veličinu datoteke, ali čini sliku pikseliziranijom. Zato je slika u prvom dijelu, koji je bio 57 puta manji, izgledala ovako. Svaki 8x8 blok bio je predstavljen s mnogo manje DCT koeficijenata u usporedbi s kvalitetnijom verzijom.

Možete stvoriti tako cool efekt kao što je postupno strujanje slika. Možete prikazati mutnu sliku koja postaje sve detaljnija kako se preuzima sve više koeficijenata.

Evo, samo zabave radi, što dobivate koristeći samo 24 brojeva:

Kako funkcionira JPEG format

Ili samo 5000:

Kako funkcionira JPEG format

Jako mutno, ali nekako prepoznatljivo!

3. Kodiranje duljine izvođenja, delta i Huffman

Do sada su svi stupnjevi kompresije bili s gubicima. Posljednja faza, naprotiv, nastavlja se bez gubitaka. Ne briše informacije, ali značajno smanjuje veličinu datoteke.

Kako možete komprimirati nešto bez bacanja informacija? Zamislite kako bismo opisali jednostavan crni pravokutnik 700 x 437.

JPEG za to koristi 5000 brojeva, ali se mogu postići mnogo bolji rezultati. Možete li zamisliti shemu kodiranja koja bi opisala takvu sliku u što manje bajtova?

Minimalna shema koju sam mogao smisliti koristi četiri: tri za predstavljanje boje, a četvrti za označavanje koliko ta boja ima piksela. Ideja predstavljanja ponavljajućih vrijednosti na ovaj sažeti način naziva se kodiranje dužine izvođenja. Bez gubitaka je jer možemo vratiti kodirane podatke u izvorni oblik.

JPEG datoteka s crnim pravokutnikom mnogo je veća od 4 bajta - zapamtite da se na DCT razini kompresija primjenjuje na blokove piksela 8x8. Stoga nam je potreban najmanje jedan DCT koeficijent za svaka 64 piksela. Potreban nam je jer umjesto pohranjivanja jednog DCT koeficijenta iza kojeg slijede 63 nule, kodiranje dužine niza omogućuje nam pohranjivanje jednog broja i označavanje da su "svi ostali nule".

Delta kodiranje je tehnika u kojoj svaki bajt sadrži razliku od neke vrijednosti, a ne apsolutnu vrijednost. Stoga uređivanje određenih bajtova mijenja boju svih ostalih piksela. Na primjer, umjesto pohranjivanja

12 13 14 14 14 13 13 14

Mogli bismo početi s 12, a zatim jednostavno označiti koliko trebamo dodati ili oduzeti da bismo dobili sljedeći broj. I ovaj niz u delta kodiranju ima oblik:

12 1 1 0 0 -1 0 1

Konvertirani podaci nisu manji od izvornih podataka, ali ih je lakše komprimirati. Primjena delta kodiranja prije kodiranja dužine ciklusa može puno pomoći, a da pritom još uvijek bude kompresija bez gubitaka.

Delta kodiranje jedna je od rijetkih tehnika koje se koriste izvan blokova 8x8. Od 64 DCT koeficijenta, jedan je jednostavno konstantna valna funkcija (puna boja). Predstavlja prosječnu svjetlinu svakog bloka za luma komponente, ili prosječnu plavetnilo za Cb komponente, i tako dalje. Prva vrijednost svakog DCT bloka naziva se DC vrijednost, a svaka DC vrijednost je delta kodirana u odnosu na prethodne. Stoga će promjena svjetline prvog bloka utjecati na sve blokove.

Konačna misterija ostaje: kako promjena jednine potpuno uništava cijelu sliku? Do sada razine kompresije nisu imale takva svojstva. Odgovor leži u JPEG zaglavlju. Prvih 500 bajtova sadrži metapodatke o slici – širinu, visinu itd., a s njima još nismo radili.

Bez zaglavlja gotovo je nemoguće (ili vrlo teško) dekodirati JPEG. Izgledat će kao da vam pokušavam opisati sliku i počinjem izmišljati riječi kako bih prenijela svoj dojam. Opis će vjerojatno biti prilično sažet, jer mogu izmisliti riječi sa točno onakvim značenjem koje želim prenijeti, ali za sve ostale one neće imati smisla.

Zvuči glupo, ali događa se upravo to. Svaka JPEG slika je komprimirana sa specifičnim kodovima. Rječnik kodova pohranjuje se u zaglavlju. Ova tehnika se naziva Huffmanov kod, a vokabular se naziva Huffmanova tablica. U zaglavlju je tablica označena s dva bajta - 255 pa 196. Svaka komponenta boje može imati svoju tablicu.

Promjene u tablicama radikalno će utjecati na bilo koju sliku. Dobar primjer je promijeniti 15. red u 1.

Kako funkcionira JPEG format

To se događa jer tablice određuju kako se pojedinačni bitovi trebaju čitati. Do sada smo radili samo s binarnim brojevima u decimalnom obliku. Ali ovo skriva od nas činjenicu da ako želite pohraniti broj 1 u bajt, on će izgledati kao 00000001, budući da svaki bajt mora imati točno osam bitova, čak i ako je potreban samo jedan od njih.

Ovo je potencijalno veliki gubitak prostora ako imate puno malih brojeva. Huffmanov kod je tehnika koja nam omogućuje da ublažimo ovaj zahtjev da svaki broj mora zauzimati osam bitova. To znači da ako vidite dva bajta:

234 115

Zatim, ovisno o Huffmanovoj tablici, to mogu biti tri broja. Da biste ih izdvojili, prvo ih trebate rastaviti na pojedinačne dijelove:

11101010 01110011

Zatim gledamo u tablicu kako bismo smislili kako ih grupirati. Na primjer, ovo može biti prvih šest bitova, (111010), ili 58 u decimali, nakon čega slijedi pet bitova (10011), ili 19, i na kraju zadnja četiri bita (0011), ili 3.

Stoga je vrlo teško razumjeti bajtove u ovoj fazi kompresije. Bajtovi ne predstavljaju ono što se čine. U ovom članku neću ulaziti u detalje rada s tablicom, ali materijali o ovom pitanju online dovoljna je.

Jedan zanimljiv trik koji možete učiniti s ovim znanjem je odvojiti zaglavlje od JPEG-a i pohraniti ga odvojeno. Zapravo, ispada da samo vi možete pročitati datoteku. Facebook to radi kako bi datoteke još smanjio.

Ono što se još može učiniti je prilično promijeniti Huffmanovu tablicu. Za druge će izgledati kao pokvarena slika. I samo ćete vi znati čarobni način da to popravite.

Ukratko: što je potrebno za dekodiranje JPEG-a? Potrebno:

  1. Ekstrahirajte Huffmanovu tablicu(e) iz zaglavlja i dekodirajte bitove.
  2. Izdvojite koeficijente diskretne kosinusne transformacije za svaku komponentu boje i svjetline za svaki blok 8x8, izvodeći inverzne transformacije duljine izvođenja i delta kodiranja.
  3. Kombinirajte kosinuse na temelju koeficijenata da biste dobili vrijednosti piksela za svaki blok 8x8.
  4. Skalirajte komponente boje ako je provedeno poduzorkovanje (ove informacije nalaze se u zaglavlju).
  5. Pretvorite dobivene YCbCr vrijednosti za svaki piksel u RGB.
  6. Prikažite sliku na ekranu!

Ozbiljan posao za jednostavno gledanje fotografije s mačkom! Međutim, ono što mi se sviđa kod njega je to što pokazuje koliko je JPEG tehnologija usmjerena na čovjeka. Temelji se na osobitostima naše percepcije, omogućujući nam postizanje puno bolje kompresije od konvencionalnih tehnologija. A sada kada razumijemo kako JPEG radi, možemo zamisliti kako se te tehnologije mogu prenijeti na druga područja. Na primjer, delta kodiranje u videu može omogućiti značajno smanjenje veličine datoteke, budući da često postoje cijela područja koja se ne mijenjaju od okvira do okvira (na primjer, pozadina).

Kod korišten u članku, otvoren je i sadrži upute kako zamijeniti slike svojima.

Izvor: www.habr.com

Dodajte komentar