JPEG. Algorithm ya compression

Habari tena! Nilipata nakala hii imeandikwa mnamo Mei 2019. Huu ni muendelezo wa mfululizo wa makala kuhusu WAVE na JPEG, hapa kwanza. Chapisho hili litajumuisha maelezo kuhusu algoriti ya usimbaji picha na umbizo lenyewe kwa ujumla.

Kidogo cha historia

Kijiko cha makala ya Wikipedia:

JPEG (Kundi la Pamoja la Wataalamu wa Picha) ni mojawapo ya miundo maarufu ya michoro inayotumika kuhifadhi picha na picha zinazofanana.

Kiwango hiki kiliundwa na Kikundi cha Pamoja cha Wataalam wa Picha huko nyuma mnamo 1991 kwa ukandamizaji mzuri wa picha.

Je, picha hutokaje mbichi hadi JPEG?

Baadhi ya watu hufikiri kwamba picha za JPEG ni data mbichi iliyobanwa kwa kutumia mbinu ya Huffman, lakini hii si kweli. Kabla ya ukandamizaji wa udhibiti, data husafiri kwa muda mrefu.

Kwanza, mtindo wa rangi hubadilishwa kutoka RGB hadi YCbCr. Kuna hata algorithm maalum ya hii - hapa. Y haijaguswa, kwa kuwa inawajibika kwa mwangaza, na mabadiliko yake yataonekana.

Kitu cha kwanza cha kufanya na picha ni "kukonda" (sampuli ndogo). Ni rahisi kuelewa: safu ya 2x2 ya saizi inachukuliwa, kisha Cb na Cr huchukuliwa - maadili ya wastani ya kila sehemu ya YCbCr ya pikseli hizi 4. Kwa hiyo, tulishinda baiti 6, badala ya 4 Y, 4 Cb, 4 Cr tulipata 4 Y na Cb sawa na Cr kwa kila mmoja wao (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 - 6 = 6). Katika mizani hata ya 2x2, ukandamizaji unaopotea kwa uwiano wa 2:1 unasikika kuwa thabiti. Hii inatumika kwa picha nzima. Na hivyo - waliacha ukubwa wa nusu. Na tunaweza kutumia mbinu hii shukrani kwa mtazamo wetu wa rangi. Mtu ataona kwa urahisi tofauti katika mwangaza, lakini sio rangi, ikiwa ni wastani juu ya block ndogo ya saizi. Kukonda kunaweza pia kufanywa kwa mstari, saizi 4 kwa usawa na wima. Chaguo la kwanza hutumiwa mara nyingi zaidi. Ikiwa ubora wa picha ni muhimu, basi uharibifu haufanyiki kabisa.
Kielelezo cha kuona cha kukonda (Habr hakuniruhusu kuingiza gif) - https://i.ibb.co/Rg5Th9H/150953010617579181.gif

Sehemu kuu ya maandalizi

Dkp

Sasa inakuja sehemu ngumu na muhimu zaidi. Picha nzima imegawanywa katika vitalu 8x8 (kujaza hutumiwa ikiwa azimio sio nyingi ya upande wa kuzuia).

Sasa tumia kwa kila kizuizi DCT (Discrete Cosine Transform). Katika sehemu hii, kila kitu kisichohitajika kinachukuliwa nje ya picha. Kwa kutumia DCT, unahitaji kuelewa ikiwa kizuizi fulani (8 Γ— 8) kinaelezea sehemu yoyote ya picha: anga, ukuta; au ina muundo tata (nywele, alama, nk). Ni sawa kwamba saizi 64 za rangi sawa zinaweza kuelezewa na 1 tu, kwa sababu saizi ya block tayari inajulikana. Sana kwa compression: 64 hadi 1.

DCT hugeuza kizuizi kuwa wigo, na ambapo usomaji hubadilika kwa kasi, mgawo unakuwa chanya, na mpito mkali zaidi, matokeo yatakuwa ya juu. Ambapo mgawo ni wa juu, picha inaonyesha mabadiliko ya wazi katika rangi na mwangaza, ambapo ni ya chini - dhaifu (laini) mabadiliko katika maadili ya vipengele vya YCbCr kwenye block.

Quantization

Mipangilio ya kubana tayari inatumika hapa. Kila moja ya coefficients katika kila matrices 8x8 imegawanywa na idadi fulani. Ikiwa hautapunguza ubora wa picha baada ya marekebisho yake yote, basi mgawanyiko unapaswa kuwa mmoja. Ikiwa kumbukumbu iliyochukuliwa na picha hii ni muhimu zaidi kwako, basi kigawanyaji kitakuwa kikubwa kuliko 1, na mgawo utakuwa mviringo. Inatokea kwamba baada ya kuzunguka mara nyingi huisha na zero nyingi.

Quantization inafanywa ili kuunda uwezekano wa compression kubwa zaidi. Hivi ndivyo inavyoonekana kwa kutumia mfano wa kukadiria grafu y = sin(x):

JPEG. Algorithm ya compression

Π Π”Π ΒΆΠ  Β° Π‘, Π Ρ‘Π ΞΌ

Kwanza tunapitia matrix kwa muundo wa zig-zag:

JPEG. Algorithm ya compression

Tunapata safu ya mwelekeo mmoja na nambari. Tunaona kwamba kuna zero nyingi ndani yake, zinaweza kuondolewa. Ili kufanya hivyo, badala ya mlolongo wa zero nyingi, tunaingia sifuri 1 na baada yake nambari inayoonyesha nambari yao katika mlolongo. Kwa njia hii unaweza kuweka upya hadi 1/3 saizi ya safu nzima. Na kisha tunakandamiza safu hii kwa kutumia njia ya Huffman na kuiandika kwenye faili yenyewe.

Ambapo inatumika

Kila mahali. Kama PNG, JPEG inatumika katika kamera, OS (kama nembo za kampuni, ikoni za programu, vijipicha) na katika maeneo yote yanayowezekana ambapo picha zinahitaji kuhifadhiwa kwa ufanisi.

Pato

Kwa sasa, ujuzi kuhusu JPEG sasa ni muhimu tu kwa madhumuni ya elimu, kwa sababu tayari imejengwa kila mahali na kuboreshwa na makundi makubwa ya watu, lakini granite ya sayansi bado ni ya kitamu.

Vyanzo

Makala kuhusu YCbCr kwenye Wikipedia
Nakala ya Wikipedia juu ya JPEG
Kidogo kuhusu PrEP kutoka kwa chapisho la Pikabu
Nakala ya Wikipedia kuhusu PrEP

Chanzo: mapenzi.com

Kuongeza maoni