Kako funkcioniše JPEG format

JPEG slike su sveprisutne u našim digitalnim životima, ali iza tog plašta svjesnosti kriju se algoritmi koji uklanjaju detalje koje ljudsko oko ne može vidjeti. Rezultat je najviši vizuelni kvalitet u najmanjoj veličini datoteke - ali kako sve to točno funkcionira? Hajde da vidimo šta tačno naše oči ne vide!

Kako funkcioniše JPEG format

Lako je uzeti zdravo za gotovo mogućnost slanja fotografije prijatelju i ne brinuti o tome koji uređaj, pretraživač ili operativni sistem koriste – ali to nije uvijek bio slučaj. Do ranih 1980-ih, kompjuteri su mogli pohranjivati ​​i prikazivati ​​digitalne slike, ali postojale su mnoge konkurentske ideje o najboljem načinu da se to uradi. Ne možete jednostavno poslati sliku sa jednog računara na drugi i nadati se da će uspjeti.

Da bi se riješio ovaj problem, 1986. godine sastavljen je komitet stručnjaka iz cijelog svijeta pod nazivom "Zajednička grupa fotografskih eksperata” (Joint Photographic Experts Group, JPEG), osnovana u sklopu zajedničkog rada Međunarodne organizacije za standardizaciju (ISO) i Međunarodne elektrotehničke komisije (IEC), dvije međunarodne organizacije za standardizaciju sa sjedištem u Ženevi (Švicarska).

Grupa ljudi pod nazivom JPEG kreirala je standard JPEG digitalne kompresije slike 1992. godine. Svako ko je koristio internet vjerovatno je naišao na slike kodirane u JPEG formatu. 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 – gotovo svaki put kada pogledamo ili pošaljemo sliku na mreži. Bez JPEG-a, web bi bio manje svijetao, sporiji i vjerovatno bi imao manje slika mačaka!

Ovaj članak govori o tome kako dekodirati JPEG sliku. Drugim riječima, o tome šta je potrebno za pretvaranje komprimiranih podataka pohranjenih na računalu u sliku koja se pojavljuje na ekranu. Ovo vrijedi znati, ne samo zato što je važno za razumijevanje tehnologije koju svakodnevno koristimo, već i zato što ćemo otkrivanjem nivoa kompresije bolje upoznati percepciju i viziju, kao i koji detalji su naše oči najviše osjetljiv na.

Osim toga, veoma je zanimljivo igrati se sa slikama na ovaj način.

Kako funkcioniše JPEG format

Pogled u JPEG

Na računaru je sve pohranjeno kao niz binarnih brojeva. Obično se ovi bitovi, nule i jedinice, grupišu u osam, čineći bajtove. Kada otvorite JPEG sliku na računaru, nešto (pretraživač, operativni sistem, bilo šta) mora da dekodira bajtove, vraćajući originalnu sliku kao listu boja koje se mogu prikazati.

Ako preuzmete ovo slatko fotografija mačke i otvorite ga u uređivaču teksta, vidjet ćete gomilu zbrkanih znakova.

Kako funkcioniše JPEG format
Ovdje koristim Notepad++ da pregledam sadržaj datoteke, jer će uobičajeni tekstualni uređivači poput Notepad-a iz Windowsa zbrkati binarnu datoteku nakon što je sačuvaju i neće odgovarati JPEG formatu.

Otvaranje slike u uređivaču teksta zbunjuje vaš računar, baš kao što zbunjujete svoj mozak kada protrljate oči i počnete vidjeti obojene mrlje!

Ove tačke koje vidite su poznate kao fosfeni, i nisu rezultat izlaganja svjetlosnom stimulusu ili halucinacijama koje stvara um. Nastaju zato što vaš mozak misli da svi električni signali u optičkim nervima nose informacije o svjetlosti. Mozak treba da napravi takve pretpostavke, jer ne postoji način da se zna da li je signal zvuk, vizija ili nešto drugo. Svi nervi u tijelu prenose potpuno iste električne impulse. Kada vršite pritisak na oči, šaljete signale koji nisu vizualni, ali aktiviraju receptore u oku, koje vaš mozak tumači - u ovom slučaju, pogrešno - kao nešto vizualno. Bukvalno se vidi pritisak!

Smiješno je razmišljati o tome koliko su kompjuteri slični mozgu, ali to je i korisna analogija, koja ilustruje koliko značenje podataka – bilo da se prenose kroz tijelo živcima ili su pohranjeni u kompjuteru – ovisi o tome kako se tumače. Svi binarni podaci se sastoje od XNUMXs i XNUMXs, osnovnih komponenti koje mogu prenijeti bilo koju vrstu informacija. Vaš računar često pogađa kako ih protumačiti koristeći naznake kao što su ekstenzije datoteka. Sada ga činimo da ih tumači kao tekst, jer to očekuje uređivač teksta.

Da bismo razumjeli kako dekodirati JPEG, moramo vidjeti same originalne signale – binarne podatke. Ovo se može uraditi sa hex editorom ili direktno na njemu web stranica originalnog članka! Postoji slika pored koje su u tekstualnom polju svi njeni bajtovi (osim zaglavlja) prikazani u decimalnom obliku. Možete ih promijeniti i skripta će prekodirati i proizvesti novu sliku u hodu.

Kako funkcioniše JPEG format

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

U ovom primjeru, čudna stvar je da promjena nekih brojeva uopće ne utiče na sliku, a, na primjer, ako broj 17 zamijenite sa 0 u prvom redu, onda će fotografija biti potpuno uništena!

Kako funkcioniše JPEG format

Druge promjene, kao što je promjena 7 na liniji 1988 u 254, mijenjaju boju, ali samo sljedeće piksele.

Kako funkcioniše JPEG format

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

Kako funkcioniše JPEG format

I bez obzira koju JPEG sliku koristite, uvijek ćete pronaći te zagonetne šahovske uzorke kada uređujete bajtove.

Igrajući se sa uređivačem, teško je shvatiti kako ponovo kreirati fotografiju iz ovih bajtova, budući da se JPEG kompresija sastoji od tri različite tehnologije koje se primjenjuju uzastopno u nivoima. Proučavat ćemo svaki od njih posebno kako bismo otkrili misteriozno ponašanje koje opažamo.

Tri nivoa JPEG kompresije:

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

Da biste dobili predstavu o razmjeru kompresije, imajte na umu da gornja slika predstavlja 79 brojeva, što je oko 819 KB. Ako bismo ga pohranili bez kompresije, trebala bi nam tri broja za svaki piksel - za crvenu, zelenu i plavu komponentu. To bi iznosilo 79 brojeva, ili cca. 917 Kb. Kao rezultat JPEG kompresije, konačni fajl se smanjio za više od 700 puta!

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

Kako funkcioniše JPEG format

Ako bolje pogledate, vidjet ćete da ove slike nisu identične. Obe su slike sa JPEG kompresijom, ali desna je mnogo manjeg obima. Također izgleda malo lošije (pogledajte kvadrate u boji pozadine). Stoga se JPEG naziva i kompresija sa gubitkom; tokom procesa kompresije, slika se mijenja i gubi neke detalje.

1. Poduzorkovanje boja

Evo slike na kojoj je primijenjen samo prvi nivo kompresije.

Kako funkcioniše JPEG format
(Interaktivna verzija u original članci). Uklanjanje jednog broja uništava sve boje. Međutim, ako se ukloni tačno šest brojeva, to ima mali ili nikakav utjecaj na sliku.

Sada je brojeve malo lakše dešifrovati. Ovo je gotovo jednostavna lista boja, svaki bajt mijenja tačno jedan piksel, ali je već upola manji od nekomprimirane slike (koja bi u tako smanjenoj veličini zauzela oko 300 KB). Pogodite zašto?

Možete vidjeti da ovi brojevi ne predstavljaju standardne crvene, zelene i plave komponente, jer ako sve brojeve zamijenimo nulama, dobićemo zelenu sliku (ne bijelu).

Kako funkcioniše JPEG format

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

Kako funkcioniše JPEG format

Cb (relativno plava),

Kako funkcioniše JPEG format

i Cr (relativno crvenilo) slike.

Kako funkcioniše JPEG format

Zašto ne koristiti RGB? Uostalom, tako funkcionira većina modernih ekrana. Vaš monitor može prikazati bilo koju boju, uključujući crvenu, zelenu i plavu u različitim intenzitetima za svaki piksel. Bijela se dobija uključivanjem sve tri pri punoj svjetlini, a crna ih isključuje.

Kako funkcioniše JPEG format

Takođe je veoma sličan tome kako ljudsko oko funkcioniše. Receptori boje u našim očima se zovu "čunjevi“, a dijele se na tri tipa, od kojih je svaki osjetljiviji ili na crvenu, ili na zelenu, ili na plavu boju [čušci tipa S su osjetljivi na ljubičasto-plavu (S od engl. Short - kratkovalni spektar ), M-tip - u zeleno-žutom (M od engl. Medium - srednji talas), i L-tip - u žuto-crvenim (L od engl. Long - dugovalni) dijelovima spektra. Prisustvo ove tri vrste čunjeva (i štapića, osjetljivih u smaragdno zelenom dijelu spektra) daje osobi vid u boji. / cca. transl.]. Štapovi, druga vrsta fotoreceptora u našim očima, u stanju je da otkrije promjene u svjetlini, ali je mnogo osjetljivija na boje. Naše oči imaju oko 120 miliona štapića i samo 6 miliona čunjeva.

Stoga naše oči mnogo bolje primjećuju promjene u svjetlini nego promjene u boji. Ako odvojite boju od svjetline, možete ukloniti malo boje i niko ništa neće primijetiti. Poduzorkovanje boje je proces predstavljanja komponenti boje slike u nižoj rezoluciji od komponenti osvjetljenja. U gornjem primjeru, svaki piksel ima tačno jednu Y komponentu, a svaka pojedinačna grupa od četiri piksela ima tačno jednu Cb i jednu Cr komponentu. Dakle, slika sadrži četiri puta manje informacija o boji od originala.

Prostor boja YCbCr se ne koristi samo u JPEG-ovima. Prvobitno je izmišljen 1938. za TV emisije. Nemaju svi TV u boji, pa je razdvajanje boje i svjetline omogućilo svima da dobiju isti signal, a televizori bez boje samo su koristili samo komponentu svjetline.

Stoga uklanjanje jednog broja iz uređivača potpuno uništava sve boje. Komponente se pohranjuju u obliku YYYY Cb Cr (zapravo, ne nužno ovim redoslijedom - redosled skladištenja je naveden u zaglavlju datoteke). Uklanjanje prvog broja će uzrokovati da se prva vrijednost Cb interpretira kao Y, Cr kao Cb, i općenito će se dobiti domino efekat, mijenjajući sve boje slike.

JPEG specifikacija ne zahtijeva da koristite YCbCr. Ali u većini datoteka se koristi jer daje slike boljeg kvaliteta nakon poduzorkovanja u odnosu na RGB. Ali ne morate mi vjerovati na riječ. Uvjerite se sami u donjoj tabeli kako bi subsampling svake pojedinačne komponente izgledao u RGB i YCbCr.

Kako funkcioniše JPEG format
(Interaktivna verzija u original članci).

Uklanjanje plave nije tako primjetno kao crvene ili zelene. To je zbog šest miliona čunjića u vašim očima, oko 64% je osjetljivo na crvenu, 32% na zelenu i 2% na plavu.

Poduzorkovanje Y komponente (dolje lijevo) se najbolje vidi. Čak je i mala promjena primjetna.

Pretvaranje slike iz RGB u YCbCr ne smanjuje veličinu datoteke, ali olakšava pronalaženje manje uočljivih detalja koji se mogu ukloniti. Kompresija sa gubitkom se javlja u drugoj fazi. Zasnovan je na ideji da se podaci prezentiraju u komprimljivijem obliku.

2. Diskretna kosinusna transformacija i diskretizacija

Ovaj nivo kompresije, uglavnom, definiše suštinu JPEG-a. Nakon pretvaranja boja u YCbCr, komponente se kompresuju pojedinačno, tako da se od sada možemo koncentrirati samo na Y komponentu. A evo kako izgledaju bajtovi Y komponente nakon primjene ovog nivoa.

Kako funkcioniše JPEG format
(Interaktivna verzija u original članci). U interaktivnoj verziji, klikom na piksel skroluje uređivač do linije koja ga predstavlja. Pokušajte ukloniti brojeve s kraja ili dodati nekoliko nula određenom broju.

Na prvi pogled izgleda kao jako loša kompresija. Slika ima 100 piksela, a potrebno je 000 brojeva da bi označili njihovu svjetlinu (Y-komponente) - to je gore nego da ništa ne kompresujete!

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

Ovaj nivo sadrži tajnu šahovskih obrazaca. Za razliku od drugih efekata koje smo vidjeli, izgled ovih uzoraka nije kvar. Oni su gradivni blokovi cijele slike. Svaki red uređivača sadrži tačno 64 broja, koeficijente diskretne kosinusne transformacije (DCT) koji odgovaraju intenzitetima 64 jedinstvena uzorka.

Ovi obrasci se formiraju na osnovu kosinusne grafike. Evo kako neki od njih izgledaju:

Kako funkcioniše JPEG format
8 od 64 kvote

Ispod je slika koja prikazuje sva 64 uzorka.

Kako funkcioniše JPEG format
(Interaktivna verzija u original članci).

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

Činjenica da bilo koja slika može biti sastavljena od 64 specifična uzorka izgleda kao magija. Međutim, ovo je isto kao da se kaže da se bilo koje mjesto na Zemlji može opisati sa dva broja - geografskom širinom i dužinom [koji označavaju hemisfere / pribl. transl.]. Često razmišljamo o Zemljinoj površini kao o dvodimenzionalnoj, tako da 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 smislu kompresije. Ako nam treba 64 broja za predstavljanje 8x8 slike, zašto bi ovo bilo bolje od jednostavnog pohranjivanja 64 komponente osvjetljenja? To radimo iz istog razloga zbog kojeg smo tri RGB broja pretvorili u tri YCbCr broja: to nam omogućava da uklonimo suptilne detalje.

Teško je vidjeti koji se tačno detalji uklanjaju u ovoj fazi jer JPEG primjenjuje DCT na blokove 8x8. Međutim, niko nam ne brani da to primenimo na celu sliku. Evo kako DCT izgleda za Y komponentu kada se primjenjuje na cijelu sliku:

Kako funkcioniše JPEG format

Više od 60 brojeva može se ukloniti s kraja bez praktički primjetnih promjena na fotografiji.

Kako funkcioniše JPEG format

Imajte na umu, međutim, da će razlika biti očigledna ako izbrišemo prvih pet brojeva.

Kako funkcioniše JPEG format

Brojevi na početku predstavljaju promjene niske frekvencije na slici, a naše oči ih najbolje uočavaju. Brojevi pri kraju označavaju promjene visoke frekvencije koje je teže primijetiti. Da bismo "vidjeli ono što oko ne može vidjeti", možemo izolirati ove visokofrekventne detalje nuliranjem prvih 5000 brojeva.

Kako funkcioniše JPEG format

Vidimo sva područja slike u kojima se dešava najveća promjena od piksela do piksela. Ističu se oči mačke, njegovi brkovi, frotir i sjene u donjem lijevom uglu. Možete ići dalje nuliranjem prvih 10 brojeva:

Kako funkcioniše JPEG format

20 000:

Kako funkcioniše JPEG format

40 000:

Kako funkcioniše JPEG format

60 000:

Kako funkcioniše JPEG format

Ove visokofrekventne detalje uklanja JPEG tokom faze kompresije. Pretvaranje boja u DCT koeficijente je bez gubitaka. Gubici se formiraju u koraku uzorkovanja, gdje se uklanjaju vrijednosti visoke frekvencije ili blizu nule. Kada smanjite kvalitet JPEG snimanja, program povećava prag za broj vrijednosti koje treba ukloniti, što smanjuje veličinu datoteke, ali čini sliku pikseliziranom. Tako je slika u prvoj sekciji, koja je bila 57 puta manja, izgledala ovako. Svaki blok 8x8 predstavljao je mnogo manji broj DCT koeficijenata u odnosu na verziju višeg kvaliteta.

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

Evo, iz zabave, šta se dešava kada koristite samo 24 brojeva:

Kako funkcioniše JPEG format

Ili samo 5000:

Kako funkcioniše JPEG format

Veoma mutno, ali prepoznatljivo!

3. Kodiranje dužina trčanja, delta i Huffman

Do sada su sve faze kompresije bile s gubicima. Posljednja faza, naprotiv, prolazi bez gubitaka. Ne uklanja informacije, ali značajno smanjuje veličinu datoteke.

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

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

Minimalna šema koju sam mogao smisliti koristi četiri: tri za boju, a četvrtu za koliko piksela ta boja ima. Ideja predstavljanja ponovljenih vrijednosti na tako komprimirani način naziva se kodiranje dužine trajanja. Bez gubitaka je jer možemo povratiti kodirane podatke u izvornom obliku.

Veličina JPEG datoteke sa crnim pravokutnikom je mnogo veća od 4 bajta - zapamtite da se na DCT nivou kompresija primjenjuje na blokove od 8x8 piksela. Stoga nam je, kao minimum, potreban jedan DCT koeficijent za svaka 64 piksela. Jedan nam je potreban jer umjesto pohranjivanja jednog DCT koeficijenta praćenog sa 63 nule, kodiranje dužine trajanja nam omogućava da pohranimo jedan broj i označimo "svi ostali su nule".

Delta kodiranje je tehnika u kojoj svaki bajt sadrži razliku od neke vrijednosti, a ne apsolutne vrijednosti. 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 sa 12, a zatim samo zapisati koliko treba dodati ili oduzeti da dobijemo sljedeći broj. A ovaj niz u delta kodiranju ima oblik:

12 1 1 0 0 -1 0 1

Konvertirani podaci nisu manji od originalnih, ali ih je lakše komprimirati. Primjena delta kodiranja prije kodiranja dužine runde može mnogo pomoći dok je i dalje kompresija bez gubitaka.

Delta kodiranje je jedna 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 komponente osvjetljenja, ili prosječnu plavu boju za Cb komponente, itd. 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.

Ostaje posljednja misterija: kako promjena singularnog broja potpuno pokvari cijelu sliku? Do sada nivoi kompresije nisu imali takva svojstva. Odgovor leži u JPEG zaglavlju. Prvih 500 bajtova sadrži metapodatke o slici - širinu, visinu itd. i do sada nismo radili sa njima.

Bez zaglavlja, gotovo je nemoguće (pa, vrlo teško) dekodirati JPEG. Izgledaće kao da pokušavam da vam opišem sliku, a počinjem da izmišljam reči da prenesem svoj utisak. Opis će vjerovatno biti vrlo sažet, jer mogu izmisliti riječi sa tačno značenjem koje želim prenijeti, ali za sve ostale one neće imati smisla.

Zvuči glupo, ali upravo to se dešava. Svaka JPEG slika je komprimirana sa specifičnim kodovima. Rečnik kodova je pohranjen u zaglavlju. Ova tehnika se zove "Huffman kod", a rečnik se zove Huffmanova tabela. U zaglavlju je tabela označena sa dva bajta - 255, a zatim 196. Svaka komponenta boje može imati svoju tabelu.

Promjene tablice drastično će utjecati na bilo koju sliku. Dobar primjer je da promijenite 15 u 1 u 12. redu.

Kako funkcioniše JPEG format

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

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

234 115

Zatim, ovisno o Huffmanovoj tabeli, to mogu biti tri broja. Da biste ih izdvojili, prvo ih morate podijeliti na pojedinačne bitove:

11101010 01110011

Zatim se okrećemo tabeli da shvatimo kako ih grupirati. Na primjer, to može biti prvih šest bita (111010) ili 58 u decimalnom obliku, nakon čega slijedi pet bitova (10011) ili 19 i na kraju posljednja četiri bita (0011) ili 3.

Stoga je vrlo teško razumjeti bajtove u ovoj fazi kompresije. Bajtovi ne predstavljaju ono što izgledaju. Neću ulaziti u detalje rada sa tabelom u ovom članku, ali materijali o ovom pitanju online dovoljno.

Jedan od sjajnih trikova koje možete učiniti s ovim znanjem je da odvojite zaglavlje od JPEG-a i pohranite ga zasebno. U stvari, ispostavilo se da samo vi možete čitati datoteku. Facebook to čini kako bi dodatno smanjio datoteke.

Ono što se još može učiniti je da se prilično promijeni Huffman tabela. Za druge će to izgledati kao pokvarena slika. I samo ćete vi znati čarobnu opciju da to popravite.

Da sumiramo: šta je onda potrebno za dekodiranje JPEG-a? potrebno:

  1. Izvucite Huffmanovu tablicu(e) iz zaglavlja i dekodirajte bitove.
  2. Izdvojite koeficijente diskretne kosinusne transformacije za svaku komponentu boje i osvjetljenja za svaki blok 8x8 inverznom transformacijom kodiranja dužine ciklusa i delta.
  3. Kombinujte kosinuse na osnovu koeficijenata da biste dobili vrednosti piksela za svaki blok 8x8.
  4. Skalirajte komponente boje ako je izvršeno poduzorkovanje (ova informacija se nalazi u zaglavlju).
  5. Pretvorite rezultirajuće YCbCr vrijednosti za svaki piksel u RGB.
  6. Prenesite sliku na ekran!

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 karakteristikama naše percepcije, što nam omogućava da postignemo mnogo bolju kompresiju od konvencionalnih tehnologija. A sada, razumijevajući kako JPEG funkcionira, možete zamisliti kako se ove tehnologije mogu prenijeti na druga područja. Na primjer, delta kodiranje u videu može rezultirati značajnim smanjenjem veličine datoteke, jer često postoje čitave oblasti koje se ne mijenjaju od kadra do kadra (na primjer, pozadina).

Šifra korištena u članku, je otvoren i sadrži upute za zamjenu slika vašima.

izvor: www.habr.com

Dodajte komentar