650 likes | 797 Views
UNIVERSITY POLITEHNICA of BUCHAREST DEPARTMENT OF COMPUTER SCIENCE. Transmisia datelor multimedia in retele de calculatoare Standardul JPEG2000. Conf. Dr. Ing . Costin-Anton Boiangiu < Costin.Boiangiu@CS.PUB.RO >. JPEG 2000.
E N D
UNIVERSITY POLITEHNICA of BUCHAREST DEPARTMENT OF COMPUTER SCIENCE Transmisiadatelor multimedia in retele de calculatoareStandardul JPEG2000 Conf. Dr. Ing. Costin-Anton Boiangiu <Costin.Boiangiu@CS.PUB.RO>
JPEG 2000 • Nou standard de compresie a imaginilor, bazatpeWavelet-uri • A aparutdinnevoia de a depasilimitarileformatului JPEG • JPEG foloseşte transformarea cosinus discretă pe grupuri de pixeli de dimensiunea 8 x 8 => uneori o imagine estereconstruită eronat (în special când parametrii JPEG sunt setaţi la valori cu pierderi mari de informaţie) • Acceptat ca standard internaţional de către ISO şi ITU-T in Decembrie 2000
Avantaje • Eficienţă mare a compresiei • se aşteaptă rate de biţi mai mici de 0.25 BPP pentru imagini foarte detaliate în tonuri de gri • Posibilitatea aplicării asupra imaginilor de dimensiuni mari, până la 232 x 232 pixeli • formatul original JPEG nu poate lucra cu imagini mai mari de 216 x 216 • Transmisia progresivă a imaginii • standardul propus poate decomprima progresiv o imagine în funcţie de mai mulţi factori, cum ar fi: • raportul semnal-zgomot • rezoluţia • componenta de culoare • regiunile de interes
Avantaje • Acces rapid şifacil la diferitepuncte din fluxul de date comprimate • Decodificatorul poate efectua operaţii de „pan/zoom” asupra imaginii în timp ce decomprimă doar părţi ale acesteia • Decodificatorul poate roti sau decupa imaginea în timp ce o decomprimă • Rezistenţă la erori • Coduri de corectare a erorilor pot fi introduse în fluxul de date comprimate pentru a îmbunătăţi fiabilitatea transmisiei în medii cu un nivel ridicat de zgomot
„Comprimă o dată, decomprimă în mai multe moduri“ • Codificatorul JPEG 2000 alege o valoare maximă pentru calitatea imaginii, notată Q, şi o rezoluţie maximă, R, apoi comprimă imaginea folosind aceşti parametri • Decodificatorul poate: • decomprima imaginea folosind orice valoare a calităţii mai mică sau egală cu Q, şi la orice rezoluţie mai mică sau egală decât R • decomprima părţi din imagine (regiuni de interes) la rezoluţie şi/sau calitate maximă sau scăzută • extrage părţi din fluxul de date comprimate şi le poate asambla pentru a crea un nou flux comprimat, fără a executa operaţii de decomprimare (se poate obţine o imagine la o rezoluţie sau calitate mai mică fără ca decodificatorul să fie nevoit sa efectueze operaţii de decomprimare) • Avantajele acestei abordări sunt scăderea timpului şi spaţiului necesar şi limitarea nivelului de zgomot prezent în imagine (acest nivel creşte în momentul în care o imagine este comprimată şi decomprimată cu pierderi în mod repetat)
Decupareaşitransformareaimaginii • La comprimarea iniţială a imaginii se pot specifica anumite regiuni de interes („ROI - Regions Of Interest”) • Decodificatorul poate accesa datele comprimate aparţinând oricărei regiuni şi le poate scrie ca un nou flux de date comprimate • Aceasta necesită o procesare specială în zonele marginale ale regiunii, dar nu este nevoie să se decomprime întreaga imagine şi apoi să se recomprime doar regiunea în cauză • Rotirea imaginii cu 90°, 180° sau 270° se poate face complet în fluxul de date comprimat fără a fi nevoie de o decomprimare
Decodificarea progresivă a imaginii • Pe măsură ce decodificatorul primeşte date din fluxul comprimat, acesta îmbunătăţeşte calitatea imaginii afişate • 0.05 biţi/pixel au fost procesaţi de către decodificator => imagineadevineusor de recunoscut • 0.25 biţi/pixel au fost procesaţi de către decodificator => imaginea are un aspect uniform, prezentând doar câteva efecte nedorite date de compresie • Când începe procesul, decodificatorul creează o variantă redusă ca dimensiune („thumbnail”) a imaginii • Pe măsură ce procesează mai multe date, decodificatorul adaugă pixeli la imaginea afişată, mărindu-i dimensiunea în mai mulţi paşi • Fiecare pas dublează atât lungimea cât şi lăţimea imaginii => rezoluţia este crescuta progresiv
Decodificarea progresivă (rezolutie) • Imagine: “gold” • Nivele de rezolutie: 5
Decodificarea progresivă (calitate) • Imagine: “gold” • Bitrates: • 0.0625 bpp • 0.125 bpp • 0.25 bpp • 0.5 bpp • 1.0 bpp • 2.0 bpp
Decodificarea progresivă (calitate) 0.0625 BPP
Decodificarea progresivă (calitate) 0.125 BPP
Decodificarea progresivă (calitate) 0.25 BPP
Decodificarea progresivă a componentelor • Majoritatea imaginilor au fie una sau trei componente de culoare, dar se pot întâlni imagini cu patru componente, cum ar fi cele în spaţiul CMYK • Formatul JPEG 2000 permite până la 16K (16384) componente, aceste componente putând fi straturi suplimentare ale imaginii ce conţin text sau grafică • Dacă fluxul de date comprimate este pregătit pentru decomprimare progresivă pe componente, imaginea este iniţial decodificată în nuanţe de gri, apoi în culori, iar apoi diferitele componente suplimentare sunt decomprimate şi afişate pentru a adăuga detalii
Algoritmul JPEG 2000 • Dacă imaginea ce trebuie comprimată este în culori, aceasta este împărţită în trei componente • Fiecare componentă este partiţionată în regiuni rectangulare, nesuprapuse, numite plăci („tiles”), ce sunt comprimate individual • O placă este comprimată în patru paşi: • Calculareaunei Transformate Wavelet ce rezultă în sub-benzi şi coeficienţi Wavelet • Există L+1 niveluri de rezoluţie ale sub-benzilor, unde L reprezintă un parametru determinat de codificator • Coeficienţii Wavelet sunt cuantizaţi, dacă utilizatorul specifică o rată de biţi dorită • Codificarea aritmetică a coeficienţilor Waveletfolosind„Codificatorul MQ” • Construirea fluxului de biţi
Componente de culoare • Primul pas al codificatorului JPEG 2000 este transformarea componentelor folosind: • o transformare reversibilă a componentelor (TRC) sau • o transformare ireversibilă a componentelor (TIC) • Fiecare componentă transformată este apoi comprimată individual • TRC este o transformare de decorelare şi poate fi folosită împreună cu transformata Wavelet (care este reversibilă)
Componente de culoare • Considerand valorile pixelilor fiecărei componente i a imaginii cu Ii(x,y) pentru i = 0,1 şi 2, transformarea reversibilă a componentelor produce noi valori Yi(x,y), date de relaţiile:
Componente de culoare • Transformarea ireversibilă a componentelor este o transformare de decorelare definită de:
Placi • Fiecare componentă de culoare, transformată folosind TRC sau TIC, este partiţionată în „plăci” rectangulare nesuprapuse • Deoarece componentele de culoare: • pot avea rezoluţii diferite • se pot folosi dimensiuni diferite ale plăcilor, care pot ajunge la dimensiunea întregii imagini • Aceste plăci sunt comprimate individual
Transformata Wavelet • Două transformate Wavelet sunt specificate de standardul JPEG 2000 • Wavelet în virgulă mobilă (ireversibil) • Wavelet în numere întregi (reversibil) • Ambele transformate permit transmisia progresivă • Numai transformata în numere întregi poate realiza compresie fără pierderi
Transformata Wavelet • Fie un şir de pixeli aparţinând unei plăci cu Pk, Pk+1, …, Pm • Transformarea Wavelet în numere întregi calculează coeficienţii C(i) în doi paşi: calculează valorile impare C(2i+1) pe care le foloseşte în calcularea valorilor pare C(2i):
Transformata Wavelet • Transformarea Wavelet în virgulă mobilă se realizează în şase paşi (fiecare pas se realizează pe toţi pixelii din placă înainte să se treacă la următorul pas) • Se aplica la fiecare pas transformareatuturorpixelilor care satisfacconditiile:
Transformata Wavelet undecelecinciconstante (coeficienţiifiltrului Wavelet) folosite de JPEG 2000 sunt: α = -1.5861134342, β = -0.052980118, γ = 0.0882911075, δ = 0.443506852, K = 1.230174105
Transformata Wavelet • Transformări Wavelet unidimensionale: • se aplică de L ori, unde L este un parametru (ce poate fi oferit de utilizator sau stabilit de codificator) • sunt folosite la formarea de L nivele (sau rezoluţii) ale sub-benzilor • Rezoluţia L-1 reprezintă imaginea iniţială • Rezoluţia 0 este sub-banda cu cea mai mică frecvenţă
Organizarea sub-benzilorîn JPEG 2000 • Sub-benzile pot fi organizate în trei moduri
Cuantizarea • Fiecare sub-bandă poate avea o dimensiune diferită a pasului de cuantizare • Fiecare coeficient Wavelet din sub-bandă este împărţit de dimensiunea pasului de cuantizare, iar rezultatul este trunchiat • Dimensiunea pasului de cuantizare poate fi determinată iterativ, pentru a obţine o rată de biţi dorită, sau pentru a obţine un nivel predeterminat al calităţii imaginii • Dacă se doreşte o compresie fără pierderi, pasul cuantizării este 1
Cuantizarea • Se consideră o placă a unei componente de culoare • Pixelii originali sunt transformaţi (Wavelet), rezultând sub-benzi ce aparţin nivelurilor de rezoluţie • Există trei sub-benzi în fiecare nivel de rezoluţie, mai puţin în cazul nivelului inferior, iar dimensiunea totală a tuturor sub-benzilor este egală cu dimensiunea plăcii • O reţea de dreptunghiuri, denumite „precinct”-uri, este suprapusă pe întreaga imagine
Cuantizarea • Originearetelei de precinct se află în colţul din stânga-sus al imaginii • Dimensiunileprecinct-ului (lăţimea şi lungimea) sunt puteri ale lui 2 • Graniţelesub-benzilor nu sunt identice cu cele ale precinct-urilor • Examinând cele trei sub-benzi ale unei anumite rezoluţii, se aleg trei precinct-uri localizate în aceleaşi regiuni în cele trei sub-benzi • Aceste trei precinct-uri se numesc partiţii precinct • Reţeaua de precinct-uri se împarte într-o reţea mai fină, de blocuri de codificare („code-blocks”), ce reprezintă unităţile de bază pentru codificarea aritmetică
Cuantizarea • Plăcile, „precinct”-urile şi blocurile de codificare pot fi privite ca fiind respectiv partiţii brute, medii şi fine ale imaginii • Partiţionarea imaginii în unităţi din ce în ce mai mici are ajută la: • crearea implementărilor eficiente din punct de vedere al memoriei folosite • „streaming” • accesarea uşoară a diferitelor puncte din fluxul de biţi
Codificareaentropică • Coeficienţii Wavelet ai unui bloc de codificare sunt codaţi aritmetic în funcţie de planul de biţi („bitplane”) • Codificarea se realizează de la cel mai semnificativ plan de biţi (plan ce conţine cei mai importanţi biţi ai coeficienţilor) până la cel mai puţin semnificativ plan de biţi • Se determină un context pentru fiecare bit • O probabilitate este estimată din context • Bitul şi această probabilitate sunt trimise către codificatorul aritmetic
Codificareaentropică • Codificarea începe de la primul plan de biţi care nu este complet egal cu 0 • Acest plan este codificat într-o singură trecere, o trecere „de curăţare” („cleanup pass”) • Restul de planuri de biţi mai puţin semnificative decât primul se codifică în trei treceri, denumite: • trecere de „propagare a importanţei” („significance propagation pass”) • trecerede „rafinare a magnitudinii” („magnitude refinement pass”) • trecerede „curăţare” („cleanup pass”) • Contextul unui bit se determină în mod diferit pentru fiecare trecere.
Codificatorularitmetic Uncompressed data compressed data Context model Arithmetic decoder Decision (D) Context (CX) MPS Qe Probability estimator Probability estimator MPS Qe Context (CX) Decision (D) Arithmetic encoder Context model compressed data Uncompressed data
Pachete/Straturi • După ce toţi biţii coeficienţilor au fost codificaţi într-un scurt flux de biţi, un header este adăugat acelui flux de biţi, transformându-l în pachet • Header-ul conţine toată informaţia necesară pentru decodificarea pachetului • Un strat („layer”) reprezintă un set de pachete, şi conţine un pachet din fiecare partiţie precinct a fiecărui nivel al rezoluţiei (un increment al calităţii pentru întreaga imagine la rezoluţie maximă)
Pachete/Straturi SOC: Start of code stream 0xFF4F SOT: start of tile 0xFF90 SOD: start of data 0xFF93 EOC: end of code stream 0xFFD9
Image 3HL 4LL 2HL 3LH 3HH Image components 1HL 2LH 2HH Tiles resolution Sub-band precinct Code block 1LH 1HH layers packet Structuraimaginii
Pachete/Straturi • straturi, numerotate1 . • Fiecarestratestescalabildeoareceestecompus din K,cpachete separate, pentrufiecarenivel de rezolutie , = 0,2,...,L sifiecarecomponenta de imagine, c Single layer bit-stream organization
Regiuni de interes • Clientul poate decide să decodifice doar o parte a unei imagini, denumită şi regiune de interes • Decodificatorul poate identifica doar părţile fluxului de biţi ce corespund regiunii de interes şi poate transmite doar acele părţi • Aceste regiuni de interes pot fi specificate în momentul codificării, iar în acest caz codificatorul identifică blocurile de codificare localizate în regiunea de interes şi le scrie la început fluxului de biţi • În multe cazuri, o regiune de interes poate fi specificată după ce imaginea a fost comprimată, iar decodificatorul va folosi plăcile pentru a identifica regiunea de interes
Exemplu (2) • Imagine: “gold” • ROI: rectangular • Scalare: x4 • Bitrate: 2.0 bpp