Creeaza.com - informatii profesionale despre


Simplitatea lucrurilor complicate - Referate profesionale unice
Acasa » referate » informatica » grafica design
Progressive JPEG

Progressive JPEG




Progressive JPEG

Orice JPEG poate fi salvat ca Progressive JPEG. Acesta este foarte similar cu GIF-ul intretesut. Ca si in cazul GIF-ului, este afisata o imagine la o calitate scazuta si dupa mai multe treceri calitatea se imbunatateste. Unele unelte de prelucrare grafica permit specificarea numarului de pasi in care se afiseaza imaginea, descarcarea completa a fisierului.

JPEG, a fost creat pentru a comprima fie imagini color, fie imagini alb-negru, din lumea reala. Merge foarte bine pe fotografii, scene din natura, dar mai putin pe imagini care contin text sau care contin linii, cercuri, s.a.m.d.

Standardul care 'ii face concurenta' JPEG-ului, este standardul GIF(Graphics Interchange Format, creat de Compuserve).  Avantajul standardului JPEG, este ca poate comprima imagini pe 24 de biti(16 milioane de culori), in timp ce GIF, lucreazaa cu imagini de 8 biti(256 de culori). Bineinteles, ca si GIF, are partile lui bune; de exemplu, se descurcal mai bine cu imaginile cu care nu prea se descurca JPEG(contin text, linii, imagini simple, in general), se descurca mai bine si cu imaginile care au foarte putine culori.

JPEG, are una dintre cele mai bune scheme de compresie a imaginilor pe 24 de biti. Obtine o compresie de la 10:1, pana la 20:1(fara o pierdere mare din calitatea imaginii), in timp ce alti algoritmi obtin compresii de doar 2:1.



Majoritatea comprimatoarelor JPEG, dau dreptul utilizatorului sa aleaga un anumit factor de compresie. Acest factor de compresie, este pur arbitrar, el nefiind standardizat; deci, un factor de compresie de 80, nu inseamna ca se va pastra 80% din datele originale. Chiar mai mult, factorul poate varia la unele compresoare; sunt compresoare care pun la dispozitie un factor in gama 0-100, altele in gama 0-4, altele doar mare-medie-mica.

Cel care alege factorul de compresie, trebuie sa stie ce doreste: o marime mica sau o calitate mare. Compresia cu acelasi factor, poate da rezultate mai bune pe unele tipuri de imagini decat pe altele, deci trebuie ales factorul si in functie de imaginea care urmeaza a fi comprimata.

Este recomandat, ca pentru o buna compresie/marime, sa se foloseasca factorul 75. Daca se doreste o calitate mai buna, este indicat sa se utilizeze un factor de pana la 95, deoarece un factor de 100, obtine un fisier de doua ori mai mare, nejustificat de diferenta de calitate. Iar, daca se doreste o marime mai mica, este recomandat un factor de 10-15.

Ca urmare a digitizarii imaginilor (prin scanare, de exemplu), rezulta o schema de culori ce foloseste cate 24 biti pe pixel - cate 8 pentru fiecare componenta RGB (red, green, blue). Un format comprimat, GIF de exemplu, foloseste o tabela de culori avand 256 de intrari. Acest lucru inseamna ca fiecare pixel va fi reprezentat pe 8 biti (nu pe 24 de biti-deci un prim pas spre comprimarea informatiei). GIF comprima in continuare cei 8 biti pe pixel folosind algoritmul LZW dar acest lucru nu mai ajuta foarte mult la comprimare. JPEG, pe de alta parte, stocheaza, in primul rand, informatiile privind schimbarile de culoare, in special variatiile de stralucire. Atat timp cat imaginea reconstruita va pastra aceste variatii, totul va fi foarte apropiat de original.

Daca este sa analizam formatul JPEG prin considerarea cailor traditionale de urmat in cazul algoritmilor de compresie a imaginilor digitale trebuie sa spunem ca tehnica folosita aici este departe de a fi comuna, in schimb se apropie foarte mult de modul de lucru al televiziunii.

JPEG nu mai este foarte eficient in cazul imaginilor ce contin un numar mic de culori si un numar mic de muchii, ca in cazul animatiilor generate pe calculator, alte formate grafice fiind mult mai eficiente in aceasta situatie. Spatiul care se poate salva folosind formatul JPEG este destul de mare.

Sa luam in considerare un exemplu simplu. O imagine avand dimensiunile de 727 x 525 pixeli cu 24 biti pe pixel, va ocupa in forma necomprimata cam 1145 Kb. Versiunea GIF va fi de aproximativ 240 Kb. Un fisier in format JPEG de inalta calitate va ocupa 155 Kb iar in cazul JPEG de calitate standard, va fi ocupat un spatiu de 58 Kb. De fapt, JPEG-ul ce ocupa 58 Kb este de calitate mai inalta ca GIF-ul. Secretul consta, dupa cum am mai spus, in faptul ca se pastreaza variatiile de culoare si nu culoarea in sine. In plus, in cazul JPEG-ului avem de-a face cu pastrarea informatiei despre pixel pe un singur bit.

De altfel JPEG permite multe optiuni de codificare si comprimare. Noi ne vom concentra pe JPEG standard, o versiune pe care toate implementarile soft trebuie sa o suporte si deci sa o foloseasca. Decodificarea informatiilor stocate incepe prin convertirea imaginii RGB intr-un spatiu color de tip luminanta/crominanta, folosind formulele de calcul discutate in sectiunea urmatoare. De fapt aici este vorba despre o imagine bazata pe o scala a nuantelor de gri plus doua canale ce stocheaza informatii despre variatiile de culoare. Datele imaginii se prelucreaza prin impartirea acesteia in blocuri de 8x8 pixeli. In continuare se aplica o transformare cosinus discreta (DCT - discrete cosine transform) in scopul convertirii informatiilor relative la imaginea bitmap in informatii legate de ratele de schimbare (se mai foloseste si termenul de analiza in frecventa). Cuantificarea, care este pasul urmator, produce trunchierea rezultatelor codificarii DCT obtinandu-se informatiile intr-un interval mai redus de valori. Aceasta cuantificare este pasul care face ca algoritmul JPEG-ului sa provoace o pierdere de informatie. Aplicatiile care permit inregistrarea imaginilor in format JPEG ofera utilizatorului posibilitatea de a regla rata de compresie.

In final, rezultatele cuantificarii sunt comprimate folosind algoritmul Huffman. Decomprimarea imaginii decurge prin parcurgerea etapelor descrise anterior in ordine inversa. In primul rand are loc decomprimarea rezultatelor cuantificate si apoi se utilizeaza transformarea cosinus inversa pentru reconstruirea imaginii. Bitii cei mai putini semnificativi (pierduti la cuantificare) nu pot fi regasiti si atunci algorimul de decomprimare insereaza zerouri in locul lor.



Intr-o imagine color, JPEG comprima fiecare componenta de culoare separat. Desi este posibila comprimarea componentelor de rosu, verde si albastru intr-un mod eficient totusi comprimarea JPEG lucreaza mai bine atunci cand se aplica informatiilor de culoare exprimate sub forma luminanta (stralucire) si crominanta. Acest lucru este mult mai folositor deoarece ochiul este mai putin senzitiv la schimbarile de culoare decat la schimbarile de luminozitate. Astfel canalele de crominanta pot fi codificate cu pierderi mai mari decat canalul de luminanta. Intr-o imagine de tip RGB, toate cele trei canale contin informatii despre luminozitate si ca urmare toate trei vor fi codificate cu aceeasi rata.

O schema de culori acceptata in toata lumea, cunoscuta sub denumirea de CCIR 601, foloseste trei componente Y, Cb si Cr care, spus in general, se refera la luminozitate, "albastreala' si "roseata'. Componenta Y poate fi utilizata direct ca fiind versiunea alb-negru a imaginii (uneori Cb si Cr sunt numite U si V iar schema de culori este referita prin notatia YUV, totusi in sens strict tehnic YUV nu este acelasi lucru cu YCbCr). Considerand deci ca fisierul initial este stocat folosind schema de culori RGB, pentru a ajunge la reprezentarea YCbCr vom putea folosi urmatoarele formule de calcul:

Y = 0,229R + 0,587G + 0,114B
Cb = 0,1687R - 0,3313G + 0,5B
Cr = 0,5R - 0,4187G - 0,0813B

Trebuie spus ca aceasta transformare este in principiu fara pierderi deoarece, per asamblu, tripletul YCbCr contine aceleasi informatii ca si RGB dar repartizate putin altfel (in practica se introduc anumite erori de rotunjire adica respectiv componentele Y, Cb, Cr vor fi niste valori intregi prin rotunjire si atunci la refacerea tripletului RGB valorile componentelor pot diferi putin fata de original).

La refacerea infomatiilor initiale vom avea nevoie de valorile tripletului RGB. In acest scop se pot folosi urmatoarele formule:

R = Y + 1,402(Cr-128)
G = Y - 0,34414(Cb-128) - 0,71414(Cr- 128)
B = Y + 1,772(Cb - 128)

Formatul grafic JPEG accepta ca cele trei componente ale tripletului YCbCr sa fie comprimate folosind rate de compresie diferite. O posibilitate folosita in mod curent propune utilizarea a cate unei valori Cb si Cr pentru fiecare 4 valori ale componentei Y. In acest mod, pentru fiecare dreptunghi de 2 x 2 pixeli vor exista 4 valori pentru componenta Y respectiv o valoare Cb si o valoare Cr. Folosind ideea descrisa mai inainte vom putea salva 50% din spatiul utilizat (6 valori in loc de 12) fara ca acest lucru sa aiba vreo influenta asupra calitatii imaginii percepute de ochiul uman.

Tehnica esantionarii anumitor componente la rate mai mici decat altele este cunoscuta prin denumirea de subesantionare (termenul in limba engleza este subsampling). Parametrii folositi pentru esantionare impreuna cu parametrii folositi in faza de cuantificare, determina rata de compresie. Intr-un fisier JPEG standard, toti acesti parametri sunt inclusi in header si ca urmare decodificatorul poate reconstrui imaginea corect.



Alte posibilitati de comprimare

Dupa cum am amintit mai la inceput, formatul grafic JPEG permite o multime de alte moduri de comprimare si respectiv stocare a informatiei. In continuare voi spune cateva cuvinte despre unele dintre aceste tehnici.

Modul ierarhic

In cadrul acestui mod de lucru, o imagine este stocata la cateva rezolutii, in mod crescator. Parca nu ati inteles nimic din propozitia anterioara. Am dorit sa spun ca, de exemplu, o imagine de 1000 x 1000 pixeli poate fi stocata prima data intr-o versiune de rezolutie 10 x 10, apoi 100 x 100 si in final 1000 x 1000. Fiecare versiune a imaginii este stocata ca fiind o diferenta fata de versiunea precedenta, de rezolutie mai mica. In general, aplicatiile actuale nu implementeaza acest mod de lucru ierarhic dar o vor face probabil in viitor.

Modul de lucru fara pierderi

Exista si un astfel de mod de lucru specificat pentru acei utilizatori care din diferite motive doresc (sau au nevoie) sa reconstruiasca imaginea bit cu bit. Aceasta metoda face ca fiecare pixel sa fie stocat ca diferenta fata de pixelii situati deasupra lui sau in stanga. In acest caz nu va mai fi folosita deloc faza transformarii cosinus discrete la fel precum nu va fi folosita transformarea spatiului de culoare (din RGB in YCbCr). Acestea deoarece prin prelucrarile pe care le aplica imaginii pot introduce (si chiar introduc) mici pierderi de informatie. Deci practic acest mod de lucru fara pierderi are destul de putin in comun cu formatul JPEG, exceptand numele folosit.

Modul progresiv

In situatiile in care o imagine JPEG este decomprimata pe masura ce este receptionata de undeva (prin modem de exemplu) ar fi foarte interesant sa putem afisa o versiune tot mai buna a acesteia pe masura ce soseste.

Selectia spectrala transmite intai componentele de frecventa mica pentru fiecare bloc de 8 x 8 iar apoi transmite componentele de frecventa inalta. Un alt mod posibil de lucru este cel prin care se transmit prima data cei mai semnificativi patru biti si in continuare se transmit cei mai putin semnificativi patru biti. Cele doua moduri, descrise in acest alineat, pot fi combinate dupa cum este nevoie.

Iarasi nici o implementare nu suporta modurile progresive de lucru deoarece toate au nevoie in primul rand de fisierul stocat pe disc si procesul de codificare-decodificare este destul de incet. Probabil ca viitoarele implementari hard vor permite folosirea acestor moduri de lucru.

In ultima etapa vor fi comprimate celelalte blocuri in mod obisnuit si vor fi stocate pe harddisk intr-un fisier JPEG. In functie de continutul imaginii, aceasta metoda economiseste intre 50 si 70 de procente din spatiu de stocare, fara sa fie observata o pierdere a calitatii.

O consecinta a comprimarii puternice cu JPEG este faptul ca aceste fisiere pot fi transferate prin modem prin intermediul liniei telefonice. Astfel, majoritatea imaginilor din Internet sunt codificate JPEG. JPEG aduce cu sine, in schimb, si o serie intreaga de dezavantaje. Daca in cazul fotografiilor comprimarea decurge fara probleme, in schimb la desenele tehnice, de exemplu, apar probleme serioase.







Politica de confidentialitate







creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.