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:
- Glaudinimas be nuostolių: Šie metodai išsaugo visus pradinius duomenis vaizde. Kai suglaudintas vaizdas yra išskleidžiamas, jis būna identiškas pradiniam vaizdui. Glaudinimas be nuostolių tinka vaizdams, kuriuose svarbu išsaugoti kiekvieną detalę, pavyzdžiui, medicininiams vaizdams ar archyviniams dokumentams. Pavyzdžiai: PNG ir GIF.
- Glaudinimas su nuostoliais: Šie metodai paaukoja dalį vaizdo duomenų, kad būtų pasiektas didesnis glaudinimo laipsnis. Išskleistas vaizdas nėra identiškas pradiniam, tačiau informacijos praradimas dažnai yra nepastebimas žmogaus akiai. Glaudinimas su nuostoliais tinka vaizdams, kuriuose tam tikras kokybės pablogėjimas yra priimtinas mainais už mažesnius failų dydžius, pavyzdžiui, nuotraukoms internete. JPEG yra puikus glaudinimo su nuostoliais pavyzdys.
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:
- Y (Skaistis): Atspindi vaizdo ryškumą arba intensyvumą.
- Cb (Mėlynos spalvos chromatinė informacija): Atspindi skirtumą tarp mėlyno komponento ir skaisčio.
- Cr (Raudonos spalvos chromatinė informacija): Atspindi skirtumą tarp raudono komponento ir skaisčio.
Š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:
- Grupinis kodavimas (RLE): RLE naudojamas suglaudinti kvantuotų DCT koeficientų seką kiekviename 8x8 bloke. DCT koeficientai paprastai išdėstomi zigzago tvarka, kuri sugrupuoja nulinės vertės koeficientus. RLE užkoduoja ilgas nulių sekas kaip vieną vertę, o tai žymiai sumažina duomenų kiekį.
- Hafmeno kodavimas: Hafmeno kodavimas yra kintamo ilgio kodavimo schema, kuri dažnesniems simboliams priskiria trumpesnius kodus, o retesniems – ilgesnius. JPEG algoritmas naudoja Hafmeno kodavimą tiek DC koeficientams (pirmasis koeficientas kiekviename bloke), tiek AC koeficientams (likę koeficientai) užkoduoti.
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:
- 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.
- Dekvantavimas: Kvantuoti DCT koeficientai padauginami iš atitinkamų kvantavimo verčių iš kvantavimo lentelės, kad būtų apytiksliai atkurti pradiniai DCT koeficientai.
- 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.
- 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.
- 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:
- Aukštas glaudinimo laipsnis: JPEG gali pasiekti aukštą glaudinimo laipsnį, ypač vaizdams su tolygiais gradientais ir mažiau aštrių detalių. Tai leidžia sumažinti failų dydžius, o tai sumažina saugyklos erdvės ir pralaidumo poreikius.
- Reguliuojama kokybė: Glaudinimo lygį galima reguliuoti, kad būtų galima kontroliuoti kompromisą tarp vaizdo kokybės ir failo dydžio. Tai leidžia vartotojams pasirinkti tinkamą glaudinimo lygį pagal savo konkrečius poreikius.
- Platus suderinamumas: JPEG palaiko praktiškai visos vaizdų peržiūros programos, redaktoriai ir interneto naršyklės. Tai daro jį labai universaliu ir prieinamu formatu.
- Progresyvusis JPEG: Progresyvusis JPEG yra JPEG algoritmo variantas, leidžiantis vaizdą rodyti palaipsniui, kol jis yra atsisiunčiamas. Tai suteikia geresnę vartotojo patirtį, ypač dideliems vaizdams arba kai jie atsisiunčiami per lėtą ryšį.
JPEG algoritmo trūkumai
Nepaisant privalumų, JPEG algoritmas turi ir tam tikrų trūkumų:
- Glaudinimas su nuostoliais: JPEG yra nuostolingas glaudinimo algoritmas, o tai reiškia, kad glaudinimo proceso metu prarandama dalis vaizdo duomenų. Tai gali pabloginti vaizdo kokybę, ypač esant aukštam glaudinimo laipsniui.
- Blokavimo artefaktai: Esant aukštam glaudinimo laipsniui, JPEG algoritmo blokais pagrįstas apdorojimas gali sukelti matomus blokavimo artefaktus, kurie atrodo kaip pastebimi kvadratiniai blokai vaizde. Šie artefaktai ypač pastebimi srityse su tolygiais gradientais.
- Neefektyvus tekstui ir linijinei grafikai: JPEG netinka glaudinti vaizdams, kuriuose yra tekstas, linijinė grafika ar aštrios briaunos. Tokio tipo vaizdai dažnai turi aukšto dažnio detalių, kurias JPEG algoritmas atmeta, todėl vaizdas atrodo neryškus ar iškraipytas.
- Netinka daugkartiniams redagavimo ciklams: Kadangi JPEG yra nuostolingas, pakartotinis JPEG vaizdo redagavimas ir perrašymas lems kaupiamąjį kokybės praradimą. Vaizdams, kuriems reikia daugkartinių redagavimo ciklų, geriau naudoti formatą be nuostolių, pavyzdžiui, PNG arba TIFF.
JPEG algoritmo pritaikymas
JPEG algoritmas naudojamas įvairiose srityse, įskaitant:
- Interneto vaizdai: JPEG yra labiausiai paplitęs formatas vaizdams internete. Dėl aukšto glaudinimo laipsnio jis idealiai tinka puslapių įkėlimo laikui mažinti ir pralaidumo sunaudojimui minimizuoti.
- Skaitmeninė fotografija: Dauguma skaitmeninių fotoaparatų naudoja JPEG kaip numatytąjį formatą nuotraukoms saugoti. Tai leidžia atminties kortelėje saugoti daug vaizdų, per daug neaukojant vaizdo kokybės.
- Socialiniai tinklai: Socialinių tinklų platformos, tokios kaip „Facebook“, „Instagram“ ir „Twitter“, naudoja JPEG vartotojų įkeliamiems vaizdams glaudinti ir saugoti.
- Vaizdų archyvavimas: Nors JPEG nėra idealus ilgalaikiam svarbių vaizdų archyvavimui dėl savo nuostolingos prigimties, jis dažnai naudojamas archyvuojant vaizdus, kai saugyklos erdvė yra didelė problema ir tam tikras kokybės pablogėjimas yra priimtinas.
- Vaizdo įrašų glaudinimas: JPEG taip pat naudojamas kaip pagrindas kai kuriems vaizdo įrašų glaudinimo standartams, tokiems kaip „Motion JPEG“ (MJPEG).
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:
- JPEG 2000: JPEG 2000 yra naujesnis vaizdų glaudinimo standartas, siūlantis keletą privalumų, palyginti su pradiniu JPEG algoritmu, įskaitant geresnį glaudinimo laipsnį, glaudinimo be nuostolių palaikymą ir geresnį aukšto dažnio detalių apdorojimą. Tačiau JPEG 2000 nepasiekė tokio pat plataus paplitimo kaip JPEG dėl didesnio skaičiavimo sudėtingumo ir licencijavimo problemų.
- WebP: WebP yra „Google“ sukurtas vaizdo formatas, siūlantis tiek glaudinimą be nuostolių, tiek su nuostoliais. WebP paprastai suteikia geresnį glaudinimo laipsnį nei JPEG, išlaikant panašią ar geresnę vaizdo kokybę. Jis vis plačiau naudojamas internete ir palaikomas daugumos šiuolaikinių naršyklių.
- HEIF (High Efficiency Image File Format): HEIF yra konteinerinis formatas vaizdams ir vaizdo įrašams, kuris naudoja „High Efficiency Video Coding“ (HEVC) glaudinimo standartą. HEIF siūlo puikų glaudinimo efektyvumą ir palaiko platų funkcijų spektrą, įskaitant animaciją, skaidrumą ir gylio informaciją. Jį naudoja „Apple“ iOS įrenginiai ir jis vis labiau plinta.
- AVIF (AV1 Image File Format): AVIF yra vaizdo formatas, pagrįstas AV1 vaizdo kodeku. Jis suteikia žymiai geresnį glaudinimą nei JPEG, siūlydamas panašią ar geresnę vaizdo kokybę. AVIF populiarėja dėl savo atvirojo kodo prigimties ir didžiųjų technologijų kompanijų palaikymo.
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ų.