I-JPEG. I-algorithm yokucindezela

Sawubona futhi! Ngithole lesi sihloko sibhalwe ngoMeyi 2019. Lokhu ukuqhubeka kochungechunge lwezihloko mayelana ne-WAVE ne-JPEG, lapha kuqala. Lokhu kushicilelwa kuzobandakanya ulwazi olumayelana ne-algorithm yombhalo wekhodi wesithombe kanye nefomethi ngokwayo iyonke.

Ingcosana yomlando

Isipuni se-athikili ye-Wikipedia:

I-JPEG (Iqembu Lochwepheshe Bezithombe Ezihlanganisiwe) ingelinye lamafomethi emifanekiso e-raster adumile asetshenziselwa ukugcina izithombe nezithombe ezifanayo.

Leli zinga lasungulwa i-Joint Photographic Experts Group emuva ngo-1991 ukuze kucindezelwe isithombe ngendlela efanele.

Izithombe zihamba kanjani zisuka kokuluhlaza ziye kuJPEG?

Abanye abantu bacabanga ukuthi izithombe ze-JPEG ziyidatha eluhlaza ecindezelwe kusetshenziswa indlela ye-Huffman, kodwa lokhu akulona iqiniso. Ngaphambi kokucindezelwa kokulawula, idatha ihamba ibanga elide.

Okokuqala, imodeli yombala iyashintshwa isuka ku-RGB iye ku-YCbCr. Kukhona ngisho ne-algorithm ekhethekile yalokhu - lapha. I-Y ayithintwa, ngoba inesibopho sokukhanya, futhi ukuguqulwa kwayo kuzobonakala.

Into yokuqala okumele uyenze ngesithombe "ukuncipha" (isampula). Kulula ukukuqonda: kuthathwa amaphikseli angu-2x2, bese kuthathwa i-Cb ne-Cr - amanani amaphakathi engxenye ngayinye ye-YCbCr yalawa maphikseli angu-4. Ngakho, siwine amabhayithi angu-6, esikhundleni sika-4 Y, 4 Cb, 4 Cr sithole u-4 Y kanye ne-Cb efanayo ne-Cr ngayinye yazo (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 - 6 = 6). Esikalini esingu-2x2 esilinganayo, ukucindezela okulahlekile okunesilinganiso sokuminyanisa okungu-2:1 kuzwakala kuqinile. Lokhu kusebenza kuso sonke isithombe. Futhi ngakho - behla usayizi oyingxenye. Futhi singasebenzisa le nqubo ngenxa yombono wethu wombala. Umuntu uzoqaphela kalula umehluko ekugqameni, kodwa hhayi ngombala, uma kulinganiselwa ngaphezu kwebhulokhi elincane lamaphikseli. Ukunciphisa kungenziwa futhi emugqeni, amaphikseli angu-4 ngokuvundlile nangokuqondile. Inketho yokuqala isetshenziswa kaningi. Uma ikhwalithi yesithombe ibalulekile, khona-ke ukuncishiswa akwenziwa nhlobo.
Umfanekiso obonakalayo wokuncipha (uHabr akazange angivumele ukuthi ngifake i-gif) - https://i.ibb.co/Rg5Th9H/150953010617579181.gif

Ingxenye eyinhloko yokulungiselela

I-PrEP

Manje kufika ingxenye enzima kakhulu nedingeka kakhulu. Sonke isithombe sihlukaniswe ngamabhulokhi angu-8x8 (ukugcwalisa kusetshenziswa uma ukulungiswa kungekona ukuphindaphinda kohlangothi lwebhulokhi).

Manje sebenza kubhulokhi ngayinye I-DCT (Discrete Cosine Transform). Kule ngxenye, konke okungadingekile kukhishwa esithombeni. Usebenzisa i-DCT, udinga ukuqonda ukuthi ibhulokhi enikeziwe (8Γ—8) ichaza noma iyiphi ingxenye yesithombe esiyisidina: isibhakabhaka, udonga; noma iqukethe isakhiwo esiyinkimbinkimbi (izinwele, izimpawu, njll.). Kunengqondo ukuthi amaphikseli angama-64 ombala ofanayo angachazwa ngu-1 nje, ngoba usayizi webhulokhi uyaziwa kakade. Kakhulu ngokucindezelwa: 64 kuya ku-1.

I-DCT iguqula ibhulokhi ibe yi-spectrum, futhi lapho ukufundwa kushintsha kakhulu, i-coefficient iba phozithivu, futhi uma uguquko lubukhali, okuphumayo kuzoba phezulu. Lapho i-coefficient iphakeme, isithombe sibonisa ukushintshwa okucacile kombala nokukhanya, lapho kuphansi - kubuthakathaka (bushelelezi) izinguquko kumanani wezingxenye ze-YCbCr kubhulokhi.

Quantization

Izilungiselelo zokuminyanisa sezivele zisetshenziswa lapha. I-coefficient ngayinye kumatikuletsheni we-8x8 ihlukaniswa ngenombolo ethile. Uma ungeke unciphise ikhwalithi yesithombe ngemva kwakho konke ukuguqulwa kwayo, khona-ke isihlukanisi kufanele sibe sinye. Uma inkumbulo ekulesi sithombe ibaluleke kakhulu kuwe, khona-ke isihlukanisi sizoba sikhulu kuno-1, futhi i-quotient izozungezwa. Kuvele ukuthi ngemva kokuhlanganisa ngokuvamile ugcina ngoziro abaningi.

I-Quantization yenziwa ukuze kwakhiwe amathuba okucindezelwa okukhulu nakakhulu. Nakhu ukuthi kubukeka kanjani usebenzisa isibonelo sokulinganisa igrafu y = sin(x):

I-JPEG. I-algorithm yokucindezela

Ukucindezela

Okokuqala sidlula ku-matrix ngephethini ye-zig-zag:

I-JPEG. I-algorithm yokucindezela

Sithola i-dimensional eyodwa enezinombolo. Siyabona ukuthi kukhona ama-zero amaningi kuwo, angasuswa. Ukwenza lokhu, esikhundleni sokulandelana koziro abaningi, sifaka u-1 zero futhi ngemva kwayo inombolo ebonisa inombolo yabo ngokulandelana. Ngale ndlela ungasetha kabusha ku-1/3 usayizi wawo wonke amalungu afanayo. Bese simane sicindezele lolu hlu sisebenzisa indlela ye-Huffman bese siyibhala efayelini ngokwalo.

Lapho isetshenziswa

Yonke indawo. Njenge-PNG, i-JPEG isetshenziswa kumakhamera, ama-OS (njengamalogo enkampani, izithonjana zohlelo lokusebenza, izithonjana) nakuzo zonke izindawo okungenzeka lapho izithombe zidinga ukugcinwa kahle.

isiphetho

Okwamanje, ulwazi mayelana ne-JPEG manje selubalulekile ngezinjongo zemfundo kuphela, ngoba kakade lwakhiwe kuyo yonke indawo futhi lwenziwe ngamaqembu amakhulu abantu, kodwa i-granite yesayensi isamnandi.

Imithombo

I-athikili emayelana ne-YCbCr ku-Wikipedia
Isihloko se-Wikipedia ku-JPEG
Okuncane mayelana ne-PrEP okuvela kokuthunyelwe kwe-Pikabu
Isihloko se-Wikipedia nge-PrEP

Source: www.habr.com

Engeza amazwana