Hei igjen! Eg fann denne artikkelen, skrive i mai 2019. Dette er eit vidarefĂžring av serien med artiklar om WAVE og JPEG. Her er . Denne publikasjonen vil inkludere informasjon om bildekomprimeringsalgoritmen og om formatet som helhet.
Ein klype historie
Ein spiseskei informasjon frÄ Wikipedia:
JPEG (Joint Photographic Experts Group) er eit av dei populĂŠre rastergrafikkformat som blir brukt for Ă„ lagre foto og liknande bilete.
Denne standarden vart utvikla av den internasjonale ferdighetsgruppa for fotografering allereie i 1991 for effektiv komprimering av bilete.
Kva veg gÄr bilete frÄ rÄtt format til JPEG
Nokre trur at JPEG-bilde er rÄdata komprimerte ved hjelp av Huffman-koding, men det er ikkje sant. FÞr den endelige komprimeringa, gÄr data gjennom ein lang prosess.
FĂžrst blir fargemodellen endra frĂ„ RGB til YCbCr. For dette finst det til og med ein spesiell algoritme â . Y blir ikkje endra, sidan det er ansvarleg for lysstyrken, og ei endring her ville vere merkbar.
Det fĂžrste som blir gjort med bildet, er «underprĂžving» (subsampling). Det er enkelt Ă„ forstĂ„: ein 2x2 matrise med pikslar blir brukt, og ein tek sĂ„ Cb og Cr â gjennomsnittet av kvar av komponentane YCbCr for desse 4 pikslane. Slik, har vi spart 6 byte, i staden for 4 Y, 4 Cb, 4 Cr har vi fĂ„tt 4 Y og det same Cb og Cr for kvar av dei (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 â 6 = 6). I skala der til og med 2Ă2 gir ein komprimering med tap med eit forhold pĂ„ 2:1 hĂžyrast solid ut. Dette blir brukt pĂ„ heile bildet. Slik â har vi redusert stĂžrrelsen med halvparten. Og denne teknikken kan vi bruke takka vere vĂ„rt fargeoppfattelse. Eit menneske vil lett merke forskjell i lysstyrke, men ikkje i farge, dersom den er gjennomsnittleg i ei lita blokk med pikslar. OgsĂ„ underprĂžving kan utfĂžrast i rad, 4 pikslar horisontalt og vertikalt. Den fĂžrste varianten blir brukt oftare. Dersom bildekvaliteten er viktig, blir det ikkje utfĂžrt nokon underprĂžving.
Ein illustrativ framstilling av underprĂžving (Habr tillĂ©t ikkje at eg sette inn gif) â
Hovuddelen av tilberedelsen
DCT
No kjem den mest kompliserte og nĂždvendige delen. Heile bildet blir delt opp i blokker pĂ„ 8Ă8 (med fylling dersom opplĂžysinga ikkje er eit heilt multiplum av blokkens side).
No blir DCT (Diskret kosinus-transformasjon) brukt pĂ„ kvar blokk. DCT (Diskret kosinus-transformasjon). I denne delen fjernes alt overflĂždig fra bildet. Ved Ă„ bruke DCT mĂ„ man forstĂ„ om denne blokken (8Ă8) beskriver en monoton del av bildet: himmel, vegg; eller om den inneholder en kompleks struktur (hĂ„r, symboler osv.). Det er logisk at 64 lignende fargepiksler kan beskrives med bare 1, siden stĂžrrelsen pĂ„ blokken er allerede kjent. Her har vi kompresjon: 64 til 1.
DCT omdanner blokken til et spektrum, og der hvor mĂ„lingene skifter brĂ„tt, blir koeffisienten positiv, og jo skarpere overgangen er, desto hĂžyere blir utgangen. Der hvor koeffisienten er hĂžyere, vises klare overganger i farge og lysstyrke, hvor den er lavere â svake (jevn) endringer i komponentene YCbCr i blokken.
Kvantisering
Her brukes allerede kompresjonsinnstillinger. Hver av koeffisientene i hver av 8Ă8-matrisene deles med et spesifikt tall. Hvis bildekvaliteten etter alle modifikasjoner ikke skal reduseres ytterligere, bĂžr divisor vĂŠre Ă©n. Hvis minnet opptatt av dette bildet er viktigere for deg, vil divisoren vĂŠre stĂžrre enn 1, og kvotienten blir avrundet. Dermed kan det ofte bli mange nuller etter avrunding.
Kvantisering gjĂžres for Ă„ lage mulighet for enda stĂžrre kompresjon. Slik ser det ut i eksemplet med kvantisering av grafen y = sin(x):

Kompresjon
FÞrst gÄr vi gjennom matrisen i en sikksakk:

Vi fÄr et en-dimensjonalt array med tall. Vi ser at det er mange nuller i det, som kan fjernes. I stedet for sekvenser av mange nuller skriver vi inn 1 null og etter det et tall som angir mengden i sekvensen. PÄ denne mÄten kan vi redusere stÞrrelsen til hele arrayet til 1/3. SÄ blir dette arrayet enkelt komprimert ved hjelp av Huffman-metoden, og deretter skrives det inn i selve filen.
Hvor brukes
Overalt. Akkurat som PNG, brukes JPEG i kameraer, OS-er (som bedriftslogoer, applikasjonsikoner, miniatyrbilder) og i alle mulige omrÄder hvor det er nÞdvendig Ä lagre bilder effektivt.
Utdata
For Þyeblikket er kunnskap om JPEG verdifullt for utdanningsformÄl, da den allerede er innebygd overalt og optimalisert av store grupper mennesker, men vitenskapens granitt er fortsatt fristende.
Kilder
Kilde: habr.com
