Fellesgruppe for Foto-eksperter

jpeg


Foto av en blomst gradvis komprimert med JPEG-formatet.
utvikler
Fellesgruppe for Foto-eksperter
https://jpeg.org/jpeg/
Generell informasjon
filutvidelse .jpeg, .jpg, .jpe
.jfif, .jfi, .jif (contenedores)
mime-type image/jpeg
skriv inn kode JPEG
Uniform Type Identifier public.jpeg
magisk tall ff d8
formattype Tapsløs komprimeringsgrafikk _
åpent format ?

Joint Photographic Experts Group ( JPEG ) er navnet på en komité av eksperter som laget en standard for komprimering og koding av filer og stillbilder , som for tiden er et av de mest brukte formatene for fotografier [ 1 ] . Denne komiteen ble fra starten sammensatt ved sammenslåing av flere grupper i et forsøk på å dele og utvikle deres erfaring med digitalisering av bilder. ISO , tre år tidligere (april 1983 ), hadde begynt sine undersøkelser i området.

I tillegg til å være en komprimeringsmetode, blir den ofte tenkt som en . JPEG/Exif er det vanligste bildeformatet som brukes av digitale stillkameraer og andre bildeopptaksenheter, sammen med JPG/JFIF , som også er et annet format for lagring og overføring av fotografiske bilder på World Wide Web . . Disse formatvariasjonene skilles ofte ikke, og kalles "JPEG". Filer av denne typen er vanligvis navngitt med filtypen .jpg .

JPEG-komprimering

JPEG-formatet bruker vanligvis en komprimeringsalgoritme med tap for å redusere størrelsen på bildefiler . Dette betyr at når du dekomprimerer eller viser bildet, får du ikke helt det samme bildet som du startet med før komprimering . Det finnes også tre varianter av JPEG-standarden som komprimerer bildet uten tap av data: JPEG 2000 , JPEG-LS og Lossless JPEG .

JPEG-komprimeringsalgoritmen er basert på to visuelle fenomener i det menneskelige øyet : det ene er det faktum at det er mye mer følsomt for endringer i luminans enn krominans ; det vil si at den fanger opp lysstyrkeendringer tydeligere enn fargeendringer . Den andre er at den lettere merker små endringer i lysstyrke i homogene områder enn i områder hvor variasjonen er stor, for eksempel i kantene av objektlegemer.

En av egenskapene til JPEG er fleksibiliteten i å justere komprimeringsgraden. En svært høy grad av komprimering vil resultere i en liten filstørrelse, på bekostning av et betydelig tap av kvalitet. Et lavt komprimeringsforhold gir bildekvalitet svært nær originalen, men med en større filstørrelse .

Tapet av kvalitet når påfølgende kompresjoner utføres er kumulativt. Dette betyr at hvis du komprimerer et bilde og dekomprimerer det, vil du miste bildekvaliteten, men å rekomprimere et allerede komprimert bilde vil resultere i enda mer tap. Hver påfølgende komprimering vil føre til ytterligere kvalitetstap. Tapskomprimering er ikke egnet for bilder eller grafikk som har skarp tekst , linjer eller kanter, men den er egnet for filer som inneholder store områder med solide farger.

JPEG-formatet inkluderer ikke administrasjonen av alfakanalen i kodingen, som er det som definerer opasiteten til en piksel i et bilde. Så i motsetning til formater som PNG , eller varianter av standarden som JPEG 2000 , er ikke standard JPEG-formatet i stand til å håndtere gjennomsiktighet .

Koding

Mange av alternativene til JPEG-standarden brukes sjelden. Dette er en kort beskrivelse av en av de mange metodene som vanligvis brukes for å komprimere bilder når de brukes på et inngangsbilde med 24 biter per piksel (åtte hver for rødt, grønt og blått , eller også sagt "8 biter per kanal"). Dette spesielle alternativet er en tapsbasert komprimeringsmetode .

Fargeromstransformasjon

Det starter med å konvertere bildet fra RGB-fargemodellen til en som heter YUV eller YCbCr. Dette fargerommet ligner det som brukes av PAL- og NTSC -fjernsynsfargesystemene , men ligner mye mer på MAC (Multiplexed Analog Component) fjernsynssystem.

Dette fargerommet (YUV) har tre komponenter:

Ligningene som utfører denne baseendringen fra RGB til YUV er som følger:

Y = 0,257 * R + 0,504 * G + 0,098 * B + 16 Cb = U = -0,148 * R - 0,291 * G + 0,439 * B + 128 Cr = V = 0,439 * R - 0,368 * G - 0,071 * B + 128

Ligningene for den inverse endringen kan oppnås ved å fjerne de foregående og følgende oppnås:

B = 1,164 * (Y - 16) + 2,018 * (U - 128) G = 1,164 * (Y - 16) - 0,813 * (V - 128) - 0,391 * (U - 128) R = 1,164 * (Y - 16) + 1,596 * (V - 128)

MERK: Disse ligningene er under kontinuerlig etterforskning, så andre forskjellige ligninger, men med svært like koeffisienter, kan finnes i bøker og på Internett.

Hvis den første trioen av ligninger analyseres, vil vi se at de tre komponentene har en minimumsverdi på 16. Luminanskanalen (Y-kanalen) har en maksimal verdi på 235, mens krominanskanalene har 240. Alle disse verdiene passer til en byte som avrundes til nærmeste heltall. I denne fasen er det ikke noe vesentlig tap av informasjon, selv om avrunding introduserer en liten feilmargin som er umerkelig for det menneskelige øyet.

Delsampling

Et alternativ som kan brukes når du lagrer bildet, er å redusere fargeinformasjonen med hensyn til lysstyrken (på grunn av det visuelle fenomenet i det menneskelige øyet diskutert ovenfor). Det er flere metoder: hvis dette trinnet ikke brukes, forblir bildet i YUV-fargerommet (denne undersamplingen forstås som 4:4:4 ), slik at bildet ikke er tapsmessig. Fargeinformasjonen kan halveres, 4:2:2 (reduseres med en faktor 2 i horisontal retning), slik at fargen har halvparten av oppløsningen (i horisontal) og lysstyrken forblir intakt. En annen mye brukt metode er å redusere fargen til en fjerdedel, 4:2:0 , hvor fargen reduseres med en faktor 2 i både horisontal og vertikal retning. Hvis kildebildet var gråtoner (svart og hvitt), kan fargeinformasjonen fjernes fullstendig, slik at den blir 4:0:0.

Noen programmer som tillater lagring av bilder i JPEG (slik som den som brukes av GIMP ) refererer til disse metodene som 1×1,1×1,1×1 for YUV 4:4:4 (ingen tap av farge), 2×1 ,1×2,1×1 for YUV 4:2:2 og 2×2,1×1,1×1 for den siste metoden, YUV 4:2:0.

De algoritmiske teknikkene som brukes for dette trinnet (for dets eksakte rekonstruksjon) er vanligvis bilineær interpolasjon, nærmeste nabo, kubisk konvolusjon, Bezier, b-spline og Catmun-Roll.rh

Diskret kosinustransformasjon (DCT)

Hver komponent i bildet er delt inn i små blokker på 8×8 piksler , som behandles nesten uavhengig, noe som reduserer beregningstiden betydelig. Dette resulterer i den typiske rutenettformasjonen, som blir synlig i bilder lagret med høy komprimering. Hvis bildet var fargesubsamplet, ville fargene være igjen i det endelige bildet i blokker på 8×16 og 16×16 piksler, avhengig av om det var 4:2:2 eller 4:2:0.

Etterpå blir hver liten blokk konvertert til frekvensdomenet via den diskrete cosinustransformasjonen , DCT for kort.

Et eksempel på en av de små innledende 8×8 blokkene er dette:

Den neste prosessen er å trekke 128 fra dem slik at det er tall rundt 0, mellom -128 og 127.

Vi fortsetter til transformasjonen ved DCT av matrisen, og avrundingen av hvert element til nærmeste hele tall.

Merk at det største elementet i hele matrisen vises i øvre venstre hjørne; dette er DC-koeffisienten .

Digital kvantifisering

Det menneskelige øyet er veldig flinke til å oppdage små endringer i lysstyrken over relativt store områder, men ikke når lysstyrken endres raskt over små områder (høyfrekvent variasjon). På grunn av denne tilstanden kan høye frekvenser elimineres uten for stort tap av visuell kvalitet. Dette gjøres ved å dele hver komponent i frekvensdomenet med en konstant for den komponenten, og avrunde den til nærmeste hele tall. Dette er prosessen der mesteparten av informasjonen (og kvaliteten) går tapt når et bilde behandles av denne algoritmen. Resultatet av dette er at ctm, de høyfrekvente komponentene, har en tendens til å være lik null, mens mange av de andre blir små positive og negative tall.

En typisk kvantiseringsmatrise er Losheller-matrisen som eventuelt brukes i JPEG-standarden:

Ved å dele hver koeffisient til matrisen til det transformerte bildet med hver koeffisient i kvantiseringsmatrisen, oppnås denne matrisen, allerede kvantisert:

For eksempel vil kvantisering av det første elementet, DC-koeffisienten, se slik ut:

Entropisk koding

Entropikoding er en spesiell form for tapsfri komprimering . For å gjøre dette tar vi elementene i matrisen etter et sikk-sakk-mønster, setter grupper med lignende frekvenser sammen, og setter inn kodingsnuller, og bruker Huffman-koding for det som er igjen. Aritmetisk koding kan også brukes , overlegen Huffman, men sjelden brukt da den er dekket av patenter , denne komprimeringen produserer 5 % mindre filer, men på bekostning av økt koding og dekodingstid, kan denne lille gevinsten også brukes til å bruke en lavere grad av komprimering til bildet, og oppnå mer kvalitet for en lignende størrelse.

I matrisen ovenfor er sikk-sakk-sekvensen denne:
−26, −3, 0, −3, −2, −6, 2, −4, 1 −4, 1, 1, 5, 1, 2, − 1, 1, −1, 2, 0, 0, 0, 0, 0, −1, −1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0

JPEG har en Huffman-kode for å kutte den forrige strengen på punktet der alle andre koeffisienter er null, og sparer dermed plass:
−26, −3, 0, −3, −2, −6, 2, −4 , 1 −4, 1, 1, 5, 1, 2, −1, 1, −1, 2, 0, 0, 0, 0, 0, −1, −1, EOB

Støy produsert av komprimering

Resultatet etter komprimering kan variere, avhengig av aggressiviteten til delere av kvantiseringsmatrisen, jo høyere verdien av disse delerne er, jo flere koeffisienter blir null, og jo mer komprimeres bildet. Men høyere kompresjoner produserer mer støy i bildet, noe som forverrer kvaliteten. Et bilde med kraftig komprimering (1%-15%) kan ha en mye mindre filstørrelse, men det vil ha så mange ufullkommenheter at det ikke vil være interessant, en veldig lav komprimering (98%-100%) vil gi en veldig høy kvalitetsbilde, men det vil være så stort at et tapsfritt format som PNG kan være mer interessant .

De fleste som surfer på Internett vil være kjent med disse ufullkommenhetene, som er et resultat av å få god komprimering. For å unngå dem, må du redusere komprimeringsnivået eller bruke tapsfri komprimering, og produsere større filer senere.

Dekoding

Dekodingsprosessen er lik den som er fulgt så langt, bare omvendt . I dette tilfellet, etter å ha mistet informasjon, vil de endelige verdiene ikke falle sammen med de første.

Informasjonen fra matrisen blir tatt, dekodet, og hver verdi plasseres i den tilhørende boksen. Deretter multipliseres hver av disse verdiene med den tilsvarende verdien til kvantiseringsmatrisen som brukes, siden mange verdier er null, bare verdiene i øvre venstre hjørne gjenvinnes (og omtrentlig).

Da er DCT-transformasjonen angret:

Og til slutt legges 128 til hver oppføring:

For å sammenligne forskjellene mellom den originale og den komprimerte blokken, er forskjellen mellom begge matrisene funnet, gjennomsnittet av deres absolutte verdier, det gir en liten ide om kvaliteten tapt:

Det kan sees at de største forskjellene er nær flekken, og nederst, mellom venstre hjørne og midten, sistnevnte er mer merkbar, siden det renner en tydelig flekk som tidligere var mer mot hjørnet. Gjennomsnittet av de absolutte verdiene til subtraksjonene er 4,8125, selv om det i noen områder er høyere.

Se også

Eksterne lenker

Referanser

  1. ^ "JPG eller PNG: forskjeller og egnethet for bildeformater" . IONOS Digitalguide . Hentet 16. mai 2022 .