Lietuvių

Išsamus JPEG algoritmo vadovas, kuriame nagrinėjami jo principai, pritaikymas, privalumai ir trūkumai. Sužinokite, kaip veikia JPEG glaudinimas.

Vaizdų glaudinimas: JPEG algoritmo paslaptys

Šiuolaikiniame skaitmeniniame pasaulyje vaizdai yra visur. Nuo socialinių tinklų iki interneto svetainių ir mobiliųjų programėlių – vizualinis turinys atlieka lemiamą vaidmenį komunikacijoje ir dalijantis informacija. Tačiau didelės raiškos vaizdai gali užimti daug vietos saugykloje ir reikalauti didelio pralaidumo, todėl sulėtėja įkėlimo laikas ir padidėja saugojimo išlaidos. Būtent čia į pagalbą ateina vaizdų glaudinimo technologijos. Tarp įvairių galimų vaizdų glaudinimo metodų JPEG algoritmas išsiskiria kaip vienas plačiausiai naudojamų ir pripažintų standartų. Šiame straipsnyje pateikiamas išsamus vadovas, padėsiantis suprasti JPEG algoritmą, jo pagrindinius principus, pritaikymą, privalumus ir trūkumus.

Kas yra vaizdų glaudinimas?

Vaizdų glaudinimas – tai vaizdo failo dydžio sumažinimo procesas, ženkliai nepakenkiant jo vizualinei kokybei. Tikslas – kuo labiau sumažinti saugyklos erdvės ir pralaidumo poreikius, išlaikant priimtiną vaizdo tikslumo lygį. Vaizdų glaudinimo metodus galima suskirstyti į dvi pagrindines kategorijas:

Pristatome JPEG algoritmą

JPEG (angl. Joint Photographic Experts Group – Jungtinė fotografijos ekspertų grupė) yra plačiai naudojamas nuostolingas skaitmeninių vaizdų glaudinimo algoritmas. Jis buvo standartizuotas 1992 m. ir nuo to laiko tapo dominuojančiu formatu fotografiniams vaizdams saugoti ir dalintis. JPEG algoritmas išnaudoja žmogaus regos ypatumus, kad pasiektų aukštą glaudinimo laipsnį, išlaikant priimtiną vaizdo kokybę. Jis veikia atmesdamas informaciją, kurią žmogaus akis suvokia prasčiau, pavyzdžiui, aukšto dažnio detales ir subtilius spalvų pokyčius.

JPEG algoritmas nėra vienas algoritmas, o veikiau metodų ir parinkčių rinkinys. Labiausiai paplitęs veikimo režimas yra bazinis JPEG, kuris kaip pagrindinę transformaciją naudoja diskrečiąją kosinuso transformaciją (DCT). Šiame vadove mes ir sutelksime dėmesį į bazinį JPEG.

Pagrindiniai JPEG algoritmo žingsniai

The JPEG algoritmas apima kelis pagrindinius žingsnius, kurie aprašyti toliau:

1. Spalvų erdvės konvertavimas

Pirmasis JPEG algoritmo žingsnis yra konvertuoti vaizdą iš pradinės spalvų erdvės (pvz., RGB) į kitą spalvų erdvę, vadinamą YCbCr. Ši spalvų erdvė padalija vaizdą į tris komponentus:

Šio konvertavimo priežastis yra ta, kad žmogaus akis yra jautresnė skaisčio (ryškumo) pokyčiams nei chromatinės informacijos (spalvos) pokyčiams. Atskirdamas šiuos komponentus, JPEG algoritmas gali teikti pirmenybę skaisčio informacijos išsaugojimui, o tai yra labai svarbu suvokiamai vaizdo kokybei.

Pavyzdys: Išmaniuoju telefonu daryta skaitmeninė nuotrauka paprastai saugoma RGB spalvų erdvėje. JPEG algoritmas pirmiausia konvertuoja šį vaizdą į YCbCr prieš tęsdamas tolimesnius glaudinimo žingsnius.

2. Chromatinės informacijos pavyzdžių mažinimas (Chroma Subsampling)

Konvertavus į YCbCr spalvų erdvę, JPEG algoritmas paprastai atlieka chromatinės informacijos pavyzdžių mažinimą. Šis metodas sumažina duomenų, atspindinčių chromatinius komponentus (Cb ir Cr), kiekį, suvidurkinant arba atmetant dalį spalvų informacijos. Kadangi žmogaus akis yra mažiau jautri spalvų pokyčiams, šis procesas gali žymiai sumažinti failo dydį, pastebimai nepaveikdamas suvokiamos vaizdo kokybės.

Dažniausiai naudojami chromatinės informacijos pavyzdžių mažinimo santykiai yra 4:4:4 (be pavyzdžių mažinimo), 4:2:2 (horizontalus pavyzdžių mažinimas) ir 4:2:0 (horizontalus ir vertikalus pavyzdžių mažinimas). Santykis 4:2:0 reiškia, kad kiekvieniems keturiems skaisčio pavyzdžiams tenka du Cb pavyzdžiai ir du Cr pavyzdžiai. Tai lemia 50 % chromatinės informacijos duomenų sumažėjimą.

Pavyzdys: Aukštos raiškos vaizde gali būti naudojamas 4:4:4 chromatinės informacijos pavyzdžių mažinimas, siekiant išsaugoti maksimalų spalvų tikslumą. Tačiau interneto vaizdams dažnai naudojamas 4:2:0 pavyzdžių mažinimas, siekiant geresnio balanso tarp vaizdo kokybės ir failo dydžio.

3. Padalijimas į blokus

JPEG algoritmas padalija vaizdą į 8x8 pikselių blokus. Kiekvienas blokas yra apdorojamas atskirai. Šis blokais pagrįstas metodas leidžia atlikti lygiagretų apdorojimą ir supaprastina diskrečiosios kosinuso transformacijos (DCT), kuri yra kitas žingsnis, skaičiavimą.

Pavyzdys: 640x480 pikselių vaizdas būtų padalintas į 4800 8x8 pikselių blokų (640/8 * 480/8 = 80 * 60 = 4800).

4. Diskrečioji kosinuso transformacija (DCT)

Diskrečioji kosinuso transformacija (DCT) yra matematinė transformacija, kuri konvertuoja kiekvieną 8x8 pikselių bloką iš erdvinės srities į dažnių sritį. Dažnių srityje kiekvienas blokas yra atvaizduojamas 64 DCT koeficientų rinkiniu, kuris atspindi skirtingų erdvinių dažnių amplitudę.

DCT pasižymi savybe sutelkti didžiąją dalį signalo energijos į kelis žemo dažnio koeficientus. Taip yra todėl, kad natūralūs vaizdai paprastai turi tolygius pokyčius ir laipsniškus spalvų bei intensyvumo pasikeitimus. Aukšto dažnio koeficientai, kurie atspindi aštrias briaunas ir smulkias detales, paprastai turi mažesnes amplitudes.

Pavyzdys: Tarkime, turime 8x8 bloką su tolygiu gradientu. Pritaikus DCT, koeficientas, atitinkantis nuolatinę srovę (DC komponentą – vidutinę vertę), bus didelis, o aukštesnių dažnių koeficientai bus artimi nuliui.

5. Kvantavimas

Kvantavimas yra svarbiausias JPEG algoritmo žingsnis siekiant aukšto glaudinimo laipsnio. Jo metu kiekvienas DCT koeficientas yra padalijamas iš kvantavimo vertės, o rezultatas suapvalinamas iki artimiausio sveikojo skaičiaus. Kvantavimo vertės nurodomos kvantavimo lentelėje, kuri yra svarbus JPEG algoritmo parametras. Skirtingos kvantavimo lentelės gali būti naudojamos skirtingiems glaudinimo lygiams ir vaizdo kokybei pasiekti.

Kvantavimo procesas sukelia nuostolius, atmesdamas dalį DCT koeficientuose esančios informacijos. Aukšto dažnio koeficientai, kurie yra mažiau pastebimi žmogaus akiai, paprastai kvantuojami agresyviau (t.y., dalijami iš didesnių verčių) nei žemo dažnio koeficientai. Dėl to daugiau aukšto dažnio koeficientų tampa nuliais, o tai prisideda prie glaudinimo.

Pavyzdys: Koeficientas, kurio vertė yra 10, gali būti kvantuojamas su kvantavimo verte 5, todėl kvantuota vertė bus 2 (10/5 = 2). Koeficientas, kurio vertė yra 2, gali būti kvantuojamas su kvantavimo verte 10, todėl kvantuota vertė bus 0 (2/10 = 0,2, suapvalinta iki 0). Tai parodo, kaip mažesnės vertės yra labiau linkusios tapti nuliais, o tai lemia glaudinimą.

6. Entropinis kodavimas

Po kvantavimo, kvantuoti DCT koeficientai yra toliau glaudinami naudojant entropinio kodavimo metodus. Entropinis kodavimas yra glaudinimo be nuostolių metodas, kuris išnaudoja statistines duomenų savybes, kad juos efektyviau atvaizduotų. JPEG algoritmas paprastai naudoja du entropinio kodavimo metodus:

Pavyzdys: Tarkime, turime kvantuotų DCT koeficientų seką: [10, 5, 0, 0, 0, 0, 0, -2, 0, 0, ...]. RLE gali užkoduoti šią seką kaip [10, 5, (0, 5), -2, (0, 2), ...], kur (0, 5) reiškia 5 nulių seką.

JPEG iškodavimo procesas

JPEG iškodavimo procesas yra atvirkštinis kodavimo procesui. Jis apima šiuos žingsnius:

  1. Entropinis iškodavimas: Entropiškai užkoduoti duomenys iškoduojami naudojant Hafmeno iškodavimą ir grupinį iškodavimą, kad būtų atkurti kvantuoti DCT koeficientai.
  2. Dekvantavimas: Kvantuoti DCT koeficientai padauginami iš atitinkamų kvantavimo verčių iš kvantavimo lentelės, kad būtų apytiksliai atkurti pradiniai DCT koeficientai.
  3. Atvirkštinė diskrečioji kosinuso transformacija (IDCT): Kiekvienam 8x8 DCT koeficientų blokui taikoma IDCT, kad jie būtų transformuoti atgal į erdvinę sritį ir būtų gautos atkurtos pikselių vertės.
  4. Chromatinės informacijos pavyzdžių didinimas: Jei kodavimo metu buvo naudojamas chromatinės informacijos pavyzdžių mažinimas, chromatiniai komponentai yra padidinami iki pradinės raiškos.
  5. Spalvų erdvės konvertavimas: Vaizdas konvertuojamas atgal iš YCbCr spalvų erdvės į pradinę spalvų erdvę (pvz., RGB).

JPEG algoritmo privalumai

JPEG algoritmas turi keletą privalumų, kurie prisidėjo prie jo plataus paplitimo:

JPEG algoritmo trūkumai

Nepaisant privalumų, JPEG algoritmas turi ir tam tikrų trūkumų:

JPEG algoritmo pritaikymas

JPEG algoritmas naudojamas įvairiose srityse, įskaitant:

JPEG alternatyvos ir ateities tendencijos

Nors JPEG išlieka dominuojančiu formatu, pastaraisiais metais atsirado keletas alternatyvių vaizdų glaudinimo algoritmų, siūlančių geresnį našumą ir funkcijas:

Vaizdų glaudinimo ateitį tikriausiai lems didėjanti aukštos kokybės vaizdų ir vaizdo įrašų paklausa, taip pat poreikis mažinti saugyklos erdvę ir pralaidumo sunaudojimą. Naujesni glaudinimo algoritmai, tokie kaip WebP, HEIF ir AVIF, yra pasirengę atlikti svarbesnį vaidmenį skaitmeniniame pasaulyje, siūlydami geresnį našumą ir funkcijas, palyginti su senstančiu JPEG standartu. Tačiau platus JPEG suderinamumas tikriausiai užtikrins jo aktualumą dar daugelį metų.

Išvada

JPEG algoritmas dešimtmečius buvo skaitmeninės vaizdų apdorojimo kertinis akmuo. Jo gebėjimas pasiekti aukštą glaudinimo laipsnį išlaikant priimtiną vaizdo kokybę pavertė jį dominuojančiu formatu fotografiniams vaizdams saugoti ir dalintis. Suprasti JPEG algoritmo principus ir trūkumus yra būtina visiems, dirbantiems su skaitmeniniais vaizdais, nesvarbu, ar tai būtų fotografai, interneto kūrėjai, ar grafikos dizaineriai. Nors atsiranda naujesnių vaizdų glaudinimo algoritmų, JPEG palikimas ir platus suderinamumas užtikrina jo nuolatinę svarbą skaitmeniniame pasaulyje.

Suprasdami JPEG algoritmo subtilybes, galite priimti pagrįstus sprendimus dėl vaizdų glaudinimo ir optimizuoti savo vaizdus įvairioms programoms, subalansuodami vaizdo kokybę, failo dydį ir suderinamumą, kad pasiektumėte geriausių įmanomų rezultatų.