Yuav ua li cas hom JPEG ua haujlwm

JPEG dluab yog ubiquitous nyob rau hauv peb lub neej digital, tab sis tom qab no veneer ntawm kev paub yog algorithms uas tshem tawm cov ntsiab lus uas tsis pom rau tib neeg lub qhov muag. Qhov tshwm sim yog qhov pom kev zoo tshaj plaws hauv cov ntaub ntawv me me - tab sis nws ua haujlwm li cas? Cia peb saib qhov tseeb peb qhov muag tsis pom!

Yuav ua li cas hom JPEG ua haujlwm

Nws yog ib qho yooj yim rau kev tso cai muaj peev xwm xa ib daim duab rau ib tug phooj ywg thiab tsis txhawj txog dab tsi ntaus ntawv, browser lossis operating system lawv siv - tab sis qhov ntawd tsis yog ib txwm muaj. Thaum ntxov xyoo 1980, cov khoos phis tawj tuaj yeem khaws thiab tso saib cov duab digital, tab sis muaj ntau lub tswv yim sib tw txog txoj hauv kev zoo tshaj los ua qhov no. Koj tsis tuaj yeem xa cov duab ntawm ib lub computer mus rau lwm qhov thiab vam tias nws yuav ua haujlwm.

Txhawm rau daws qhov teeb meem no, pawg kws tshaj lij los ntawm thoob plaws ntiaj teb tau sib sau ua ke hauv xyoo 1986 hu ua "Joint Group of Photography ExpertsΒ» (Joint Photographic Experts Group, JPEG), tau tsim los ua kev sib koom tes ntawm International Organization for Standardization (ISO) thiab International Electrotechnical Commission (IEC), ob lub koom haum thoob ntiaj teb cov qauv hauv lub hauv paus hauv Geneva, Switzerland.

Ib pawg neeg hu ua JPEG tsim JPEG digital duab compression qauv hauv xyoo 1992. Tus neeg twg uas tau siv Internet tej zaum yuav ntsib JPEG encoded dluab. Qhov no yog txoj hauv kev zoo tshaj plaws los encode, xa thiab khaws cov duab. Los ntawm cov nplooj ntawv web mus rau email rau kev tshaj xov xwm, JPEG yog siv ntau lab lub sijhawm hauv ib hnub - txhua zaus peb saib cov duab hauv online lossis xa nws. Yog tsis muaj JPEG, lub vev xaib yuav muaj xim tsawg dua, qeeb dua, thiab tej zaum yuav muaj cov duab miv tsawg dua!

Kab lus no yog hais txog yuav ua li cas txiav txim siab ib daim duab JPEG. Hauv lwm lo lus, dab tsi yuav tsum tau hloov cov ntaub ntawv compressed khaws cia hauv lub computer rau hauv cov duab uas tshwm ntawm qhov screen. Qhov no tsim nyog paub, tsis yog vim nws yog ib qho tseem ceeb rau kev nkag siab txog cov thev naus laus zis uas peb siv txhua hnub, tab sis kuj vim tias los ntawm kev qhib cov qib compression, peb kawm paub ntau ntxiv txog kev nkag siab thiab kev pom, thiab cov ntsiab lus dab tsi peb lub qhov muag yog qhov nkag siab tshaj plaws rau.

Tsis tas li ntawd, ua si nrog cov duab hauv txoj kev no yog qhov nthuav heev.

Yuav ua li cas hom JPEG ua haujlwm

Saib hauv JPEG

Nyob rau hauv lub computer, txhua yam yog khaws cia raws li ib theem zuj zus ntawm binary tooj. Feem ntau cov khoom no, xoom thiab ib qho, tau muab faib ua pawg ntawm yim los ua bytes. Thaum koj qhib ib daim duab JPEG ntawm lub computer, ib yam dab tsi (qhov browser, lub operating system, lwm yam) yuav tsum txiav txim siab cov bytes, rov qab kho cov duab qub raws li cov npe ntawm cov xim uas tuaj yeem tso tawm.

Yog koj download tau no qab zib yees duab ntawm ib tug miv thiab qhib nws nyob rau hauv cov ntawv nyeem editor, koj yuav pom ib pawg ntawm incoherent cim.

Yuav ua li cas hom JPEG ua haujlwm
Ntawm no kuv siv Notepad ++ los tshuaj xyuas cov ntsiab lus ntawm cov ntaub ntawv, txij li cov ntawv nyeem ib txwm zoo li Notepad ntawm Windows yuav ua rau cov ntaub ntawv binary tsis raug tom qab txuag thiab nws yuav tsis txaus siab rau JPEG hom.

Qhib cov duab nyob rau hauv ib lo lus processor confuses lub computer, ib yam li koj confuse koj lub hlwb thaum koj rub koj ob lub qhov muag thiab pib pom tej xim!

Cov chaw koj pom no hu ua phosphenes, thiab tsis yog tshwm sim ntawm lub teeb stimulus los yog ib tug hallucination generated los ntawm lub siab. Lawv tshwm sim vim tias koj lub hlwb xav tias cov teeb liab hluav taws xob hauv cov hlab ntsha optic qhia cov ntaub ntawv hais txog lub teeb. Lub hlwb yuav tsum tau ua cov kev xav no vim tias tsis muaj txoj hauv kev paub seb lub teeb liab yog lub suab, lub zeem muag, lossis lwm yam. Tag nrho cov hlab ntsha hauv lub cev kis tau tib yam hluav taws xob impulses. Los ntawm kev siv lub siab rau koj ob lub qhov muag, koj xa cov teeb liab uas tsis pom, tab sis qhib lub qhov muag receptors, uas koj lub hlwb txhais - qhov no, tsis raug - raws li ib yam dab tsi pom. Koj tuaj yeem pom qhov siab!

Nws yog qhov lom zem los xav txog seb cov khoos phis tawj zoo li cas rau lub hlwb, tab sis nws kuj yog qhov muaj txiaj ntsig zoo los piav qhia ntau npaum li cas cov ntsiab lus ntawm cov ntaub ntawv - txawm tias nqa los ntawm lub cev los ntawm cov hlab ntsha lossis khaws cia hauv lub computer - nyob ntawm nws txhais lus. Tag nrho cov ntaub ntawv binary yog tsim los ntawm XNUMXs thiab XNUMXs, cov khoom siv yooj yim uas tuaj yeem xa cov ntaub ntawv ntawm txhua yam. Koj lub computer feem ntau txheeb xyuas seb yuav txhais li cas los ntawm kev siv cov lus qhia xws li cov ntaub ntawv txuas ntxiv. Tam sim no peb yuam kom nws txhais lawv raws li cov ntawv nyeem, vim hais tias qhov ntawd yog qhov uas cov ntawv nyeem xav tau.

Txhawm rau kom nkag siab yuav ua li cas txiav txim siab JPEG, peb yuav tsum pom cov cim tseem ceeb ntawm lawv tus kheej - cov ntaub ntawv binary. Qhov no tuaj yeem ua tiav siv tus lej hexadecimal editor, lossis ncaj qha rau thawj nplooj ntawv web! Muaj ib daim duab, ib sab ntawm cov ntawv nyeem yog tag nrho nws cov bytes (tshwj tsis yog lub header), nthuav tawm hauv daim ntawv zauv. Koj tuaj yeem hloov lawv, thiab tsab ntawv yuav rov encode thiab tsim cov duab tshiab ntawm ya.

Yuav ua li cas hom JPEG ua haujlwm

Koj tuaj yeem kawm ntau yam los ntawm kev ua si nrog tus editor no. Piv txwv li, koj puas tuaj yeem qhia qhov kev txiav txim ntawm pixels khaws cia hauv?

Qhov txawv ntawm qhov piv txwv no yog tias kev hloov qee tus lej tsis cuam tshuam rau daim duab, tab sis, piv txwv li, yog tias koj hloov tus lej 17 nrog 0 hauv thawj kab, daim duab yuav puas tag!

Yuav ua li cas hom JPEG ua haujlwm

Lwm yam kev hloov pauv, xws li hloov 7 ntawm kab 1988 nrog tus lej 254, hloov xim, tab sis tsuas yog tom qab pixels.

Yuav ua li cas hom JPEG ua haujlwm

Tej zaum qhov txawv tshaj plaws yog tias qee tus lej hloov tsis tau tsuas yog xim, tab sis kuj zoo li cov duab. Hloov 70 hauv kab 12 mus rau 2 thiab saib cov kab saum toj kawg nkaus ntawm daim duab kom pom tias kuv txhais li cas.

Yuav ua li cas hom JPEG ua haujlwm

Thiab tsis muaj teeb meem dab tsi JPEG duab koj siv, koj yuav ib txwm pom cov qauv chess tsis meej thaum kho cov bytes.

Thaum ua si nrog tus editor, nws tsis yooj yim to taub yuav ua li cas ib daim duab yog recreated los ntawm cov bytes, vim JPEG compression muaj peb yam technologies, siv sequentially nyob rau theem. Peb mam li kawm txhua tus sib cais los nthuav qhia tus cwj pwm tsis meej peb pom.

Peb theem ntawm JPEG compression:

  1. Xim subsampling.
  2. Discrete cosine transform thiab sampling.
  3. Khiav ntev encoding, raws qab ΠΈ Huffman

Txhawm rau muab koj lub tswv yim ntawm qhov loj ntawm qhov compression, nco ntsoov tias daim duab saum toj no sawv cev rau 79 tus lej, lossis txog 819 KB. Yog tias peb khaws nws yam tsis muaj compression, txhua pixel yuav xav tau peb tus lej - rau cov xim liab, ntsuab thiab xiav. Qhov no yuav suav rau 79 tus lej, lossis kwv yees li. 917k wb. Raws li qhov tshwm sim ntawm JPEG compression, cov ntaub ntawv kawg raug txo los ntawm ntau dua 700 zaug!

Qhov tseeb, cov duab no tuaj yeem compressed ntau dua. Hauv qab no yog ob daim duab ib sab - daim duab ntawm sab xis tau raug compressed rau 16 KB, uas yog, 57 lub sij hawm me dua li cov ntawv tsis sib haum!

Yuav ua li cas hom JPEG ua haujlwm

Yog tias koj saib ze, koj yuav pom tias cov duab no tsis zoo ib yam. Ob leeg yog cov duab nrog JPEG compression, tab sis txoj cai yog ntau me me hauv ntim. Nws kuj zoo li me ntsis zuj zus (saib cov xim xim tom qab). Yog vim li cas JPEG tseem hu ua lossy compression; Thaum lub sij hawm compression txheej txheem, cov duab hloov thiab poob ib co ntsiab lus.

1. Xim subsampling

Ntawm no yog ib daim duab uas tsuas yog thawj theem ntawm compression thov.

Yuav ua li cas hom JPEG ua haujlwm
(Kev sib tham sib version - hauv thawj cov khoom). Tshem ib tus lej rhuav tshem tag nrho cov xim. Txawm li cas los xij, yog tias muaj rau tus lej raug tshem tawm, nws yuav tsis cuam tshuam rau daim duab.

Tam sim no cov lej tau yooj yim me ntsis los txiav txim siab. Qhov no yog yuav luag ib daim ntawv teev cov xim yooj yim, nyob rau hauv uas txhua byte hloov raws nraim ib pixel, tab sis nyob rau tib lub sij hawm nws twb yog ib nrab ntawm qhov loj ntawm cov duab uncompressed (uas yuav siv li 300 KB nyob rau hauv no txo ​​qhov luaj li cas). Koj puas tuaj yeem twv yog vim li cas?

Koj tuaj yeem pom tias cov lej no tsis sawv cev rau cov qauv liab, ntsuab, thiab xiav, vim yog tias peb hloov tag nrho cov lej nrog xoom, peb yuav tau txais cov duab ntsuab (tsis yog dawb).

Yuav ua li cas hom JPEG ua haujlwm

Qhov no yog vim cov bytes sawv rau Y (brightness),

Yuav ua li cas hom JPEG ua haujlwm

Cb (kwv yees blueness),

Yuav ua li cas hom JPEG ua haujlwm

thiab Cr ( txheeb ze redness) duab.

Yuav ua li cas hom JPEG ua haujlwm

Vim li cas ho tsis siv RGB? Tom qab tag nrho, qhov no yog li cas cov ntxaij vab tshaus niaj hnub ua haujlwm. Koj lub monitor tuaj yeem tso saib cov xim, suav nrog liab, ntsuab thiab xiav, nrog rau qhov sib txawv rau txhua pixel. Dawb yog tau los ntawm tig tag nrho peb ntawm tag nrho cov ci, thiab dub los ntawm kev xa lawv tawm.

Yuav ua li cas hom JPEG ua haujlwm

Qhov no kuj zoo ib yam li tib neeg lub qhov muag ua haujlwm li cas. Cov xim receptors hauv peb lub qhov muag hu ua "cones", thiab muab faib ua peb hom, txhua yam uas muaj kev nkag siab ntau dua rau cov xim liab, ntsuab, lossis xiav [S-hom cones yog rhiab hauv violet-xiav (S los ntawm Lus Askiv Short - short-wave spectrum), M -type - nyob rau hauv ntsuab-daj (M los ntawm lus Askiv nruab nrab - nruab nrab-yoj), thiab L-hom - nyob rau hauv lub daj-liab (L los ntawm lub English Ntev - ntev-yoj) qhov chaw ntawm lub spectrum. Lub xub ntiag ntawm peb hom cones (thiab rods, uas yog rhiab nyob rau hauv lub emerald ntsuab ib feem ntawm lub spectrum) muab ib tug neeg xim tsis pom kev. / kwv yees. lus.]. Cov pob zeb, lwm hom photoreceptor nyob rau hauv peb ob lub qhov muag, muaj peev xwm ntawm kev soj ntsuam kev hloov nyob rau hauv brightness, tab sis yog rhiab heev rau xim. Peb lub qhov muag muaj txog 120 lab tus pas nrig thiab tsuas yog 6 lab lub khob.

Qhov no yog vim li cas peb ob lub qhov muag zoo dua ntawm kev kuaj pom kev hloov hauv qhov ci dua li cov xim hloov. Yog tias koj cais cov xim ntawm qhov ci, koj tuaj yeem tshem tawm xim me ntsis thiab tsis muaj leej twg yuav pom dab tsi. Chroma subsampling yog txheej txheem los sawv cev cov xim ntawm cov duab ntawm qhov kev daws teeb meem qis dua li cov khoom siv luminance. Hauv qhov piv txwv saum toj no, txhua pixel muaj ib qho Y tivthaiv, thiab txhua pawg ntawm plaub pixels muaj ib qho Cb thiab ib qho Cr tivthaiv. Yog li ntawd, daim duab muaj plaub zaug cov ntaub ntawv xim tsawg dua li qhov qub.

YCbCr xim qhov chaw siv tsis yog hauv JPEG nkaus xwb. Nws yog Ameslikas tsim nyob rau hauv 1938 rau TV programs. Tsis yog txhua tus muaj lub TV xim, yog li kev sib cais xim thiab qhov ci ci tso cai rau txhua tus kom tau txais tib lub teeb liab, thiab TVs tsis muaj xim tsuas yog siv qhov ci ci xwb.

Yog li tshem tawm ib tus lej los ntawm tus editor ua kom puas tag nrho cov xim. Cov khoom raug khaws cia rau hauv daim ntawv YYYY Cb Cr (qhov tseeb, tsis tas yuav tsum nyob rau hauv qhov kev txiav txim - qhov kev txiav txim cia yog teev nyob rau hauv cov ntaub ntawv header). Tshem tawm thawj tus lej yuav ua rau thawj tus nqi ntawm Cb pom tau tias yog Y, Cr raws li Cb, thiab feem ntau koj yuav muaj cov nyhuv domino uas hloov tag nrho cov xim ntawm daim duab.

JPEG specification tsis yuam kom koj siv YCbCr. Tab sis feem ntau cov ntaub ntawv siv nws vim nws tsim cov duab downsampled zoo dua li RGB. Tab sis koj tsis tas yuav coj kuv cov lus rau nws. Saib rau koj tus kheej hauv cov lus hauv qab no seb qhov piv txwv ntawm txhua tus neeg yuav zoo li cas hauv RGB thiab YCbCr.

Yuav ua li cas hom JPEG ua haujlwm
(Kev sib tham sib version - hauv thawj cov khoom).

Kev tshem tawm ntawm xiav tsis pom zoo li cov xim liab lossis ntsuab. Qhov ntawd yog vim muaj rau lab cones hauv koj ob lub qhov muag, txog 64% rhiab rau liab, 32% rau ntsuab thiab 2% rau xiav.

Lub downsampling ntawm Y tivthaiv (hauv qab sab laug) yog qhov zoo tshaj plaws pom. Txawm tias ib qho kev hloov me me tseem ceeb.

Hloov cov duab los ntawm RGB rau YCbCr tsis txo cov ntaub ntawv loj, tab sis nws ua rau nws yooj yim dua kom pom cov ntsiab lus pom tsawg uas tuaj yeem raug tshem tawm. Lossy compression tshwm sim nyob rau theem ob. Nws yog raws li lub tswv yim ntawm kev nthuav qhia cov ntaub ntawv nyob rau hauv ib tug ntau compressible daim ntawv.

2. Discrete cosine transform thiab sampling

Cov qib ntawm compression no yog, rau feem ntau, dab tsi JPEG yog txhua yam hais txog. Tom qab hloov cov xim rau YCbCr, cov khoom sib xyaw yog compressed ib tus zuj zus, yog li peb tuaj yeem mloog zoo rau ntawm Y tivthaiv xwb.

Yuav ua li cas hom JPEG ua haujlwm
(Kev sib tham sib version - hauv thawj cov khoom). Hauv kev sib tham sib version, nyem rau ntawm lub pixel scrolls tus editor mus rau kab uas sawv cev rau nws. Sim tshem cov lej ntawm qhov kawg lossis ntxiv ob peb xoom rau qee tus lej.

Thaum xub thawj siab ib muag, nws zoo li phem heev compression. Muaj 100 pixels hauv ib daim duab, thiab nws yuav siv 000 tus lej los sawv cev lawv qhov ci ntsa iab (Y-cov khoom siv) - qhov ntawd phem tshaj qhov tsis muaj dab tsi hlo li!

Txawm li cas los xij, nco ntsoov tias feem ntau ntawm cov lej no yog xoom. Ntxiv mus, tag nrho cov xoom kawg ntawm kab tuaj yeem raug tshem tawm yam tsis hloov daim duab. Muaj txog 26 tus lej tshuav, thiab qhov no yuav luag 000 npaug!

Qib no muaj qhov zais cia ntawm chess qauv. Tsis zoo li lwm yam teebmeem uas peb tau pom, qhov tsos ntawm cov qauv no tsis yog qhov tsis zoo. Lawv yog cov tsev blocks ntawm tag nrho cov duab. Txhua kab ntawm tus editor muaj raws nraim 64 tus lej, discrete cosine transform (DCT) coefficients sib xws rau qhov siv ntawm 64 tus qauv tshwj xeeb.

Cov qauv no yog tsim los ntawm cov txheej txheem cosine. Nov yog qee qhov ntawm lawv zoo li:

Yuav ua li cas hom JPEG ua haujlwm
8 ntawm 64

Hauv qab no yog ib daim duab uas qhia tag nrho 64 tus qauv.

Yuav ua li cas hom JPEG ua haujlwm
(Kev sib tham sib version - hauv thawj cov khoom).

Cov qauv no tseem ceeb tshwj xeeb vim lawv tsim lub hauv paus ntawm 8x8 cov duab. Yog tias koj tsis paub txog cov kab zauv ntawm kab zauv, qhov no txhais tau tias ib qho duab 8x8 tuaj yeem ua los ntawm cov qauv 64 no. DCT yog cov txheej txheem ntawm kev faib cov duab rau hauv 8x8 blocks thiab hloov txhua lub block rau hauv kev sib xyaw ntawm cov 64 coefficients.

Nws zoo li khawv koob uas ib qho duab tuaj yeem tsim los ntawm 64 tus qauv tshwj xeeb. Txawm li cas los xij, qhov no yog tib yam li hais tias txhua qhov chaw hauv ntiaj teb tuaj yeem piav qhia los ntawm ob tus lej - latitude thiab longitude [qhia txog hemispheres / approx. lus.]. Peb feem ntau xav txog lub ntiaj teb saum npoo yog ob sab, yog li peb tsuas xav tau ob tus lej xwb. Ib daim duab 8x8 muaj 64 qhov ntev, yog li peb xav tau 64 tus lej.

Nws tseem tsis tau paub meej tias qhov no yuav pab tau peb li cas ntawm compression. Yog tias peb xav tau 64 tus lej los sawv cev rau daim duab 8x8, vim li cas qhov no yuav zoo dua li khaws cia 64 qhov ci ci? Peb ua qhov no rau tib qho laj thawj peb muab peb tus lej RGB rau peb tus lej YCbCr: nws tso cai rau peb tshem tawm cov ntsiab lus tsis meej.

Nws yog qhov nyuaj kom pom tseeb tias qhov kev nthuav dav raug tshem tawm ntawm theem no vim tias JPEG siv DCT rau 8x8 blocks. Txawm li cas los xij, tsis muaj leej twg txwv tsis pub peb siv nws rau tag nrho cov duab. Nov yog qhov DCT zoo li rau Y tivthaiv siv rau tag nrho daim duab:

Yuav ua li cas hom JPEG ua haujlwm

Ntau tshaj 60 tus lej tuaj yeem raug tshem tawm los ntawm qhov kawg uas tsis muaj kev hloov pauv rau daim duab.

Yuav ua li cas hom JPEG ua haujlwm

Txawm li cas los xij, nco ntsoov tias yog peb xoom tawm thawj tsib tus lej, qhov sib txawv yuav pom tseeb.

Yuav ua li cas hom JPEG ua haujlwm

Cov naj npawb ntawm qhov pib sawv cev qis zaus hloov pauv hauv daim duab, uas peb ob lub qhov muag khaws tau zoo tshaj plaws. Cov lej ntawm qhov kawg qhia txog kev hloov pauv ntawm cov zaus siab uas nyuaj rau pom. Txhawm rau "pom qhov muag tsis pom," peb tuaj yeem cais cov ntsiab lus siab zaus los ntawm kev xoom tawm thawj 5000 tus lej.

Yuav ua li cas hom JPEG ua haujlwm

Peb pom txhua qhov chaw ntawm daim duab uas qhov kev hloov loj tshaj plaws tshwm sim los ntawm pixel rau pixel. Tus miv lub qhov muag, nws lub ntsej muag, daim pam terry thiab cov duab ntxoov ntxoo nyob rau sab laug sab laug sawv tawm. Koj tuaj yeem mus ntxiv los ntawm zeroing tawm thawj 10 tus lej:

Yuav ua li cas hom JPEG ua haujlwm

Xyoo 20 000:

Yuav ua li cas hom JPEG ua haujlwm

Xyoo 40 000:

Yuav ua li cas hom JPEG ua haujlwm

Xyoo 60 000:

Yuav ua li cas hom JPEG ua haujlwm

Cov ntsiab lus siab zaus no raug tshem tawm los ntawm JPEG thaum lub sijhawm compression. Tsis muaj qhov poob hauv kev hloov xim rau DCT coefficients. Kev poob tshwm sim ntawm cov kauj ruam sampling, qhov twg high-frequency los yog zero qhov tseem ceeb raug tshem tawm. Thaum koj txo qis JPEG txuag zoo, qhov kev pab cuam nce qhov pib rau tus naj npawb ntawm cov txiaj ntsig tshem tawm, uas txo cov ntaub ntawv loj, tab sis ua rau daim duab ntau pixelated. Tias yog vim li cas cov duab hauv thawj ntu, uas yog 57 npaug me dua, zoo li qhov no. Txhua 8x8 block tau sawv cev los ntawm qhov tsawg dua DCT coefficients piv rau cov qauv zoo dua.

Koj tuaj yeem tsim cov nyhuv txias li maj mam streaming ntawm cov duab. Koj tuaj yeem tso saib cov duab tsis pom tseeb uas dhau los ua ntau dua thiab nthuav dav dua li ntau thiab ntau coefficients raug rub tawm.

Ntawm no, tsuas yog kev lom zem, yog qhov koj tau siv xwb 24 tus lej:

Yuav ua li cas hom JPEG ua haujlwm

Los yog tsuas yog 5000:

Yuav ua li cas hom JPEG ua haujlwm

Qhov muag plooj heev, tab sis qee qhov pom tau!

3. Khiav ntev encoding, delta thiab Huffman

Txog tam sim no, txhua theem ntawm compression tau lossy. Cov theem kawg, ntawm qhov tsis sib xws, ua tiav yam tsis muaj kev poob. Nws tsis rho tawm cov ntaub ntawv, tab sis nws ho txo ​​cov ntaub ntawv loj.

Yuav ua li cas koj yuav compress ib yam dab tsi tsis pov tseg cov ntaub ntawv? Xav txog yuav ua li cas peb yuav piav qhia txog cov duab plaub dub yooj yim 700 x 437.

JPEG siv 5000 tus lej rau qhov no, tab sis cov txiaj ntsig zoo dua tuaj yeem ua tiav. Koj puas tuaj yeem xav txog cov txheej txheem encoding uas yuav piav txog cov duab zoo li no hauv ob peb bytes li sai tau?

Lub tswv yim me me uas kuv tuaj yeem tuaj nrog siv plaub: peb los sawv cev xim, thiab plaub los qhia tias pes tsawg pixels xim muaj. Lub tswv yim ntawm kev sawv cev rov ua qhov tseem ceeb hauv txoj kev condensed no hu ua run-length encoding. Nws yog lossless vim peb tuaj yeem rov qab tau cov ntaub ntawv encoded rau nws daim ntawv qub.

Ib cov ntaub ntawv JPEG nrog lub duab plaub dub loj dua 4 bytes - nco ntsoov tias ntawm qib DCT, compression yog siv rau 8x8 pixel blocks. Yog li ntawd, tsawg kawg, peb xav tau ib qho DCT coefficient rau txhua 64 pixels. Peb xav tau ib qho vim tias tsis txhob khaws ib qho DCT coefficient ua raws li 63 zeros, khiav qhov ntev encoding tso cai rau peb khaws ib tus lej thiab qhia tias "tag nrho lwm tus yog xoom."

Delta encoding yog txheej txheem uas txhua byte muaj qhov sib txawv ntawm qee tus nqi, tsis yog tus nqi kiag li. Yog li ntawd, kho tej bytes hloov xim ntawm tag nrho lwm cov pixels. Piv txwv li, tsis txhob khaws cia

12 13 14 14 14 13 13 14

Peb tuaj yeem pib nrog 12 thiab tom qab ntawd tsuas yog qhia ntau npaum li cas peb xav tau ntxiv lossis rho tawm kom tau tus lej tom ntej. Thiab cov kab ke no hauv delta coding siv daim ntawv:

12 1 1 0 0 -1 0 1

Cov ntaub ntawv hloov dua siab tshiab tsis yog me dua li cov ntaub ntawv qub, tab sis nws yooj yim rau compress nws. Kev siv delta encoding ua ntej khiav ntev encoding tuaj yeem pab tau ntau heev thaum tseem tsis muaj compression.

Delta coding yog ib qho ntawm ob peb txoj kev siv sab nraud ntawm 8x8 blocks. Ntawm 64 DCT coefficients, ib qho tsuas yog qhov ua haujlwm tsis tu ncua (xim xim). Nws sawv cev qhov nruab nrab ci ntsa iab ntawm txhua qhov thaiv rau luma Cheebtsam, lossis qhov nruab nrab blueness rau Cb Cheebtsam, thiab lwm yam. Thawj tus nqi ntawm txhua qhov DCT block yog hu ua tus nqi DC, thiab txhua tus nqi DC yog delta encoded nrog kev hwm rau yav dhau los. Yog li ntawd, hloov qhov ci ntsa iab ntawm thawj block yuav cuam tshuam rau tag nrho cov blocks.

Qhov kev paub tsis meej zaum kawg tseem nyob: yuav ua li cas hloov cov lus ua kom tag nrho cov duab? Txog tam sim no, qib compression tsis tau muaj cov khoom zoo li no. Cov lus teb yog nyob rau hauv JPEG header. Thawj 500 bytes muaj cov metadata txog cov duab - dav, qhov siab, thiab lwm yam, thiab peb tseem tsis tau ua haujlwm nrog lawv.

Yog tsis muaj header nws yuav luag tsis yooj yim sua (los yog nyuaj heev) los txiav txim siab JPEG. Nws yuav zoo li yog tias kuv tab tom sim piav qhia daim duab rau koj, thiab kuv tab tom pib tsim cov lus kom qhia kuv qhov kev xav. Cov lus piav qhia tej zaum yuav yog condensed heev, txij li kuv tuaj yeem tsim cov lus nrog lub ntsiab lus kuv xav qhia, tab sis rau txhua tus neeg lawv yuav tsis muaj txiaj ntsig.

Nws suab ruam, tab sis qhov ntawd yog qhov tshwm sim. Txhua daim duab JPEG yog compressed nrog cov lej tshwj xeeb rau nws. Lub code phau ntawv txhais lus yog khaws cia rau hauv header. Cov txheej txheem no hu ua Huffman code thiab cov lus hu ua Huffman table. Nyob rau hauv header, lub rooj yog cim nrog ob bytes - 255 thiab tom qab ntawd 196. Txhua qhov xim muaj peev xwm muaj nws lub rooj.

Hloov cov ntxhuav yuav cuam tshuam rau txhua daim duab. Ib qho piv txwv zoo yog hloov kab 15 mus rau 1.

Yuav ua li cas hom JPEG ua haujlwm

Qhov no tshwm sim vim hais tias cov ntxhuav qhia seb tus neeg yuav tsum tau nyeem li cas. Txog tam sim no peb tsuas yog ua haujlwm nrog tus lej binary hauv daim ntawv lej. Tab sis qhov no zais ntawm peb qhov tseeb tias yog tias koj xav khaws tus lej 1 hauv ib byte, nws yuav zoo li 00000001, txij li txhua byte yuav tsum muaj yim me ntsis, txawm tias tsuas yog ib qho ntawm lawv xav tau.

Qhov no tuaj yeem yog qhov chaw pov tseg loj yog tias koj muaj ntau tus lej me. Huffman code yog cov txheej txheem uas tso cai rau peb los so qhov kev xav tau no uas txhua tus lej yuav tsum tuav yim yam khoom. Qhov no txhais tau tias yog koj pom ob bytes:

234 115

Tom qab ntawd, nyob ntawm Huffman lub rooj, cov no tuaj yeem yog peb tus lej. Txhawm rau rho tawm lawv, koj yuav tsum xub rhuav lawv mus rau hauv tus kheej cov khoom:

11101010 01110011

Tom qab ntawd peb saib ntawm lub rooj kom paub seb yuav pab pawg li cas. Piv txwv li, qhov no tuaj yeem yog thawj 111010 cov khoom, (58), lossis 10011 hauv lej, ua raws li tsib qhov (19), lossis 0011, thiab thaum kawg plaub qhov kawg (3), lossis XNUMX.

Yog li ntawd, nws yog qhov nyuaj heev kom nkag siab txog cov bytes ntawm theem ntawm compression. Bytes tsis sawv cev qhov lawv zoo li. Kuv yuav tsis mus rau hauv cov ntsiab lus ntawm kev ua hauj lwm nrog lub rooj nyob rau hauv no tsab xov xwm, tab sis cov ntaub ntawv ntawm qhov teeb meem no online yog txaus.

Ib qho kev ua kom zoo nkauj uas koj tuaj yeem ua nrog qhov kev paub no yog cais cov header los ntawm JPEG thiab khaws nws cais. Qhov tseeb, nws hloov tawm tias tsuas yog koj tuaj yeem nyeem cov ntaub ntawv. Facebook ua qhov no los ua cov ntaub ntawv me dua.

Dab tsi ntxiv tuaj yeem ua tau yog hloov lub rooj Huffman me ntsis. Rau lwm tus nws yuav zoo li daim duab tawg. Thiab tsuas yog koj yuav paub txog txoj kev ua khawv koob kho nws.

Cia peb xaus: yog li dab tsi yuav tsum tau txiav txim siab JPEG? Tsim nyog:

  1. Tshem tawm Huffman cov lus los ntawm header thiab txiav txim siab cov khoom.
  2. Extract tus discrete cosine transform coefficients rau txhua xim thiab luminance tivthaiv rau txhua 8x8 block, ua inverse run-ntev thiab delta encoding transforms.
  3. Muab cov cosines raws li cov coefficients kom tau txais pixel qhov tseem ceeb rau txhua qhov 8x8 block.
  4. Scale xim Cheebtsam yog subsampling tau ua (cov ntaub ntawv no yog nyob rau hauv header).
  5. Hloov cov txiaj ntsig YCbCr rau txhua pixel rau RGB.
  6. Tso cov duab ntawm qhov screen!

Ua haujlwm hnyav rau tsuas yog saib daim duab nrog miv! Txawm li cas los xij, qhov kuv nyiam txog nws yog qhov nws qhia tias tib neeg-centric JPEG thev naus laus zis zoo li cas. Nws yog raws li lub peculiarities ntawm peb kev xaav, tso cai rau peb mus cuag tau zoo compression ntau npaum li cov pa technologies. Thiab tam sim no peb nkag siab tias JPEG ua haujlwm li cas, peb tuaj yeem xav txog tias cov thev naus laus zis no tuaj yeem hloov mus rau lwm qhov chaw. Piv txwv li, delta encoding hauv video tuaj yeem muab qhov txo qis hauv cov ntaub ntawv loj, vim tias feem ntau muaj tag nrho cov cheeb tsam uas tsis hloov ntawm ncej mus rau ncej (piv txwv li, keeb kwm yav dhau).

Code siv nyob rau hauv tsab xov xwm, qhib, thiab muaj cov lus qhia yuav ua li cas hloov cov duab nrog koj tus kheej.

Tau qhov twg los: www.hab.com

Ntxiv ib saib