Cum funcționează codarea JPEG și video pe foarte scurt

By | June 2, 2013

Google a lansat două noi formate pentru imagini respectiv video. Eu m-am apucat să scriu cel de-al doilea articol despre noutățile Google de la I/O 2013. Când am ajuns la partea cu codarea video am încercat să explic pe scurt cum funcționează. Doar că m-a luat valul și am făcut un roman fluviu. M-am decis să fac un articol separat, pentru că nimeni de pe această planetă nu ar avea răbdare să citească un articol așa de lung.

 

JPEG

Se analizează imaginea și se împarte în blocuri de 8×8 pixeli. Se atribuie mai mulți biți pentru codarea informației care este sensibilă pentru ochi (procedeul se numește cuantizare). Informațiile peste un anumit prag, care nu sunt perceptibile de sistemul vizual uman sunt eliminate. Apoi se folosește codarea predictivă pentru a determina în ce relație este blocul curent față de blocurile din jur. Nu se transmite decât diferența între blocul referință și următorul scanat. Dacă valorile nu se schimbă, nu se transmite nimic (de exemplu o cămașă albă este alcătuită din mai multe blocuri de 8×8 pixeli deci nu s-ar transmite decât un singur bloc).

De-a lungul timpului au apărut mult mai multe formate, mult mai bune decât JPEG. Dacă vrei să salvezi o poză la calitate cât mai bună situația stă acum în felul următor: “Orice numai JPEG NU!“. JPEG2000, PNG, orice este mai bun decât JPEG. Şi cu toate astea JPEG-ul se folosește pentru că a ajuns să fie cel mai popular și pentru că sunt mulți producători (de camere foto de ex) care îl bagă la înaintare.

H261, H264, MPEG

MPEG înseamnă Moving motion JPEG. Așa că pe partea video, codarea funcționează aproape identic cu cea de la JPEG. Asta deoarece un filmuleț este compus din mai multe imagini. Singura diferență este că blocul de pixeli (16×16 în cazul video) este acum integrat într-un macrobloc. Se setează un cadru (frame) drept referință. Folosind aceeași codare predictivă se determină ce tip de mișcare este față de cadrul de referință (rotație, translație, zoom).

Ar mai fi de spus că există cadre de tip I,P și B. Cele I conțin foarte multă informație. Un steam alcătuit doar din cadre de tip I ar fi de o dimensiune mult prea mare, motiv pentru care se apelează la cadre P și B. Bine, ar mai fi multe de spus despre relația între frame-uri … foarte multe.

Dar articolul meu este pe scurt, foarte scurt. Așa că mă opresc aici.

poza este din articolul wikipedia despre JPEG

 

11 comentarii la: “Cum funcționează codarea JPEG și video pe foarte scurt

  1. Cristi

    MPEG inseamna Motion Picture Experts Group
    Motion JPEG e altceva

    Reply
    1. Cristi

      am aburit-o si eu.. e chiar Moving Picture Experts Group

    2. revo Post author

      Nu-i nimic, eu mă bucur când mă corectează cineva 🙂

  2. Masterdot

    Si ce aduc nou din punct de vedere al codarii/decodarii formatele alea ale lui Gogu de care aminteai? Cum de obtin rate de compresie asa bune fara sa afecteze calitatea?

    Reply
    1. revo Post author

      Salut, foarte bună întrebarea. Ei spun ceva despre o paletă de culori însă recunosc că nu m-am prins exact cum funcționează.

      “Lossless WebP compression uses already seen image fragments in order to exactly reconstruct new pixels. It can also use a local palette if no interesting match is found. This palette is continuously updated to re-use recent colors. This compression mode is named “VP8L” and shares some common features with the so-called LZ77 compression algorithm.”

      Mai multe detalii aici: https://developers.google.com/speed/webp/

  3. nicubunu

    legat de “Orice numai JPEG NU!“, as zice ca nu e asa, JPEG e totusi cel mai bun compromis pentru fotografii:
    – JPEG2000 este foarte putin suportat de catre diversele aplicatii (mare parte din vina a avut aici restrictionarea sa prin patente, lumea s-a ferit de el ca de un cimp minat);
    – PNG are compresie loseless, este bun pentru desene, dar pentru fotografii rezulta fisiere mult mai mari

    Reply
    1. revo Post author

      Cam da, dar eu mă refeream aici strict la calitatea pozei. Pentru cazuri excepționale gen afișe, bannere. Pentru majoritatea cazurilor e OK JPEG într-adevăr.

    2. nicubunu

      daca vrei calitate exista RAW, TIFF si chiar PSD 🙂
      am vazut ca multi nu stiu ca la creerea unui JPEG exista si un parametru, factor de compresie sau calitate, de obicei exprimat pe o scara de la 1 la 100 si care influenteaza foarte tare dimensiunea fisierului dar si calitatea imaginii. e si asta o discutie de facut, o calitate obti la 99-100%, o alta la 75-80% si cu totul alta la 20%. in functie de nevoile tale s-ar putea sa iti ofere pe undeva un compromis optim.

    3. revo Post author

      Da, un fun fact în legătură cu asta: După ce ai editat poza ar trebui să setezi sliderul ăla așa încât mărimea pozei să nu o depășească pe cea inițială. Dacă poza ta are 1MB, setezi 100% calitate și dimensiunea crește la 1.5MB, asta nu înseamnă că a îmbunătățit-o 🙂

    4. nicubunu

      comprimare cu pierderi peste comprimare cu pierderi, tot se pierde ceva, indiferent de factorul de comprimare.
      buna practica este ca versiunile intermediare de editare sa le salvezi in formate loseless si abia la final sa exporti JPEG

Leave a Reply

Your email address will not be published. Required fields are marked *