Hallo weer! Ek het hierdie artikel gevind wat in Mei 2019 geskryf is. Dit is 'n voortsetting van 'n reeks artikels oor WAVE en JPEG, hier
'n Knippie geskiedenis
'n Eetlepel Wikipedia-artikel:
JPEG (Joint Photographic Experts Group) is een van die gewilde rastergrafiese formate wat gebruik word vir die stoor van fotografiese beelde en soortgelyke beelde.
Hierdie standaard is in 1991 deur die Joint Photographic Experts Group ontwikkel vir doeltreffende beeldkompressie.
Hoe gaan beelde van rou na JPEG
Sommige mense dink JPEG-beelde is Huffman-saamgeperste rou data, maar dit is nie die geval nie. Data gaan 'n lang pad voor beheer kompressie.
Eerstens word die kleurmodel van RGB na YCbCr verander. Daar is selfs 'n spesiale algoritme hiervoor -
Die eerste ding om te doen met 'n beeld is "uitdunning" (substeekproefneming). Dit is maklik om te verstaan: 'n 2x2-skikking pixels word geneem, dan word Cb en Cr geneem - die gemiddelde waardes van elk van die YCbCr-komponente van hierdie 4 pixels. Dus, ons het 6 grepe gewen, in plaas van 4 Y, 4 Cb, 4 Cr het ons 4 Y en dieselfde Cb en Cr vir elkeen van hulle gekry (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 - 6 = 6). Op selfs 2x2-skale klink 2:1-verlies-kompressie solied. Dit geld vir die hele beeld. En so - die helfte van die grootte gedaal. En ons kan hierdie tegniek gebruik danksy ons kleurpersepsie. 'n Persoon sal maklik 'n verskil in helderheid opmerk, maar nie in kleur nie, as dit in 'n klein blokkie pixels gemiddeld is. Dunner kan ook in 'n lyn uitgevoer word, 4 pixels horisontaal en vertikaal. Die eerste opsie word meer gereeld gebruik. As beeldkwaliteit belangrik is, word desimering glad nie uitgevoer nie.
'n Visuele illustrasie van uitdunning (Habr het nie toegelaat om 'n gif in te voeg nie) -
Die belangrikste deel van die voorbereiding
Dkp
Nou die moeilikste en nodigste deel. Die hele prentjie word in 8×8 blokke verdeel (vulsel word gebruik as die resolusie nie 'n veelvoud van die blokkant is nie).
Dien nou toe op elke blokkie DCT (Discrete Cosinus Transform). In hierdie deel word alles wat oorbodig is uit die prentjie gehaal. Deur DCT te gebruik is dit nodig om te verstaan of die gegewe blok (8×8) enige eentonige deel van die beeld beskryf: lug, mure; of dit bevat 'n komplekse struktuur (hare, simbole, ens.). Dit is logies dat 64 pixels soortgelyk in kleur met net 1 beskryf kan word, want blokgrootte is reeds bekend. Hier is die kompressie: 64 tot 1.
DCT verander die blok in 'n spektrum, en waar die lesings skielik verander, word die koëffisiënt positief, en hoe skerper die oorgang, hoe hoër is die uitset. Waar die koëffisiënt hoër is, toon die prentjie duidelike oorgange in kleur en helderheid, waar dit laer is - swak (gladde) veranderinge in die waardes van die YCbCr-komponente in die blok.
Kwantifisering
Kompressie-instellings word reeds hier toegepas. Elk van die koëffisiënte in elk van die 8×8-matrikse is deelbaar deur 'n sekere getal. As jy nie die beeldkwaliteit sal verminder na al sy wysigings nie, moet die deler een wees. As die geheue wat deur hierdie foto in beslag geneem word vir jou belangriker is, sal die deler groter as 1 wees, en die kwosiënt sal afgerond word. Dit blyk dus dat jy na afronding dikwels baie nulle kry.
Kwantisering word gedoen om die moontlikheid van selfs groter kompressie te skep. Hier is hoe dit lyk op die voorbeeld van kwantisering van die grafiek y = sin(x):
Kompressie
Eerstens gaan ons deur die matriks in 'n sigsag:
Ons kry 'n eendimensionele skikking met getalle. Ons sien dat daar baie nulle in is, hulle kan verwyder word. Om dit te doen, in plaas van 'n ry van 'n stel nulle, voer ons 1 nul in en daarna 'n getal wat hul getal in die ry aandui. Op hierdie manier kan jy terugstel na 1/3 van die grootte van die hele skikking. En dan komprimeer dit eenvoudig hierdie skikking deur die Huffman-metode te gebruik en skryf dit in die lêer self.
Waar word gebruik
Oral. Soos PNG, word JPEG gebruik in kameras, OS's (as maatskappylogo's, toepassingsikone, duimnaels) en in alle moontlike areas waar beelde doeltreffend gestoor moet word.
Output
Op die oomblik is kennis oor JPEG nou net waardevol vir opvoedkundige doeleindes, want dit is reeds oral in groot groepe mense ingebou en geoptimaliseer, maar die graniet van wetenskap is steeds heerlik.
bronne
Bron: will.com