Giunsa ang JPEG format molihok

Ang mga imahe sa JPEG kay ubiquitous sa atong mga digital nga kinabuhi, apan luyo niini nga veneer sa kahibalo mao ang mga algorithm nga nagtangtang sa mga detalye nga dili makita sa mata sa tawo. Ang resulta mao ang pinakataas nga kalidad sa biswal sa pinakagamay nga gidak-on sa file - apan sa unsa nga paagi kini tanan nagtrabaho? Tan-awon nato kung unsa gyud ang dili makita sa atong mga mata!

Giunsa ang JPEG format molihok

Sayon nga ibaliwala ang abilidad nga magpadala usa ka litrato sa usa ka higala ug dili mabalaka kung unsang aparato, browser o operating system ang ilang gigamit - apan dili kana kanunay ang nahitabo. Sa sayong bahin sa 1980s, ang mga kompyuter makatipig ug makapakita sa digital nga mga hulagway, apan adunay daghan nga mga ideya sa kompetisyon mahitungod sa pinakamaayong paagi sa pagbuhat niini. Dili lang nimo ipadala ang usa ka imahe gikan sa usa ka computer ngadto sa lain ug maglaum nga kini molihok.

Aron masulbad kini nga problema, usa ka komite sa mga eksperto gikan sa tibuok kalibutan ang gitigom niadtong 1986 nga gitawag ug "Joint Group of Photography Experts» (Joint Photographic Experts Group, JPEG), gitukod isip hiniusang paningkamot tali sa International Organization for Standardization (ISO) ug sa International Electrotechnical Commission (IEC), duha ka internasyonal nga mga organisasyon sa sumbanan nga nahimutang sa Geneva, Switzerland.

Usa ka grupo sa mga tawo nga gitawag og JPEG ang nagmugna sa JPEG digital image compression standard niadtong 1992. Bisan kinsa nga migamit sa Internet lagmit nakasugat og JPEG nga naka-encode nga mga hulagway. Kini ang labing kasagaran nga paagi sa pag-encode, pagpadala ug pagtipig sa mga imahe. Gikan sa mga web page hangtod sa email hangtod sa social media, ang JPEG gigamit binilyon ka beses sa usa ka adlaw—halos sa matag higayon nga magtan-aw kami og imahe online o ipadala kini. Kung wala ang JPEG, ang web mahimong dili kaayo kolor, hinay, ug lagmit adunay gamay nga litrato sa iring!

Kini nga artikulo bahin sa kung giunsa ang pag-decode sa usa ka imahe nga JPEG. Sa laing pagkasulti, unsa ang gikinahanglan aron ma-convert ang compressed data nga gitipigan sa usa ka computer ngadto sa usa ka imahe nga makita sa screen. Kini angay nga mahibal-an, dili lamang tungod kay importante nga masabtan ang teknolohiya nga atong gigamit kada adlaw, apan tungod usab kay pinaagi sa pag-abli sa lebel sa compression, mas makat-on kita mahitungod sa panglantaw ug panan-awon, ug unsa nga mga detalye ang labing sensitibo sa atong mga mata.

Dugang pa, ang pagdula sa mga imahe niining paagiha makapainteres kaayo.

Giunsa ang JPEG format molihok

Nagtan-aw sa sulod sa JPEG

Sa usa ka kompyuter, ang tanan gitipigan isip usa ka han-ay sa binary nga mga numero. Kasagaran kini nga mga tipik, mga sero ug usa, gi-grupo sa mga grupo nga walo aron mahimong mga byte. Kung magbukas ka og JPEG nga imahe sa usa ka kompyuter, usa ka butang (usa ka browser, usa ka operating system, uban pa) kinahanglan nga mag-decode sa mga byte, ibalik ang orihinal nga imahe ingon usa ka lista sa mga kolor nga mahimong ipakita.

Kung gi-download nimo kini nga tam-is litrato sa usa ka iring ug ablihi kini sa usa ka text editor, imong makita ang usa ka hugpong sa mga dili managsama nga mga karakter.

Giunsa ang JPEG format molihok
Dinhi gigamit nako ang Notepad++ aron susihon ang mga sulud sa file, tungod kay ang mga regular nga editor sa teksto sama sa Notepad sa Windows makadaut sa binary file pagkahuman sa pagtipig ug dili na kini makatagbaw sa format nga JPEG.

Ang pag-abli sa usa ka imahe sa usa ka word processor makapalibog sa kompyuter, sama sa imong paglibog sa imong utok kung imong gikuskos ang imong mga mata ug nagsugod sa pagtan-aw sa mga bulok nga kolor!

Kini nga mga spots nga imong nakita nailhan nga mga phosphene, ug dili resulta sa gaan nga stimulus o hallucination nga namugna sa hunahuna. Kini mahitabo tungod kay ang imong utok naghunahuna nga ang bisan unsang electrical signal sa optic nerves naghatag ug impormasyon bahin sa kahayag. Ang utok kinahanglan nga maghimo niini nga mga pangagpas tungod kay walay paagi nga mahibal-an kung ang usa ka signal usa ka tingog, usa ka panan-awon, o uban pa. Ang tanan nga mga nerbiyos sa lawas nagpadala sa parehas nga mga impulses sa kuryente. Pinaagi sa pagpamugos sa imong mga mata, nagpadala ka og mga signal nga dili makita, apan gi-aktibo ang mga receptor sa mata, nga gihubad sa imong utok - sa kini nga kaso, dili husto - ingon usa ka butang nga makita. Literal nga makita nimo ang pressure!

Kataw-anan nga hunahunaon kung unsa ang pagkaparehas sa mga kompyuter sa utok, apan usa usab kini ka mapuslanon nga analohiya sa pag-ilustrar kung unsa ka dako ang kahulogan sa datos—madala man sa lawas pinaagi sa mga nerves o gitipigan sa usa ka computer—nagdepende kon giunsa kini paghubad. Ang tanan nga binary data gilangkuban sa XNUMXs ug XNUMXs, ang sukaranan nga mga sangkap nga makahatag kasayuran sa bisan unsang klase. Ang imong kompyuter kanunay nga nahibal-an kung giunsa kini paghubad pinaagi sa paggamit sa mga timailhan sama sa mga extension sa file. Karon gipugos namo kini nga hubaron sila ingon nga teksto, tungod kay kana ang gipaabut sa editor sa teksto.

Aron masabtan kung unsaon pag-decode ang JPEG, kinahanglan natong makita ang orihinal nga mga signal mismo - ang binary data. Mahimo kini gamit ang usa ka hexadecimal editor, o direkta sa orihinal nga artikulo sa web page! Adunay usa ka imahe, sunod diin sa natad sa teksto ang tanan nga mga byte (gawas sa header), gipresentar sa porma nga desimal. Mahimo nimong usbon kini, ug ang script mag-encode pag-usab ug maghimo usa ka bag-ong imahe sa kadali.

Giunsa ang JPEG format molihok

Daghan ka makakat-on pinaagi lang sa pagdula niini nga editor. Pananglitan, mahibal-an ba nimo kung unsang pagkasunud ang gitipigan sa mga pixel?

Ang katingad-an nga butang bahin sa kini nga pananglitan mao nga ang pagbag-o sa pipila nga mga numero dili makaapekto sa imahe, apan, pananglitan, kung imong ilisan ang numero 17 sa 0 sa una nga linya, ang litrato hingpit nga maguba!

Giunsa ang JPEG format molihok

Ang ubang mga pagbag-o, sama sa pag-ilis sa 7 sa linya sa 1988 sa numero nga 254, nagbag-o sa kolor, apan sa sunod nga mga pixel lamang.

Giunsa ang JPEG format molihok

Tingali ang labing katingad-an nga butang mao nga ang pipila ka mga numero nagbag-o dili lamang sa kolor, apan usab sa porma sa imahe. Usba ang 70 sa linya 12 ngadto sa 2 ug tan-awa ang ibabaw nga laray sa hulagway aron makita ang akong gipasabot.

Giunsa ang JPEG format molihok

Ug bisan unsa nga JPEG nga imahe ang imong gigamit, kanunay nimo makit-an kining misteryosong mga pattern sa chess kung mag-edit sa mga byte.

Kung nagdula uban sa editor, lisud sabton kung giunsa ang usa ka litrato gimugna pag-usab gikan sa kini nga mga byte, tungod kay ang JPEG compression naglangkob sa tulo nga lainlaing mga teknolohiya, nga gigamit nga sunud-sunod sa lebel. Atong tun-an ang matag usa nga gilain aron mahibal-an ang misteryosong pamatasan nga atong nakita.

Tulo ka lebel sa JPEG compression:

  1. Kolor nga subsampling.
  2. Discrete cosine transform ug sampling.
  3. Pag-encode sa gitas-on sa pagdagan, delta и Huffman

Aron mahatagan ka ug ideya sa kadako sa compression, timan-i nga ang hulagway sa ibabaw nagrepresentar sa 79 ka numero, o mga 819 KB. Kung gitipigan namo kini nga walay compression, ang matag pixel magkinahanglan og tulo ka numero - alang sa pula, berde ug asul nga mga sangkap. Kini mokabat sa 79 ka numero, o gibanabana. 917 KB. Ingon usa ka sangputanan sa pag-compress sa JPEG, ang katapusan nga file nakunhuran sa sobra sa 700 ka beses!

Sa tinuud, kini nga imahe mahimong ma-compress labi pa. Sa ubos mao ang duha ka mga hulagway sa kilid - ang litrato sa tuo na-compress ngadto sa 16 KB, nga mao, 57 ka beses nga mas gamay kay sa wala ma-compress nga bersyon!

Giunsa ang JPEG format molihok

Kung tan-awon nimo pag-ayo, imong makita nga kini nga mga imahe dili parehas. Ang duha mga imahe nga adunay JPEG compression, apan ang husto nga usa mas gamay sa volume. Medyo mas grabe usab ang hitsura niini (tan-awa ang mga kwadro nga kolor sa background). Mao nga ang JPEG gitawag usab nga lossy compression; Atol sa proseso sa compression, ang imahe mausab ug mawad-an sa pipila ka mga detalye.

1. Kolor nga subsampling

Ania ang usa ka imahe nga adunay una nga lebel sa compression nga gipadapat.

Giunsa ang JPEG format molihok
(Interactive nga bersyon - sa orihinal mga artikulo). Ang pagtangtang sa usa ka numero makaguba sa tanang kolor. Apan, kon eksaktong unom ka numero ang tangtangon, kini halos walay epekto sa hulagway.

Karon ang mga numero mas sayon ​​​​nga masabtan. Kini hapit usa ka yano nga lista sa mga kolor, diin ang matag byte nagbag-o sa eksakto nga usa ka pixel, apan sa samang higayon kini katunga na sa gidak-on sa wala ma-compress nga imahe (nga mokabat sa mga 300 KB sa kini nga pagkunhod sa gidak-on). Makatag-an ka kung ngano?

Imong makita nga kini nga mga numero wala magrepresentar sa standard nga pula, berde, ug asul nga mga sangkap, tungod kay kon atong ilisan ang tanang mga numero sa mga sero, makakuha kita og berdeng hulagway (imbes puti).

Giunsa ang JPEG format molihok

Kini tungod kay kini nga mga byte nagbarug alang sa Y (kahayag),

Giunsa ang JPEG format molihok

Cb (relative blueness),

Giunsa ang JPEG format molihok

ug Cr (relative redness) nga mga hulagway.

Giunsa ang JPEG format molihok

Nganong dili gamiton ang RGB? Human sa tanan, kini ang paagi nga ang kadaghanan sa modernong mga screen nagtrabaho. Mahimong ipakita sa imong monitor ang bisan unsang kolor, lakip ang pula, berde ug asul, nga adunay lainlaing mga intensidad sa matag pixel. Makuha ang puti pinaagi sa pagpaandar sa tulo sa hingpit nga kahayag, ug itom pinaagi sa pagpalong niini.

Giunsa ang JPEG format molihok

Kini susama usab kaayo sa paagi sa paglihok sa mata sa tawo. Ang mga receptor sa kolor sa atong mga mata gitawag nga "mga kono“, ug gibahin ngadto sa tulo ka matang, nga ang matag usa mas sensitibo sa pula, berde, o asul nga mga kolor [S-type cones sensitibo sa violet-blue (S gikan sa English Short - short-wave spectrum), M -type - sa green-yellow (M gikan sa English Medium - medium-wave), ug L-type - sa yellow-red (L gikan sa English Long - long-wave) nga mga bahin sa spectrum. Ang presensya niining tulo ka matang sa mga cone (ug mga sungkod, nga sensitibo sa esmeralda nga berde nga bahin sa spectrum) naghatag sa usa ka tawo og kolor nga panan-aw. / gibanabana. transl.]. Sticks, laing matang sa photoreceptor sa atong mga mata, makahimo sa pag-ila sa mga kausaban sa kahayag, apan mas sensitibo sa kolor. Ang atong mga mata adunay mga 120 ka milyon nga mga sungkod ug 6 ka milyon lamang nga mga cone.

Mao kini ang hinungdan nga ang atong mga mata mas maayo sa pag-ila sa mga pagbag-o sa kahayag kaysa mga pagbag-o sa kolor. Kung imong ibulag ang kolor gikan sa kahayag, mahimo nimong tangtangon ang gamay nga kolor ug walay usa nga makamatikod sa bisan unsa. Ang Chroma subsampling mao ang proseso sa pagrepresentar sa mga sangkap sa kolor sa usa ka imahe sa mas ubos nga resolusyon kaysa sa mga sangkap sa luminance. Sa pananglitan sa ibabaw, ang matag pixel adunay eksaktong usa ka Y component, ug ang matag indibidwal nga grupo sa upat ka pixel adunay eksaktong usa ka Cb ug usa ka Cr component. Busa, ang hulagway adunay upat ka pilo nga mas gamay nga impormasyon sa kolor kay sa orihinal.

Ang YCbCr color space gigamit dili lang sa JPEG. Kini orihinal nga naimbento sa 1938 alang sa mga programa sa telebisyon. Dili tanan adunay kolor nga TV, mao nga ang pagbulag sa kolor ug kahayag nagtugot sa tanan nga makakuha sa parehas nga signal, ug ang mga TV nga walay kolor gigamit lamang ang bahin sa kahayag.

Mao nga ang pagtangtang sa usa ka numero gikan sa editor hingpit nga makaguba sa tanan nga mga kolor. Ang mga sangkap gitipigan sa porma nga YYYY Cb Cr (sa tinuud, dili kinahanglan sa kana nga han-ay - ang order sa pagtipig gipiho sa header sa file). Ang pagtangtang sa unang numero magpahinabo nga ang unang bili sa Cb malantaw nga Y, Cr isip Cb, ug sa kinatibuk-an aduna kay domino effect nga mobalhin sa tanang kolor sa hulagway.

Ang detalye sa JPEG wala magpugos kanimo sa paggamit sa YCbCr. Apan kadaghanan sa mga file naggamit niini tungod kay kini naghimo og mas maayo nga downsampled nga mga hulagway kay sa RGB. Apan dili nimo kinahanglan nga dawaton ang akong pulong alang niini. Tan-awa ang imong kaugalingon sa lamesa sa ubos kung unsa ang hitsura sa subsampling sa matag indibidwal nga sangkap sa RGB ug YCbCr.

Giunsa ang JPEG format molihok
(Interactive nga bersyon - sa orihinal mga artikulo).

Ang pagtangtang sa asul dili ingon ka mamatikdan sa pula o berde. Kana tungod sa unom ka milyon nga cone sa imong mga mata, mga 64% ang sensitibo sa pula, 32% sa berde ug 2% sa asul.

Ang downsampling sa Y component (sa wala sa ubos) mao ang labing maayo nga makita. Bisan ang gamay nga pagbag-o mamatikdan.

Ang pag-convert sa usa ka hulagway gikan sa RGB ngadto sa YCbCr dili makapakunhod sa gidak-on sa file, apan kini makapasayon ​​sa pagpangita sa dili kaayo makita nga mga detalye nga mahimong tangtangon. Ang pagkawala sa kompresyon mahitabo sa ikaduhang yugto. Gibase kini sa ideya sa pagpresentar sa datos sa mas compressible nga porma.

2. Discrete cosine transform ug sampling

Kini nga lebel sa compression, sa kadaghanan, kung unsa ang JPEG. Human sa pag-convert sa mga kolor ngadto sa YCbCr, ang mga component gi-compress sa tagsa-tagsa, aron kita maka-concentrate sa Y component lang. Ug ania ang hitsura sa Y component bytes human sa paggamit niini nga layer.

Giunsa ang JPEG format molihok
(Interactive nga bersyon - sa orihinal mga artikulo). Sa interactive nga bersyon, ang pag-klik sa usa ka pixel mag-scroll sa editor ngadto sa linya nga nagrepresentar niini. Sulayi ang pagtangtang sa mga numero gikan sa katapusan o pagdugang pipila ka mga sero sa usa ka piho nga numero.

Sa unang tan-aw, morag dili maayo nga compression. Adunay 100 ka pixel sa usa ka hulagway, ug nagkinahanglan ug 000 ka numero aron magrepresentar sa ilang kahayag (Y-components)—mas grabe pa kay sa pag-compress sa bisan unsa!

Apan, timan-i nga kadaghanan niini nga mga numero zero. Dugang pa, ang tanan nga mga zero sa katapusan sa mga linya mahimong makuha nga dili usbon ang imahe. Adunay mga 26 ka numero nga nahibilin, ug kini halos 000 ka pilo nga menos!

Kini nga lebel naglangkob sa sekreto sa mga pattern sa chess. Dili sama sa ubang mga epekto nga among nakita, ang dagway sa kini nga mga sumbanan dili usa ka glitch. Sila ang mga bloke sa pagtukod sa tibuok nga imahe. Ang matag linya sa editor adunay eksaktong 64 ka numero, discrete cosine transform (DCT) coefficients nga katumbas sa intensity sa 64 ka talagsaon nga mga pattern.

Kini nga mga pattern naporma base sa cosine plot. Ania kung unsa ang hitsura sa pipila kanila:

Giunsa ang JPEG format molihok
8 sa 64 ka posibilidad

Sa ubos usa ka hulagway nga nagpakita sa tanang 64 ka mga pattern.

Giunsa ang JPEG format molihok
(Interactive nga bersyon - sa orihinal mga artikulo).

Kini nga mga sumbanan labi ka hinungdanon tungod kay kini ang sukaranan sa 8x8 nga mga imahe. Kung dili ka pamilyar sa linear algebra, kini nagpasabut nga ang bisan unsang 8x8 nga imahe mahimong mahimo gikan sa kini nga 64 nga mga pattern. Ang DCT mao ang proseso sa pagbahin sa mga hulagway ngadto sa 8x8 nga mga bloke ug pag-convert sa matag bloke ngadto sa kombinasyon niining 64 ka coefficients.

Morag salamangka nga ang bisan unsang imahen mahimong gilangkuban sa 64 ka piho nga mga sumbanan. Bisan pa, parehas kini sa pag-ingon nga ang bisan unsang lugar sa Yuta mahulagway sa duha ka numero - latitude ug longitude [nagpakita sa mga hemisphere / gibanabana. transl.]. Kanunay natong gihunahuna ang nawong sa Yuta nga duha ka dimensyon, mao nga kinahanglan ra naton ang duha ka numero. Ang 8x8 nga hulagway adunay 64 ka dimensyon, busa kinahanglan nato ang 64 ka numero.

Dili pa klaro kung giunsa kini makatabang kanato sa termino sa compression. Kung kinahanglan naton ang 64 nga mga numero aron magrepresentar sa usa ka 8x8 nga imahe, ngano nga mas maayo pa kini kaysa sa pagtipig lamang sa 64 nga mga sangkap sa kahayag? Gihimo namo kini sa samang rason nga among gihimo ang tulo ka RGB nga mga numero ngadto sa tulo ka YCbCr nga mga numero: kini nagtugot kanamo sa pagtangtang sa maliputon nga mga detalye.

Lisud nga makita kung unsa nga detalye ang gikuha sa kini nga yugto tungod kay ang JPEG nagpadapat sa DCT sa 8x8 nga mga bloke. Bisan pa, walay usa nga nagdili kanato sa paggamit niini sa tibuok nga hulagway. Ania kung unsa ang hitsura sa DCT alang sa sangkap nga Y nga gipadapat sa tibuuk nga litrato:

Giunsa ang JPEG format molihok

Labaw sa 60 ka mga numero ang mahimong tangtangon gikan sa katapusan nga halos walay mamatikdan nga mga kausaban sa litrato.

Giunsa ang JPEG format molihok

Apan, timan-i nga kon atong i-zero ang unang lima ka mga numero, ang kalainan mahimong dayag.

Giunsa ang JPEG format molihok

Ang mga numero sa sinugdanan nagrepresentar sa ubos nga frequency nga mga pagbag-o sa imahe, nga labing maayo nga makuha sa atong mga mata. Ang mga numero padulong sa katapusan nagpaila sa mga pagbag-o sa taas nga frequency nga mas lisud nga mamatikdan. Aron "makita kung unsa ang dili makita sa mata," mahimo naton ihimulag kini nga mga detalye sa taas nga frequency pinaagi sa pag-zero sa una nga 5000 nga mga numero.

Giunsa ang JPEG format molihok

Nakita namon ang tanan nga mga lugar sa imahe diin ang pinakadako nga pagbag-o nahitabo gikan sa pixel hangtod sa pixel. Ang mga mata sa iring, ang iyang mga bungot, ang terry nga habol ug ang mga anino sa ubos nga bahin sa wala nga bahin makita. Makapadayon ka pinaagi sa pag-zero sa unang 10 ka numero:

Giunsa ang JPEG format molihok

20 000:

Giunsa ang JPEG format molihok

40 000:

Giunsa ang JPEG format molihok

60 000:

Giunsa ang JPEG format molihok

Kining taas nga frequency nga mga detalye gikuha sa JPEG atol sa compression stage. Walay pagkawala sa pag-convert sa mga kolor ngadto sa DCT coefficients. Ang pagkawala mahitabo sa sampling nga lakang, diin ang high-frequency o hapit-zero nga mga kantidad gikuha. Kung gipaubos nimo ang kalidad sa pag-save sa JPEG, gipataas sa programa ang threshold alang sa gidaghanon sa mga kantidad nga gikuha, nga nagpamenos sa gidak-on sa file, apan naghimo sa litrato nga mas pixelated. Mao nga ang imahe sa una nga seksyon, nga 57 ka beses nga mas gamay, ingon niini. Ang matag 8x8 block girepresentahan sa mas gamay nga DCT coefficients itandi sa mas taas nga kalidad nga bersyon.

Makahimo ka usa ka cool nga epekto sama sa hinay nga pag-streaming sa mga imahe. Mahimo nimong ipakita ang usa ka hanap nga litrato nga mahimong labi ka detalyado samtang daghang mga coefficient ang na-download.

Dinhi, para lang sa kalingawan, mao ang imong makuha gamit lang ang 24 ka numero:

Giunsa ang JPEG format molihok

O 5000 lang:

Giunsa ang JPEG format molihok

Malabo kaayo, apan sa usa ka paagi mailhan!

3. Run length encoding, delta ug Huffman

Sa pagkakaron, ang tanan nga mga yugto sa compression nawala. Ang katapusan nga yugto, sa sukwahi, nagpadayon nga walay mga kapildihan. Dili kini magtangtang sa impormasyon, apan kini makapamenos sa gidak-on sa file.

Unsaon nimo pag-compress ang usa ka butang nga dili ilabay ang impormasyon? Hunahunaa kung giunsa nato paghulagway ang usa ka yano nga itom nga rektanggulo nga 700 x 437.

Ang JPEG naggamit ug 5000 ka numero para niini, apan mas maayo nga mga resulta ang makab-ot. Mahunahuna ba nimo ang usa ka laraw sa pag-encode nga maghulagway sa ingon nga imahe sa pipila ka mga byte kutob sa mahimo?

Ang gamay nga laraw nga akong mahimo gamit ang upat: tulo aron magrepresentar sa usa ka kolor, ug ang ikaupat aron ipakita kung pila ang mga pixel nga adunay kolor. Ang ideya sa pagrepresentar sa nagbalikbalik nga mga kantidad sa kini nga mubu nga paagi gitawag nga run-length encoding. Kini walay pagkawala tungod kay mahimo natong ibalik ang na-encode nga datos sa orihinal nga porma niini.

Ang JPEG file nga adunay itom nga rectangle mas dako pa kay sa 4 bytes - hinumdomi nga sa lebel sa DCT, ang compression gipadapat sa 8x8 pixel blocks. Busa, sa labing gamay, kinahanglan nato ang usa ka DCT coefficient sa matag 64 pixels. Kinahanglan namon ang usa tungod kay imbis nga magtipig usa ka coefficient sa DCT nga gisundan sa 63 nga mga zero, ang pag-encode sa gitas-on sa pagdagan nagtugot kanamo nga magtipig usa ka numero ug ipakita nga "ang tanan nga uban mga zero."

Ang pag-encode sa delta usa ka teknik diin ang matag byte adunay kalainan gikan sa pipila nga kantidad, kaysa usa ka hingpit nga kantidad. Busa, ang pag-edit sa pipila ka mga byte nagbag-o sa kolor sa tanan nga ubang mga pixel. Pananglitan, imbes nga tipigan

12 13 14 14 14 13

Mahimo natong sugdan sa 12 ug dayon ipakita kung pila ang kinahanglan natong idugang o ibawas aron makuha ang sunod nga numero. Ug kini nga han-ay sa delta coding nagkuha sa porma:

12 1 1 0 0 -1 0 1

Ang nakabig nga datos dili mas gamay kay sa orihinal nga datos, apan mas sayon ​​ang pag-compress niini. Ang pag-apply sa delta encoding sa dili pa ang run length encoding makatabang ug dako samtang wala gihapon mawala ang compression.

Ang Delta coding usa sa pipila ka mga teknik nga gigamit sa gawas sa 8x8 blocks. Sa 64 DCT coefficients, ang usa kay usa lang ka kanunay nga wave function (solid color). Kini nagrepresentar sa kasagaran nga kahayag sa matag bloke alang sa luma component, o ang kasagaran nga blueness alang sa Cb component, ug uban pa. Ang unang bili sa matag bloke sa DCT gitawag nga bili sa DC, ug ang matag bili sa DC kay delta nga gi-encode kalabot sa mga nauna. Busa, ang pagbag-o sa kahayag sa unang bloke makaapekto sa tanang bloke.

Ang kataposang misteryo nagpabilin: sa unsang paagi ang pag-usab sa singular bug-os nga makaguba sa tibuok hulagway? Sa pagkakaron, ang lebel sa compression wala'y ingon nga mga kabtangan. Ang tubag anaa sa JPEG header. Ang una nga 500 ka byte adunay metadata bahin sa imahe - gilapdon, gitas-on, ug uban pa, ug wala pa kami nagtrabaho uban kanila.

Kung walay header halos imposible (o lisud kaayo) ang pag-decode sa JPEG. Morag gisulayan nako nga ihulagway ang litrato kanimo, ug nagsugod ako sa pag-imbento sa mga pulong aron ipahayag ang akong impresyon. Ang paghubit tingali medyo mubu, tungod kay ako makahimo sa pag-imbento sa mga pulong nga adunay eksakto nga kahulugan nga gusto nakong ipasabut, apan alang sa tanan dili kini masabtan.

Morag tanga, pero mao gyud na ang mahitabo. Ang matag JPEG nga imahe gi-compress sa mga code nga espesipiko niini. Ang code dictionary gitipigan sa header. Kini nga teknik gitawag nga Huffman code ug ang bokabularyo gitawag nga Huffman nga lamesa. Sa header, ang lamesa gimarkahan og duha ka byte - 255 ug dayon 196. Ang matag component sa kolor mahimong adunay kaugalingong lamesa.

Ang mga pagbag-o sa mga lamesa grabe nga makaapekto sa bisan unsang imahe. Usa ka maayong pananglitan mao ang pag-ilis sa ika-15 nga linya ngadto sa 1.

Giunsa ang JPEG format molihok

Nahitabo kini tungod kay ang mga lamesa nagtino kung giunsa pagbasa ang indibidwal nga mga piraso. Sa pagkakaron nagtrabaho lang kami sa binary nga mga numero sa decimal nga porma. Apan gitago niini ang kamatuoran nga kung gusto nimo nga tipigan ang numero 1 sa usa ka byte, kini tan-awon sama sa 00000001, tungod kay ang matag byte kinahanglan adunay eksaktong walo ka mga bit, bisan kung usa ra ang gikinahanglan.

Kini lagmit usa ka dako nga pag-usik sa wanang kung ikaw adunay daghang gagmay nga mga numero. Ang Huffman code usa ka teknik nga nagtugot kanato sa pagpahayahay niini nga kinahanglanon nga ang matag numero kinahanglan nga okupar sa walo ka mga bit. Kini nagpasabot nga kung makakita ka og duha ka byte:

234 115

Unya, depende sa lamesa sa Huffman, kini mahimong tulo ka numero. Aron makuha kini, kinahanglan nimo nga bungkagon una kini sa mga indibidwal nga mga piraso:

11101010 01110011

Dayon atong tan-awon ang lamesa aron mahibal-an kung giunsa sila paggrupo. Pananglitan, kini mahimong ang unang unom ka bits, (111010), o 58 sa decimal, gisundan sa lima ka bits (10011), o 19, ug sa kataposan ang kataposang upat ka bits (0011), o 3.

Busa, lisud kaayo nga masabtan ang mga byte sa kini nga yugto sa compression. Ang mga byte wala magrepresentar sa kung unsa sila. Dili ako moadto sa mga detalye sa pagtrabaho kauban ang lamesa sa kini nga artikulo, apan mga materyales sa niini nga isyu online igo na.

Usa ka makapaikag nga limbong nga imong mahimo sa kini nga kahibalo mao ang pagbulag sa header gikan sa JPEG ug itago kini nga gilain. Sa tinuud, kini nahimo nga ikaw ra ang makabasa sa file. Gihimo kini sa Facebook aron mahimo nga mas gamay ang mga file.

Unsa pa ang mahimo mao ang pagbag-o sa lamesa sa Huffman nga medyo. Alang sa uban kini sama sa usa ka guba nga litrato. Ug ikaw lamang ang makahibalo sa mahika nga paagi sa pag-ayo niini.

Atong i-summarize: busa unsa ang gikinahanglan sa pag-decode sa JPEG? Gikinahanglan:

  1. Kuhaa ang (mga) lamesa sa Huffman gikan sa ulohan ug i-decode ang mga piraso.
  2. I-extract ang discrete cosine transform coefficients para sa matag color ug luminance component para sa matag 8x8 block, paghimo og inverse run-length ug delta encoding transforms.
  3. Paghiusa sa mga cosine base sa mga coefficient aron makuha ang mga kantidad sa pixel alang sa matag 8x8 block.
  4. I-scale ang mga component sa kolor kon subsampling ang gihimo (kini nga impormasyon anaa sa header).
  5. I-convert ang resulta nga mga kantidad sa YCbCr alang sa matag pixel ngadto sa RGB.
  6. Ipakita ang imahe sa screen!

Seryoso nga trabaho alang sa yano nga pagtan-aw sa usa ka litrato nga adunay usa ka iring! Bisan pa, ang gusto nako bahin niini mao nga kini nagpakita kung giunsa ang teknolohiya sa JPEG nga nakasentro sa tawo. Gibase kini sa mga peculiarities sa atong panglantaw, nga nagtugot kanato sa pagkab-ot sa mas maayo nga kompresiyon kay sa naandan nga mga teknolohiya. Ug karon nga nahibal-an na namon kung giunsa ang JPEG molihok, mahanduraw namon kung giunsa kini nga mga teknolohiya mabalhin sa ubang mga lugar. Pananglitan, ang pag-encode sa delta sa video makahatag usa ka hinungdanon nga pagkunhod sa gidak-on sa file, tungod kay kanunay adunay tibuuk nga mga lugar nga dili mausab gikan sa frame ngadto sa frame (pananglitan, ang background).

Ang code nga gigamit sa artikulo, bukas, ug adunay mga instruksyon kon unsaon pag-ilis ang mga hulagway sa imoha.

Source: www.habr.com

Idugang sa usa ka comment