JPEG: digitaalpiltide tihendusstandard ja failivormingu selgitus
JPEG-failiformaat on failivorming, mida kasutatakse digitaalsete piltide tihendamiseks. Pakkimise ulatust saab muuta. Kui pilt on kvaliteetne, võtab see palju ruumi. Kui see on madala kvaliteediga, võtab see vähe salvestusruumi. JPEG-failiformaat on üldiselt levinud ülemaailmses veebis. Sõna JPEG on lühend Joint Photographic Experts Groupist, mis on selle formaadi loonud. JPEG-failide laiendused on .jpg
, .jpeg
, .jpe
ja teised.
Kuidas JPEG-tihendus toimib (lihtsustatud ülevaade)
JPEG kasutab peamiselt kahjulist (lossy) tihendust, mis tähendab, et osa pilditeabest kaob jäädavalt, et saavutada väiksem failimaht. Põhietapid on järgmised:
- Värviruumi teisendus: pilt konverteeritakse sageli RGB-st YCbCr-värviruumi, eraldades heledusinfo (Y) ja krominantsi (Cb, Cr).
- Chroma subsampling: silmatundlikkuse tõttu säilitatakse heledusinfo detailsemalt kui värviinfo (näiteks 4:2:0), mis vähendab andmemahtu ilma nähtava kvaliteedikahjuta.
- Blokkide kaupa töötlus: pilt jagatakse 8×8-pikslisteks plokkideks ja igas plokis rakendatakse dünaamilist sagedusanalüüsi (DCT — diskreetne kosinusteerimine).
- Kvantisatsioon: kõrgsageduslikud komponendid (peened detailid) vähendatakse või eemaldatakse — see samm on peamine info kadumise koht ja suurendab tihendust.
- Entroopiatihendus: kvantiseeritud koefitsiendid kodeeritakse efektiivsete entropiakodeeringute (nt Huffman) abil, et vähendada ülejäänud andmemahtu.
Tüübid ja omadused
- Baseline (tavaline) JPEG — kõige levinum ja laialt toetatud; laaditakse rida-haaval.
- Progressive JPEG — pilt laaditakse sammhaaval madalama kvaliteediga esialgsest versioonist kuni fim-lõpliku kvaliteedini; kasulik veebis, sest kasutaja näeb kiirelt kogu pilti hajutatult.
- Lossless JPEG — vähem levinud, pakub pöörduvat tihendust, kuid ei anna sama suurimaid kokkuhoiusid kui kahjulik tihendus.
- Metaandmed — JPEG-failid võivad sisaldada EXIF-andmeid (kaamera seaded, kuupäev, asukohaandmed), samuti ICC-värviprofiile ja pisipilte.
Kus JPEG sobib ja kus mitte
- Sobib väga hästi: fotod ja keerukad värvilised pildid, kus peened detailid ei ole kriitilised. Levinud veebis, e-kirjades, digifotode salvestamisel ja jagamisel.
- Ei sobi hästi: pildid, mis sisaldavad palju teravaid jooni, teksti, graafikat, ikoonid või skeemid — seal on parem kasutada PNG- või vektorvorminguid (SVG), sest JPEG tekitab äärte ümber moonutusi (blokiseerimine, moonutused).
Kvaliteet vs. failisuurus — praktilised nõuanded
- Tavaliselt valitakse veebis kompromiss: kvaliteet 70–85 annab hea visuaalse tulemi ja väikse faili; 90+ sobib, kui soovitakse hoida peaaegu originaali kvaliteeti, kuid fail on oluliselt suurem.
- Väldi sagedast ümbersalvestamist — iga kord salvestades kaob lisainfot ja tekivad korduvad artefaktid.
- Kui plaanid pilti edaspidi töödelda, säilita algfail kaotusteta vormingus (nt RAW, TIFF või PNG) ja ekspordi JPEG ainult lõppkasutuseks.
- Progressive JPEG on tihti parem veebikasutuseks, kuna kasutaja näeb kiiremini pildi üldilmet.
Piirangud ja artefaktid
Suurema tihenduse korral tekivad tüüpilised nähtused nagu blokid 8×8-plokkide servadel, halo-efektid teravate kontrastide ümber ja pehme või udune välimus detailidel. Need on JPEG-i kvantisatsiooni ja plokk-töötluse loogilised tagajärjed.
Alternatiivid
- PNG — kahjutu tihendus, hea graafika ja läbipaistvuse jaoks.
- WebP — Google’i formaat, pakub nii kahjulist kui ka kahjutut tihendust ja sageli paremat suhtelist tihendust kui JPEG.
- HEIF/HEIC ja AVIF — kaasaegsed formaadid, mis pakuvad tõhusamat tihendust ja paremat kvaliteeti väiksema mahuga, kuid mitte kõik seadmed ja rakendused ei toeta neid veel laialdaselt.
Kokkuvõte
JPEG on lihtne ja universaalne lahendus fotode ja värviliste piltide tihendamiseks, eriti veebis ja jagamisel. See pakub head kompromissi kvaliteedi ja faili suuruse vahel, kuid kaotab andmeid (lossy) ning pole parim valik teravate joonte või graafika puhul. Omandades teadmise tihendusprotsessist ja sobivatest seadetest (nt kvaliteedi tase, progressive, chroma subsampling), saab JPEG-ist maksimaalse kasu ilma liigsete visuaalsete kompromissideta.


Foto metskitsest, mille surveaste väheneb vasakult paremale.
Kuidas see töötab
YPb Pr
Esimene märkimisväärne asi JPEG-kompressiooni puhul on viis, kuidas iga piksli värvi salvestatakse. Igale pildi pikslile määratakse 3 baiti, et määrata selle värv. Kõigil kolmel baidil võib olla mis tahes väärtus vahemikus 0 kuni 255 ja iga võimalik kolme baidi kombinatsioon tähistab teist värvi. Enamikus failivormingutes kasutatakse värvi määratlemiseks RGB-vormingut. RGB tähendab punast, rohelist, sinist. Seda nimetatakse nii, sest esimene kolmest baidist ütleb, kui palju punast on piksli värvuses. Teine bait ütleb, kui palju rohelist värvi on ja kolmas bait, kui palju sinist. Mida suurem on esimese baidi väärtus, seda punasem tundub piksel olevat.
JPEG kasutab samuti kolme baiti iga piksli kohta, kuid see kasutab formaati YPb Pr (tuntud ka kui YCb Cr ). Siin ütleb esimene bait meile, kui hele piksel on. Teine bait ütleb meile, kui sinine on piksel. Kolmas bait ütleb meile, kui punane on piksel. Seda värvivormingut kasutades salvestatakse heledus lisaks värvusele. See on kasulik, sest me kavatseme pilti kokku suruda. Kuna inimsilm näeb heledust paremini kui värvi, saame värvibaitide (Pb -bait ja Pr -bait) puhul rakendada suuremat tihendust. Kuna me näeme heledust paremini, siis kasutame Y-baitide puhul väiksemat tihendust, et pilt pärast tihendamist paremini välja näeks.
Kuna pilte salvestatakse kõige sagedamini RGB-vormingus, on JPEG-kompressiooni esimene samm tavaliselt RGB-vormingu korrektne muutmine YPb Pr formaadiks.
Diskreetne kosinusmuundaja
JPEG kasutab pildi kujutamiseks kosinusfunktsioone. Seetõttu räägime veidi kosinusfunktsioonidest. Selline võiks kosinusfunktsioon välja näha:
Et kosinusfunktsioon kujutaks piksli värvi, ütleme, et mida suurem on kosinusfunktsiooni väärtus, seda heledam on piksel. Kui meil oleks hulk piksleid, mis läheksid heledaks-tumedaks-heledaks, võiksime nende määratlemiseks kasutada ülaltoodud funktsiooni.
Funktsioonil võiks olla ka suurem sagedus. Näiteks nii:
Kuid siinkohal muutub asi huvitavaks. Me võime luua ka erinevaid funktsioone, võttes erinevate kosinusfunktsioonide keskmist. Siin on näha, kuidas see välja näeks, kui me võtaksime kahe ülaltoodud funktsiooni keskmise:
JPEGis rakendatakse DCT-d 8 × 8 piksli suurustele plokkidele.
Kvantifitseerimine
Siiani ei ole pildi tihendamise käigus mingit teavet kaduma läinud. Selles etapis filtreerime me informatsiooni välja. Seetõttu on see samm see, mis vähendab pildi kvaliteeti. Iga 8 × 8 pikslist koosneva ploki puhul seatakse kõrge sagedusega kosinusfunktsioonid 0. See tähendab, et need ei saa enam mõjutada seda, kuidas pilt dekompresseerimisel välja näeb.
Paljud väärtused on nüüd 0, mis tähendab, et seda saab väga lihtsalt kokku suruda. Selleks kasutatakse Huffmani kodeerimist. Huffmani kodeerimine on JPEG-kompressiooni viimane samm. See on ka ainus samm, mille käigus andmed tegelikult kokku surutakse.

cos(x)

cos(2x)

(cos(x) + cos(2x)) / 2
Küsimused ja vastused
K: Mis on JPEG-failiformaat?
V: JPEG-failivorming on failivorming, mida kasutatakse digitaalsete piltide tihendamiseks.
K: Kuidas saab tihendamise ulatust muuta?
V: Kompressiooni suurust saab muuta sõltuvalt soovitud kvaliteedist.
K: Mis juhtub, kui pilt on kõrge kvaliteediga?
V: Kui pilt on kõrge kvaliteediga, võtab see palju salvestusruumi.
K: Kus on JPEG-failiformaat tavaliselt levinud?
V: JPEG-failiformaati leidub tavaliselt ülemaailmses veebis.
K: Mida tähendab sõna "JPEG"?
V: Sõna "JPEG" tähendab Joint Photographic Experts Group, mis on selle formaadi loonud.
K: Millised on JPEG-failide tavalised laiendused?
V: JPEG-failide tavalised laiendused on muu hulgas .jpg, .jpeg ja .jpe.