JPEG. Algoritmi i kompresimit

Përshëndetje përsëri! Gjeta këtë artikull, i shkruar në maj të vitit 2019. Ky është një vazhdim i serisë së artikujve mbi WAVE dhe JPEG. Ja e para. Ky publikim do të përfshijë informacion mbi algoritmin e kodimit të imazheve dhe për formatin në përgjithësi.

Një grimcë historie

Një lugë të madhe artikulli nga Wikipedia:

JPEG (Grupi Ekspertëve të Fotografive të Bashkuar) është një nga formatet më të njohura të grafikut raster, i përdorur për ruajtjen e fotografive dhe imazheve të ngjashme.

Ky standart u zhvillua nga Grupi i Ekspertëve mbi Fotografitë që në vitin 1991 për kompresimin efikas të imazheve.

Cila është rruga që ndjekin imazhet nga forma e kriptuar deri në JPEG

Disa besojnë se imazhet JPEG janë të dhëna të papërpunuara të kompresuara me metodën Huffman, por kjo nuk është e vërtetë. Para kompresimit përfundimtar, të dhënat kalojnë përmes një rrugë të gjatë.

SĂ« pari ndryshohet modeli i ngjyrave nga RGB nĂ« YCbCr. PĂ«r kĂ«tĂ« ka edhe njĂ« algoritĂ«m tĂ« veçantĂ« — kĂ«tu. Y nuk preket, sepse ai Ă«shtĂ« pĂ«rgjegjĂ«s pĂ«r ndriçimin dhe njĂ« ndryshim do tĂ« ishte i dukshĂ«m.

E para qĂ« bĂ«het me imazhin Ă«shtĂ« «ndĂ«rrimi» (subsampling). E kupton thjesht: merret njĂ« grumbull 2x2 pikselĂ«sh, pastaj merret Cb dhe Cr — mesatarja e secilĂ«s nga komponentĂ«t YCbCr tĂ« kĂ«tyre 4 pikseve. Dhe kĂ«shtu, ne fituam 6 byte, nĂ« vend tĂ« 4 Y, 4 Cb, 4 Cr morĂ«m 4 Y dhe tĂ« njĂ«jtat pĂ«r secilin Cb dhe Cr (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 — 6 = 6). NĂ« njĂ« shkallĂ« edhe 2×2, kompresimi me humbje me njĂ« raport kompresimi 2:1 duket mbresĂ«lĂ«nĂ«se. Kjo aplikohet pĂ«r tĂ« gjithĂ« imazhin. Ashtu — shfuqizuam gjysmĂ«n e madhĂ«sisĂ«. Dhe njĂ« teknikĂ« tĂ« tillĂ« mund ta pĂ«rdorim falĂ« perceptimit tonĂ« tĂ« ngjyrave. Njeriu lehtĂ«sisht do tĂ« vĂ«rejĂ« ndryshimin nĂ« ndriçim, por jo nĂ« ngjyrĂ«, nĂ«se ajo Ă«shtĂ« mesatare nĂ« njĂ« bllok tĂ« vogĂ«l pikselesh. Gjithashtu, ndĂ«rrimi mund tĂ« bĂ«het nĂ« linjĂ«, 4 pikselĂ« horizontalisht dhe verticalisht. Varianti i parĂ« pĂ«rdoret mĂ« shpesh. NĂ«se Ă«shtĂ« e rĂ«ndĂ«sishme cilĂ«sia e imazhit, atĂ«herĂ« ndĂ«rrimi nuk kryhet fare.
Ilustrimi i qartĂ« i ndĂ«rrimit (Habr nuk e lejoi tĂ« vendosja gifin) — https://i.ibb.co/Rg5Th9H/150953010617579181.gif

Pjesa kryesore e përgatitjes

DCT

Tani pjesa më e komplikuar dhe e nevojshme. Imazhi i gjithë ndahet në blloqe 8x8 (përdoren mbushje në rast se rezolucioni nuk është shumëfish i anës së bllokut).

Tani çdo bllokut i aplikohet DCT (Transformimi Diskret i KosinĂ«ve)NĂ« kĂ«tĂ« pjesĂ«, gjithçka e tepĂ«rt hiqet nga imazhi. Duke pĂ«rdorur DCT-nĂ«, duhet tĂ« kuptoni nĂ«se ky bllok (8×8) pĂ«rshkruan ndonjĂ« pjesĂ« monotone tĂ« imazhit: qiell, mure; ose pĂ«rmban njĂ« strukturĂ« komplekse (flokĂ«, simbole etj.). ËshtĂ« logjike qĂ« 64 pikselĂ« tĂ« ngjashĂ«m me ngjyrĂ« mund tĂ« pĂ«rshkruhen me vetĂ«m 1, pasi pĂ«rmasat e bllokut tashmĂ« janĂ« tĂ« njohura. Ky Ă«shtĂ« comprimi: 64 nĂ« 1.

DCT shndĂ«rron bllokun nĂ« spektĂ«r, dhe aty ku leximet ndodhin papritmas, koeficienti bĂ«het pozitiv, dhe sa mĂ« e fortĂ« tĂ« jetĂ« kalimi, aq mĂ« i lartĂ« do tĂ« jetĂ« rezultati. Aty ku koeficienti Ă«shtĂ« mĂ« i lartĂ«, nĂ« imazh janĂ« tĂ« pĂ«rfaqĂ«suara kalimet e qarta nĂ« ngjyrĂ« dhe ndriçim, ndĂ«rsa aty ku Ă«shtĂ« mĂ« e ulĂ«t — kalime tĂ« dobĂ«ta (tĂ« buta) tĂ« pĂ«rbĂ«rĂ«sve YCbCr nĂ« bllok.

Kvantizimi

Tani aplikohen cilĂ«simet e kompresionit. Çdo koeficient nĂ« çdo matricĂ« 8×8 ndahen me njĂ« numĂ«r tĂ« caktuar. NĂ«se cilĂ«sia e imazhit pas tĂ« gjitha modifikimeve nuk do tĂ« ulej mĂ«, ndarja duhet tĂ« jetĂ« njĂ«. Po nĂ«se ju intereson mĂ« shumĂ« memoria e zĂ«nĂ« nga kjo fotografi, atĂ«herĂ« ndarja do tĂ« jetĂ« mĂ« e madhe se 1, dhe rezultati do tĂ« pĂ«rshkruhet. KĂ«shtu ndodh qĂ« pas pĂ«rshkrimit shpesh del shumĂ« zero.

Kvantizimi bëhet për të krijuar mundësinë e një kompresioni edhe më të madh. Ja si duket me shembullin e grafikut y = sin(x):

JPEG. Algoritmi i kompresimit

Kompresimi

Fillimisht kalojmë përmes matricës në zig-zag:

JPEG. Algoritmi i kompresimit

Marrim një varg të dhënash një-dimensional. Ne shohim që ka shumë zero, mund t'i heqim ato. Për këtë, në vend të një sekuence me shumë zero, shkruajmë 1 zero dhe pas tij një numër që tregon sasinë e tyre në sekuencë. Kështu mund të reduktojmë deri në 1/3 të madhësisë së gjithë vargut. Më pas thjesht e kompresojmë këtë varg me metodën e Huffmanit dhe e shkruajmë në dosjen vetë.

Ku përdoret

Për gjithkund. Ashtu si PNG, JPEG përdoret në aparatet fotografikë, OS-të (si logot e kompanive, ikonat e aplikacioneve, miniaturat) dhe në të gjitha fushat e mundshme ku duhet të ruhet imazhet në mënyrë efektive.

Përfundimi

Aktualisht, njohuritë rreth JPEG janë të vlefshme vetëm për qëllime arsimore, sepse ai tashmë është i integruar në çdo vend dhe është optimizuar nga grupe të mëdha njerëzish, por guri i shkencës megjithëse është i shijshëm.

Burimet

Artikulli mbi YCbCr në Wikipedia
Artikulli mbi JPEG në Wikipedia
Pak për DCT nga postimi në Pikabu
Artikulli mbi DCT në Wikipedia

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster