JPEG. Compression algorithm

Miarahaba indray! Hitako nosoratana tamin'ny Mey 2019 ity lahatsoratra ity. Ity dia tohin'ny andian-dahatsoratra momba ny WAVE sy JPEG, eto voalohany. Ity famoahana ity dia ahitana fampahalalana momba ny algorithm fandiovana sary sy ny endrika manontolo.

Tantara kely

sotro iray amin'ny lahatsoratra Wikipedia:

JPEG (Joint Photographic Experts Group) dia iray amin'ireo endrika sary raster malaza ampiasaina amin'ny fitehirizana sary sy sary mitovy.

Ity fenitra ity dia novolavolain'ny Joint Photographic Experts Group tamin'ny 1991 ho an'ny famatrarana sary mahomby.

Ahoana ny fandehan'ny sary avy amin'ny manta mankany amin'ny JPEG?

Misy mihevitra fa ny sary JPEG dia angon-drakitra manta nopotehina tamin'ny fampiasana ny fomba Huffman, saingy tsy marina izany. Alohan'ny hifehezana ny famoretana dia mandeha lavitra ny angon-drakitra.

Voalohany, niova ny modely loko avy amin'ny RGB ho YCbCr. Misy algorithm manokana ho an'izany - eto. Tsy kitihina ny Y, satria izy no tompon'andraikitra amin'ny famirapiratana, ary ho tsikaritra ny fiovany.

Ny zavatra voalohany atao amin'ny sary dia "manify" (subsampling). Mora azo izany: alaina ny 2x2 piksel, avy eo Cb sy Cr no raisina - ny sandan'ny salan'isa isaky ny singa YCbCr amin'ireo piksel 4 ireo. Noho izany, nahazo 6 bytes izahay, raha tokony ho 4 Y, 4 Cb, 4 Cr dia nahazo 4 Y ary mitovy ny Cb sy Cr ho an'ny tsirairay amin'izy ireo (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 - 6 = 6). Na dia amin'ny ambaratonga 2x2 aza, ny famatrarana very miaraka amin'ny tahan'ny famatrarana 2: 1 dia toa mafy orina. Izany dia mihatra amin'ny sary manontolo. Ary noho izany - nandatsaka antsasaky ny habeny. Ary afaka mampiasa io teknika io isika noho ny fahitantsika loko. Ny olona iray dia hahatsikaritra mora foana ny fahasamihafana eo amin'ny famirapiratana, fa tsy amin'ny loko, raha salan'isa amin'ny sakana kely iray. Ny fanivanana dia azo atao amin'ny tsipika, 4 pixels horizontally sy vertically. Ny safidy voalohany dia ampiasaina matetika kokoa. Raha zava-dehibe ny kalitaon'ny sary, dia tsy atao mihitsy ny famongorana.
Fanoharana hita maso momba ny fanivanana (tsy navelan'i Habr hampiditra gif aho) - https://i.ibb.co/Rg5Th9H/150953010617579181.gif

Ny ampahany lehibe amin'ny fanomanana

PrEP

Tonga izao ny ampahany sarotra sy ilaina indrindra. Ny sary manontolo dia mizara ho blocs 8x8 (famenoana no ampiasaina raha tsy maromaro amin'ny lafiny sakana ny vahaolana).

Ampiharo amin'ny bloc tsirairay izao DCT (Discrete Cosine Transform). Amin'ity ampahany ity, ny zavatra rehetra tsy ilaina dia esorina amin'ny sary. Amin'ny fampiasana DCT, mila mahatakatra ianao raha misy sakana iray (8Γ—8) mamaritra ny ampahany tsy misy dikany amin'ny sary: ​​ny lanitra, ny rindrina; na misy rafitra sarotra (volo, marika, sns.). Lojika fa ny 64 pixel mitovitovy loko dia azo faritana amin'ny 1 fotsiny, satria efa fantatra ny haben'ny sakana. Be loatra ho an'ny famatrarana: 64 hatramin'ny 1.

Ny DCT dia mamadika ny sakana ho spektrum, ary raha miova be ny vakiteny, dia lasa tsara ny coefficient, ary ny fiovaovana maranitra dia ny avo kokoa ny vokatra. Raha avo kokoa ny coefficient, ny sary dia mampiseho fiovana mazava amin'ny loko sy ny famirapiratana, izay ambany kokoa - ny fiovan'ny fahalemena (malama) amin'ny soatoavin'ny singa YCbCr ao amin'ny sakana.

Quantization

Efa mihatra eto ny fanerena fanerena. Ny coefficient tsirairay ao amin'ny matrices 8x8 tsirairay dia zaraina amin'ny isa iray. Raha tsy hampihena ny kalitaon'ny sary ianao aorian'ny fanovana rehetra, dia tokony ho iray ny fisarahana. Raha manan-danja kokoa aminao ny fitadidiana omen'ity sary ity, dia ho lehibe noho ny 1 ny mpizara, ary ho boribory ny quotient. Hita fa aorian'ny fihodinana dia matetika ianao no miafara amin'ny aotra be dia be.

Ny quantization dia atao mba hamoronana ny mety hisian'ny famoretana lehibe kokoa. Toy izao ny endriky ny fampiasana ny ohatra amin'ny fanombanana ny graph y = sin(x):

JPEG. Compression algorithm

famatrarana

Voalohany dia mandalo ny matrix amin'ny zig-zag isika:

JPEG. Compression algorithm

Mahazo lasitra tokana misy isa isika. Hitantsika fa be dia be ny aotra ao, azo esorina. Mba hanaovana izany, raha tokony ho filaharan'ny aotra maro, dia miditra 1 aotra isika ary aorian'izany dia misy isa manondro ny isany ao amin'ny filaharana. Amin'izany fomba izany dia azonao atao ny mamerina amin'ny 1/3 ny haben'ny array manontolo. Ary avy eo dia manindry an'ity array ity izahay amin'ny alΓ lan'ny fomba Huffman ary soraty ao anaty rakitra.

Aiza no ampiasaina

Eny rehetra eny. Tahaka ny PNG, JPEG dia ampiasaina amin'ny fakan-tsary, OSes (toy ny logos orinasa, kisary fampiharana, thumbnails) ary amin'ny faritra rehetra mety ilana fitahirizana sary.

famaranana

Amin'izao fotoana izao, ny fahalalana momba ny JPEG dia sarobidy ho an'ny tanjona fanabeazana ihany, satria efa naorina hatraiza hatraiza ary nohamafisin'ny vondron'olona marobe, fa ny granita ny siansa dia mbola matsiro.

loharanom-baovao

Lahatsoratra momba ny YCbCr ao amin'ny Wikipedia
Lahatsoratra Wikipedia momba ny JPEG
Kely momba ny PrEP avy amin'ny lahatsoratra Pikabu
Lahatsoratra Wikipedia momba ny PrEP

Source: www.habr.com

Add a comment