Tere jÀlle! Leidsin selle artikli, mis on kirjutatud juba 2019. aasta mais. See on osa artiklite sarjast WAVE ja JPEG kohta, . See postitus sisaldab teavet pildikoodeerimise algoritmi ja formaadi enda kohta.
Natuke ajalugu
SupilusikatÀis artiklit Vikipeediast:
JPEG (Joint Photographic Experts Group) on ĂŒks populaarsemaid rastergraafika formaate, mida kasutatakse fotograafia ja sarnaste piltide salvestamiseks.
See standard loodi fotospetsialistide ĂŒhendatud grupi poolt 1991. aastal, et tagada piltide efektiivne tihendamine.
Millised on sammud, mille pildid lÀbivad toorelt JPEG-ini.
MÔned arvavad, et JPEG-pildid on Huffmani meetodil tihendatud toored andmed, kuid see pole tÔsi. Enne itsetihedust lÀbivad andmed pika tee.
Esimene samm on vĂ€rvimudeli muutmine RGB-st YCbCr-ks. Selle jaoks on isegi spetsiaalne algoritm â . Y-d ei muudetud, kuna see vastutab heleduse eest ja selle muutmine oleks kohe mĂ€rgatav.
Esimene, mida pildiga tehakse, on âproportsioneerimineâ (subsampling). Seda on lihtne mĂ”ista: vĂ”tame 2x2 pikslite massiivi, seejĂ€rel vĂ”tame Cb ja Cr â iga YCbCr komponendi keskmised vÀÀrtused nendest neljast pikslitest. Nii saime me 6 baiti kokkuhoiust, 4 Y, 4 Cb, 4 Cr asemel saime 4 Y ja kĂ”ikide jaoks ĂŒhesugused Cb ja Cr (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 â 6 = 6). Isegi 2x2 puhul kĂ”lab tihendamine kaotuse mÀÀraga 2:1 vĂ€ga hĂ€sti. Seda rakendatakse kogu pildile. Ja nii â oleme pool suurusest kaotanud. Sellist tehnikat saame kasutada tĂ€nu meie vĂ€rvide tajumisele. Inimene mĂ€rkab kergesti heleduse erinevust, kuid mitte vĂ€rvi, kui see on vĂ€ikestes pikslite plokkides keskmistatud. Proportsioneerimist saab teha ka ridades, 4 pikslit horisontaalselt ja vertikaalselt. Esimene variant on sagedamini kasutatav. Kui pildi kvaliteet on oluline, siis proportsioneerimist ei tehta ĂŒldse.
Visuaalne illustreerimine proportsioneerimisest (Habr ei lubanud gif'i lisada) â
Peamine ettevalmistus
DCT
NĂŒĂŒd kĂ”ige keerulisem ja vajalik osa. Kogu pilt jagatakse 8x8 plokkideks (kasutatakse padjandit, kui eraldusvĂ”ime ei ole ploki kĂŒljega jagatav).
NĂŒĂŒd rakendatakse igale plokile DCT (Diskreetkosinusmuundur).. Sellel osal eemaldatakse pildist kĂ”ik ĂŒleliigne. Kasutades DCT-d, tuleb mĂ”ista, kas see blokk (8Ă8) kirjeldab mĂ”nda monotoonset osa pildist: taevast, seinast; vĂ”i sisaldab ta keerulist struktuuri (juuksed, sĂŒmbolid jne). Loogiliselt vĂ”ttes vĂ”ib 64 sarnase vĂ€rviga pikselit kirjeldada vaid 1-ga, kuna ploki suurus on juba teada. Ja siin on kompressioon: 64 kuni 1.
DCT muudab ploki spektriks ja seal, kus lugemised jĂ€rsult muutuvad, muutub koefitsient positiivseks, ja mida jĂ€rsem on ĂŒleminek, seda kĂ”rgem on vĂ€ljund. Seal, kus koefitsient on kĂ”rgem, on pildil selged ĂŒleminekud vĂ€rvis ja heleduses, kus see on madalam â nĂ”rgad (siledad) muutused YCbCr komponentide vÀÀrtustes plokis.
Kvantimine
Siin rakendatakse juba kompressimise seadeid. Iga koefitsient igas 8Ă8 maatriksis jagatakse teatud arvuga. Kui te ei kavatse pĂ€rast kĂ”iki selle modifikatsioone pilti veelgi kvaliteedi osas vĂ€hendada, peab jagaja olema ĂŒks. Kui teile on olulisem selle foto mĂ€lumaht, siis jagaja on suurem kui 1 ja jagatis ĂŒmardatakse. Nii juhtub, et pĂ€rast ĂŒmardamist tuleb sageli palju nulli.
Kvantimine tehakse, et luua veelgi suurema kompressimise vÔimalus. Nii see vÀlja nÀeb, vÔttes arvesse kvantimist funktsioonil y = sin(x):

Kompressioon
Esmalt liigume maatriksis nagu ziku-zakuga:

Saame ĂŒhemÔÔtmelise massiiviga, kus on numbrid. NĂ€eme, et seal on palju nullide, mida saab eemaldada. Selleks asendame jĂ€rjestuse paljusest nullist 1 nulliga ja pĂ€rast seda numbriga, mis tĂ€histab nende arvu jĂ€rjestuses. Nii saab kogu massiivi suurust vĂ€hendada kuni 1/3. Ja siis kompressitakse neid massiivi Haffmani meetodil ja kirjutame juba faili.
Kus kasutatakse
Igas kohas. Nii nagu PNG, kasutatakse JPEG-i ka kaamerates, operatsioonisĂŒsteemides (ettevĂ”tte logode, rakenduste ikoonide, thumbnail'ide jaoks) ja kĂ”igis vĂ”imalikes valdkondades, kus on vajalik kuvade tĂ”hus talletamine.
KokkuvÔte
Praegu on teadmised JPEG-i kohta vÀÀrtuslikud vaid hariduse seisukohalt, kuna see on juba igale poole integreeritud ja suured rĂŒhmad inimesi on seda optimeerinud, kuid teaduse kivi on siiski maitsev.
Allikad
Allikas: habr.com
