JPEG. Compression algorithm

Nyob zoo dua! Kuv pom cov ntawv no sau rov qab rau lub Tsib Hlis 2019. Nov yog qhov txuas ntxiv ntawm cov kab lus hais txog WAVE thiab JPEG, ntawm no thawj zaug. Qhov kev tshaj tawm no yuav suav nrog cov ntaub ntawv hais txog cov duab encoding algorithm thiab hom ntawv nws tus kheej tag nrho.

Ib tug pinch ntawm keeb kwm

Ib tablespoon ntawm Wikipedia tsab xov xwm:

JPEG (Joint Photographic Experts Group) yog ib qhov nrov raster duab hom siv los khaws cov duab thiab cov duab zoo sib xws.

Cov qauv no tau tsim los ntawm Pawg Kws Tshaj Lij Tshaj Lij Tshaj Lij Tshaj Plaws rov qab rau xyoo 1991 rau kev ua kom cov duab zoo.

Yuav ua li cas cov duab mus ntawm raw rau JPEG?

Qee tus neeg xav tias JPEG cov duab yog cov ntaub ntawv nyoos compressed siv Huffman txoj kev, tab sis qhov no tsis muaj tseeb. Ua ntej tswj compression, cov ntaub ntawv taug kev ntev.

Ua ntej, cov qauv xim hloov ntawm RGB rau YCbCr. Muaj txawm tias ib qho tshwj xeeb algorithm rau qhov no - no. Y tsis kov, vim nws yog lub luag haujlwm rau qhov ci, thiab nws qhov kev hloov pauv yuav pom tau.

Thawj qhov ua rau daim duab yog "thinning" (subsampling). Qhov no yog ib qho yooj yim to taub: ib tug 2x2 array ntawm pixels yog coj, ces Cb thiab Cr raug coj - qhov nruab nrab qhov tseem ceeb ntawm txhua yam ntawm YCbCr Cheebtsam ntawm cov 4 pixels. Yog li ntawd, peb yeej 6 bytes, es tsis yog 4 Y, 4 Cb, 4 Cr peb tau 4 Y thiab tib Cb thiab Cr rau txhua tus (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 - 6 = 6). Txawm tias 2x2 nplai, lossy compression nrog 2: 1 compression piv suab zoo. Qhov no siv rau tag nrho cov duab. Thiab yog li - lawv poob ib nrab ntawm qhov loj me. Thiab peb tuaj yeem siv cov txheej txheem no ua tsaug rau peb cov xim pom. Ib tug neeg yuav yooj yim pom qhov sib txawv ntawm qhov ci, tab sis tsis yog xim, yog tias nws nruab nrab ntawm ib qho me me ntawm pixels. Thinning kuj tuaj yeem ua rau hauv kab, 4 pixels kab rov tav thiab ntsug. Thawj qhov kev xaiv yog siv ntau zaus. Yog tias cov duab zoo yog qhov tseem ceeb, ces kev txiav txim siab tsis ua txhua.
Daim duab qhia txog kev ua kom nyias nyias (Habr tsis tso cai rau kuv ntxig rau gif) - https://i.ibb.co/Rg5Th9H/150953010617579181.gif

Qhov tseem ceeb ntawm kev npaj

Dkp

Tam sim no los txog qhov nyuaj tshaj plaws thiab tsim nyog tshaj plaws. Tag nrho cov duab tau muab faib ua 8x8 blocks (sau yog siv yog tias qhov kev daws teeb meem tsis yog ntau yam ntawm qhov thaiv sab).

Tam sim no siv rau txhua qhov thaiv DCT (Discrete Cosine Hloov). Hauv ntu no, txhua yam tsis tsim nyog tau muab tawm ntawm daim duab. Siv DCT, koj yuav tsum nkag siab seb lub block (8 Γ— 8) piav qhia txog ib feem ntawm daim duab: lub ntuj, phab ntsa; los yog nws muaj cov qauv tsim (cov plaub hau, cim, thiab lwm yam). Nws yog qhov laj thawj uas 64 pixels ntawm cov xim zoo sib xws tuaj yeem piav qhia los ntawm tsuas yog 1, vim tias qhov block loj twb paub lawm. Ntau npaum li cas rau compression: 64 rau 1.

DCT hloov lub thaiv mus rau hauv ib lub spectrum, thiab qhov twg cov kev nyeem ntawv hloov sharply, lub coefficient yuav zoo, thiab lub sharper qhov kev hloov, cov zis ntau dua. Qhov twg cov coefficient siab dua, daim duab qhia pom kev hloov pauv hauv cov xim thiab qhov ci, qhov twg nws qis dua - tsis muaj zog (dhau) kev hloov pauv hauv cov txiaj ntsig ntawm YCbCr cov khoom hauv qhov thaiv.

Quantization

Compression settings twb tau siv ntawm no. Txhua tus coefficients hauv txhua qhov ntawm 8x8 matrices muab faib los ntawm ib tus lej. Yog tias koj yuav tsis txo cov duab zoo tom qab tag nrho nws cov kev hloov kho, ces tus divisor yuav tsum yog ib qho. Yog tias lub cim xeeb nyob ntawm daim duab no tseem ceeb dua rau koj, ces qhov sib faib yuav ntau dua 1, thiab cov quotient yuav sib npaug. Nws hloov tawm hais tias tom qab rounding koj feem ntau xaus nrog ntau xoom.

Quantization yog ua tiav los tsim kom muaj peev xwm ntawm compression ntau dua. Nov yog qhov nws zoo li siv piv txwv ntawm quantizing daim duab y = sin(x):

JPEG. Compression algorithm

Ntsuas Siv

Ua ntej peb mus dhau lub matrix nyob rau hauv ib tug zig-zag qauv:

JPEG. Compression algorithm

Peb tau txais ib qho array nrog tus lej. Peb pom tias muaj ntau tus lej hauv nws, lawv tuaj yeem raug tshem tawm. Txhawm rau ua qhov no, es tsis txhob ntawm ntau qhov zeros, peb nkag mus rau 1 xoom thiab tom qab nws tus lej qhia lawv tus lej hauv ntu. Txoj kev no koj tuaj yeem rov pib dua rau 1/3 qhov loj ntawm tag nrho cov array. Thiab tom qab ntawd peb tsuas compress cov array no siv Huffman txoj kev thiab sau rau hauv cov ntaub ntawv nws tus kheej.

Qhov twg siv

Txhua qhov chaw. Zoo li PNG, JPEG yog siv rau hauv koob yees duab, OSs (raws li lub tuam txhab logos, daim ntawv thov icons, thumbnails) thiab nyob rau hauv tag nrho cov muaj peev xwm cov dluab yuav tsum tau zoo khaws cia.

xaus

Tam sim no, kev paub txog JPEG tam sim no tseem ceeb rau kev kawm, vim tias nws twb tau tsim nyob rau hauv txhua qhov chaw thiab ua kom zoo los ntawm cov neeg coob coob, tab sis granite ntawm kev tshawb fawb tseem yog cua.

Cov chaw

Kab lus hais txog YCbCr ntawm Wikipedia
Wikipedia tsab xov xwm ntawm JPEG
Ib me ntsis txog PrEP los ntawm Pikabu ncej
Wikipedia tsab xov xwm ntawm PrEP

Tau qhov twg los: www.hab.com

Ntxiv ib saib