Jinsi muundo wa JPEG unavyofanya kazi

Picha za JPEG zinapatikana kila mahali katika maisha yetu ya kidijitali, lakini nyuma ya ufahamu huu kuna algoriti zinazoondoa maelezo ambayo hayaonekani kwa macho ya mwanadamu. Matokeo yake ni ubora wa juu zaidi wa kuona katika saizi ndogo zaidi ya faili - lakini yote hufanya kazi vipi? Hebu tuone ni nini hasa macho yetu hayaoni!

Jinsi muundo wa JPEG unavyofanya kazi

Ni rahisi kuchukua kwa urahisi uwezo wa kutuma picha kwa rafiki na usijali kuhusu kifaa, kivinjari au mfumo wa uendeshaji wanaotumia - lakini haikuwa hivyo kila wakati. Kufikia mapema miaka ya 1980, kompyuta ziliweza kuhifadhi na kuonyesha picha za kidijitali, lakini kulikuwa na mawazo mengi yanayoshindana kuhusu njia bora ya kufanya hivyo. Hungeweza tu kutuma picha kutoka kwa kompyuta moja hadi nyingine na kutumaini ingefanya kazi.

Ili kutatua tatizo hili, kamati ya wataalam kutoka duniani kote ilikusanyika mwaka 1986 inayoitwa "Kundi la Pamoja la Wataalam wa Upigaji pichaΒ» (Kundi la Pamoja la Wataalamu wa Picha, JPEG), lilianzishwa kama juhudi za pamoja kati ya Shirika la Kimataifa la Kuweka Viwango (ISO) na Tume ya Kimataifa ya Ufundi Electrotechnical (IEC), mashirika mawili ya viwango vya kimataifa yenye makao yake makuu huko Geneva, Uswisi.

Kundi la watu wanaoitwa JPEG waliunda kiwango cha ukandamizaji wa picha ya dijiti ya JPEG mnamo 1992. Mtu yeyote ambaye ametumia Intaneti huenda amekumbana na picha zilizosimbwa kwa JPEG. Hii ndiyo njia ya kawaida ya kusimba, kutuma na kuhifadhi picha. Kuanzia kurasa za wavuti hadi barua pepe hadi mitandao ya kijamii, JPEG inatumika mabilioni ya mara kwa sikuβ€”takriban kila wakati tunapotazama picha mtandaoni au kuituma. Bila JPEG, wavuti ingekuwa chini ya rangi, polepole, na pengine kuwa na picha chache za paka!

Nakala hii inahusu jinsi ya kusimbua picha ya JPEG. Kwa maneno mengine, ni nini kinachohitajika kubadilisha data iliyoshinikizwa iliyohifadhiwa kwenye kompyuta kuwa picha inayoonekana kwenye skrini. Hili ni jambo la kufaa kujua, si kwa sababu tu ni muhimu kuelewa teknolojia tunayotumia kila siku, lakini pia kwa sababu kwa kufungua viwango vya mbano, tunajifunza zaidi kuhusu utambuzi na kuona, na ni maelezo gani ambayo macho yetu ni nyeti kwayo.

Kwa kuongeza, kucheza na picha kwa njia hii ni ya kuvutia sana.

Jinsi muundo wa JPEG unavyofanya kazi

Kuangalia ndani ya JPEG

Kwenye kompyuta, kila kitu kinahifadhiwa kama mlolongo wa nambari za binary. Kwa kawaida biti hizi, sifuri na zile, huwekwa katika vikundi vya watu wanane ili kutengeneza baiti. Unapofungua picha ya JPEG kwenye kompyuta, kitu (kivinjari, mfumo wa uendeshaji, kitu kingine) lazima kitengeneze baiti, kurejesha picha asili kama orodha ya rangi zinazoweza kuonyeshwa.

Ukipakua tamu hii picha ya paka na uifungue katika kihariri cha maandishi, utaona kundi la wahusika wasio na uhusiano.

Jinsi muundo wa JPEG unavyofanya kazi
Hapa ninatumia Notepad++ kuchunguza yaliyomo kwenye faili, kwa kuwa wahariri wa maandishi wa kawaida kama Notepad kwenye Windows wataharibu faili ya binary baada ya kuhifadhi na haitakidhi tena umbizo la JPEG.

Kufungua picha katika kichakataji maneno kunachanganya kompyuta, kama vile unavyochanganya ubongo wako unaposugua macho yako na kuanza kuona madoa ya rangi!

Maeneo haya unayoyaona yanajulikana kama fosfeni, na si matokeo ya kichocheo chepesi au maono yanayotokana na akili. Yanatokea kwa sababu ubongo wako unafikiri kwamba ishara zozote za umeme katika neva za macho huwasilisha habari kuhusu mwanga. Ubongo unahitaji kufanya mawazo haya kwa sababu hakuna njia ya kujua ikiwa ishara ni sauti, maono, au kitu kingine chochote. Mishipa yote katika mwili husambaza msukumo sawa wa umeme. Kwa kutumia shinikizo kwa macho yako, unatuma ishara ambazo hazionekani, lakini kuamsha vipokezi vya jicho, ambavyo ubongo wako hutafsiri - katika kesi hii, vibaya - kama kitu cha kuona. Unaweza kuona shinikizo halisi!

Inachekesha kufikiria jinsi kompyuta zinavyofanana na ubongo, lakini pia ni mlinganisho muhimu ili kuonyesha ni kiasi gani maana ya dataβ€”iwe inasambazwa mwilini na mishipa ya fahamu au kuhifadhiwa kwenye kompyutaβ€”inategemea jinsi inavyofasiriwa. Data yote ya binary inaundwa na sekunde 0 na 1, vipengele vya msingi vinavyoweza kuwasilisha taarifa za aina yoyote. Kompyuta yako mara nyingi hutambua jinsi ya kuzitafsiri kwa kutumia vidokezo kama vile viendelezi vya faili. Sasa tunailazimisha itafsiri kama maandishi, kwa sababu ndivyo mhariri wa maandishi anatarajia.

Ili kuelewa jinsi ya kusimbua JPEG, tunahitaji kuona ishara asili zenyewe - data ya binary. Hii inaweza kufanywa kwa kutumia kihariri cha heksadesimali, au kuwasha moja kwa moja ukurasa wa wavuti wa makala asili! Kuna picha, karibu na ambayo katika uwanja wa maandishi ni byte zake zote (isipokuwa kwa kichwa), iliyotolewa kwa fomu ya decimal. Unaweza kuzibadilisha, na hati itasimba upya na kutoa taswira mpya kwenye nzi.

Jinsi muundo wa JPEG unavyofanya kazi

Unaweza kujifunza mengi kwa kucheza tu na kihariri hiki. Kwa mfano, unaweza kujua ni mpangilio gani saizi zimehifadhiwa?

Jambo la kushangaza juu ya mfano huu ni kwamba kubadilisha nambari fulani haiathiri picha kabisa, lakini, kwa mfano, ikiwa unabadilisha nambari 17 na 0 kwenye mstari wa kwanza, picha itaharibiwa kabisa!

Jinsi muundo wa JPEG unavyofanya kazi

Mabadiliko mengine, kama vile kuchukua nafasi ya 7 kwenye mstari wa 1988 na nambari 254, hubadilisha rangi, lakini tu ya saizi zinazofuata.

Jinsi muundo wa JPEG unavyofanya kazi

Labda jambo la kushangaza zaidi ni kwamba nambari zingine hubadilisha sio rangi tu, bali pia sura ya picha. Badilisha 70 kwenye mstari wa 12 hadi 2 na uangalie safu ya juu ya picha ili kuona ninamaanisha nini.

Jinsi muundo wa JPEG unavyofanya kazi

Na haijalishi ni picha gani ya JPEG unayotumia, kila wakati utapata mifumo hii ya ajabu ya chess wakati wa kuhariri baiti.

Wakati wa kucheza na mhariri, ni ngumu kuelewa jinsi picha inafanywa upya kutoka kwa ka hizi, kwani compression ya JPEG ina teknolojia tatu tofauti, zinazotumiwa kwa mlolongo katika viwango. Tutasoma kila moja kivyake ili kufichua tabia ya ajabu tunayoona.

Viwango vitatu vya ukandamizaji wa JPEG:

  1. Sampuli ndogo za rangi.
  2. Ubadilishaji na sampuli za kosini tofauti.
  3. Endesha usimbaji wa urefu, delta ΠΈ Huffman

Ili kukupa wazo la ukubwa wa mbano, kumbuka kuwa picha iliyo hapo juu inawakilisha nambari 79, au kama 819 KB. Ikiwa tungeihifadhi bila mbano, kila pikseli ingehitaji nambari tatu - kwa sehemu nyekundu, kijani kibichi na bluu. Hii inaweza kuwa nambari 79, au takriban. 917 KB. Kama matokeo ya ukandamizaji wa JPEG, faili ya mwisho ilipunguzwa kwa zaidi ya mara 700!

Kwa kweli, picha hii inaweza kubanwa zaidi. Chini ni picha mbili kando - picha iliyo upande wa kulia imebanwa hadi KB 16, yaani, ndogo mara 57 kuliko toleo ambalo halijabanwa!

Jinsi muundo wa JPEG unavyofanya kazi

Ukiangalia kwa makini, utaona kwamba picha hizi hazifanani. Zote mbili ni picha zilizo na ukandamizaji wa JPEG, lakini moja sahihi ni ndogo zaidi kwa sauti. Pia inaonekana mbaya zaidi (angalia miraba ya rangi ya asili). Ndiyo maana JPEG pia inaitwa ukandamizaji wa hasara; Wakati wa mchakato wa ukandamizaji, picha inabadilika na kupoteza maelezo fulani.

1. Usampulishaji wa rangi

Hapa kuna picha iliyo na kiwango cha kwanza cha mbano kilichotumika.

Jinsi muundo wa JPEG unavyofanya kazi
(Toleo la mwingiliano - ndani asili makala). Kuondoa nambari moja huharibu rangi zote. Walakini, ikiwa nambari sita zimeondolewa, haina athari kwenye picha.

Sasa nambari ni rahisi zaidi kufafanua. Hii ni karibu orodha rahisi ya rangi, ambayo kila byte hubadilisha pikseli moja, lakini wakati huo huo tayari ni nusu ya ukubwa wa picha isiyobanwa (ambayo itachukua takriban 300 KB katika saizi hii iliyopunguzwa). Je, unaweza kukisia kwa nini?

Unaweza kuona kwamba nambari hizi haziwakilishi vipengele vya kawaida vya nyekundu, kijani, na bluu, kwa kuwa ikiwa tunabadilisha nambari zote na zero, tutapata picha ya kijani (badala ya nyeupe).

Jinsi muundo wa JPEG unavyofanya kazi

Hii ni kwa sababu baiti hizi zinasimama kwa Y (mwangaza),

Jinsi muundo wa JPEG unavyofanya kazi

Cb (uzungu jamaa),

Jinsi muundo wa JPEG unavyofanya kazi

na Cr (urekundu jamaa) picha.

Jinsi muundo wa JPEG unavyofanya kazi

Kwa nini usitumie RGB? Baada ya yote, hii ndio jinsi skrini nyingi za kisasa zinavyofanya kazi. Kichunguzi chako kinaweza kuonyesha rangi yoyote, ikijumuisha nyekundu, kijani kibichi na samawati, yenye miindo tofauti kwa kila pikseli. Nyeupe hupatikana kwa kuwasha zote tatu kwa mwangaza kamili, na nyeusi hupatikana kwa kuzima.

Jinsi muundo wa JPEG unavyofanya kazi

Hii pia inafanana sana na jinsi jicho la mwanadamu linavyofanya kazi. Vipokezi vya rangi machoni mwetu vinaitwa "mbegu", na zimegawanywa katika aina tatu, ambayo kila moja ni nyeti zaidi kwa rangi nyekundu, kijani, au bluu [Koni za aina ya S ni nyeti katika urujuani-bluu (S kutoka kwa Kiingereza Short - short-wave spectrum), M. -aina - katika kijani-njano (M kutoka Kiingereza Medium - kati-wimbi), na L-aina - katika njano-nyekundu (L kutoka Kiingereza Long - muda mrefu-wimbi) sehemu ya wigo. Uwepo wa aina hizi tatu za mbegu (na fimbo, ambazo ni nyeti katika sehemu ya kijani ya emerald ya wigo) humpa mtu maono ya rangi. / takriban. tafsiri.]. Vijiti, aina nyingine ya photoreceptor katika macho yetu, ina uwezo wa kuchunguza mabadiliko katika mwangaza, lakini ni nyeti zaidi kwa rangi. Macho yetu yana vijiti milioni 120 na koni milioni 6 tu.

Ndiyo maana macho yetu ni bora zaidi katika kugundua mabadiliko katika mwangaza kuliko mabadiliko ya rangi. Ikiwa unatenganisha rangi kutoka kwa mwangaza, unaweza kuondoa rangi kidogo na hakuna mtu atakayeona chochote. Sampuli ndogo za Chroma ni mchakato wa kuwakilisha vijenzi vya rangi vya picha katika azimio la chini kuliko vijenzi vya mwanga. Katika mfano ulio hapo juu, kila pikseli ina sehemu ya Y moja haswa, na kila kikundi mahususi cha pikseli nne kina Cb moja na kijenzi kimoja cha Cr. Kwa hiyo, picha ina maelezo ya rangi mara nne chini kuliko ya awali.

Nafasi ya rangi ya YCbCr haitumiki tu kwenye JPEG. Hapo awali iligunduliwa mnamo 1938 kwa programu za runinga. Sio kila mtu ana TV ya rangi, hivyo kutenganisha rangi na mwangaza kuruhusiwa kila mtu kupata ishara sawa, na TV bila rangi zilitumia tu sehemu ya mwangaza.

Kwa hivyo kuondoa nambari moja kutoka kwa mhariri huharibu kabisa rangi zote. Vipengele vinahifadhiwa katika fomu ya YYYY Cb Cr (kwa kweli, si lazima kwa utaratibu huo - utaratibu wa kuhifadhi umeelezwa kwenye kichwa cha faili). Kuondoa nambari ya kwanza kutasababisha thamani ya kwanza ya Cb kutambuliwa kama Y, Cr kama Cb, na kwa ujumla utakuwa na athari ya domino ambayo hubadilisha rangi zote za picha.

Uainisho wa JPEG haukulazimishi kutumia YCbCr. Lakini faili nyingi huitumia kwa sababu hutoa picha zilizopunguzwa bora kuliko RGB. Lakini si lazima kuchukua neno langu kwa hilo. Jionee mwenyewe katika jedwali lililo hapa chini jinsi sampuli ndogo za kila sehemu ya mtu binafsi zitakavyoonekana katika RGB na YCbCr.

Jinsi muundo wa JPEG unavyofanya kazi
(Toleo la mwingiliano - ndani asili makala).

Uondoaji wa bluu hauonekani kama ule wa nyekundu au kijani. Hiyo ni kwa sababu ya koni milioni sita katika macho yako, karibu 64% ni nyeti kwa nyekundu, 32% kwa kijani na 2% kwa bluu.

Sampuli ya chini ya sehemu ya Y (chini kushoto) inaonekana vizuri zaidi. Hata mabadiliko madogo yanaonekana.

Kubadilisha picha kutoka RGB hadi YCbCr hakupunguzi ukubwa wa faili, lakini hurahisisha kupata maelezo ambayo hayaonekani sana ambayo yanaweza kuondolewa. Ukandamizaji wa kupoteza hutokea katika hatua ya pili. Inatokana na wazo la kuwasilisha data katika fomu inayoweza kubana zaidi.

2. Ubadilishaji na sampuli tofauti za kosini

Kiwango hiki cha ukandamizaji, kwa sehemu kubwa, ni nini JPEG inahusu. Baada ya kubadilisha rangi kuwa YCbCr, vijenzi vinabanwa kila kimoja, kwa hivyo tunaweza kuzingatia tu sehemu ya Y Na hii ndio jinsi sehemu ya Y inavyoonekana baada ya kutumia safu hii.

Jinsi muundo wa JPEG unavyofanya kazi
(Toleo la mwingiliano - ndani asili makala). Katika toleo wasilianifu, kubofya kwenye pikseli husogeza kihariri hadi kwenye mstari unaokiwakilisha. Jaribu kuondoa nambari kutoka mwisho au kuongeza sufuri chache kwa nambari fulani.

Kwa mtazamo wa kwanza, inaonekana kama compression mbaya sana. Kuna pikseli 100 katika picha, na inachukua nambari 000 kuwakilisha mwangaza wao (Y-sehemu)β€”hiyo ni mbaya zaidi kuliko kubana chochote kabisa!

Walakini, kumbuka kuwa nambari nyingi hizi ni sifuri. Zaidi ya hayo, ziro zote mwishoni mwa mistari zinaweza kuondolewa bila kubadilisha picha. Kuna takriban nambari 26 zilizosalia, na hii ni karibu mara 000 chini!

Kiwango hiki kina siri ya mifumo ya chess. Tofauti na athari zingine ambazo tumeona, mwonekano wa mifumo hii sio dosari. Wao ni matofali ya ujenzi wa picha nzima. Kila mstari wa kihariri una nambari 64 haswa, vigawo vya kubadilisha kosine (DCT) vinavyolingana na ukubwa wa ruwaza 64 za kipekee.

Mifumo hii huundwa kulingana na njama ya cosine. Hivi ndivyo baadhi yao wanavyoonekana:

Jinsi muundo wa JPEG unavyofanya kazi
8 kati ya 64 odd

Chini ni picha inayoonyesha ruwaza zote 64.

Jinsi muundo wa JPEG unavyofanya kazi
(Toleo la mwingiliano - ndani asili makala).

Mifumo hii ni ya umuhimu hasa kwa sababu ni msingi wa picha za 8x8. Ikiwa hujui aljebra ya mstari, hii inamaanisha kuwa picha yoyote ya 8x8 inaweza kutengenezwa kutoka kwa ruwaza hizi 64. DCT ni mchakato wa kugawanya picha katika vizuizi 8x8 na kubadilisha kila kizuizi kuwa mchanganyiko wa hizi coefficients 64.

Inaonekana kama uchawi kwamba picha yoyote inaweza kujumuisha mifumo 64 maalum. Walakini, hii ni sawa na kusema kwamba sehemu yoyote ya Dunia inaweza kuelezewa na nambari mbili - latitudo na longitudo [inaonyesha hemispheres / takriban. tafsiri.]. Mara nyingi tunafikiria juu ya uso wa Dunia kama pande mbili, kwa hivyo tunahitaji nambari mbili tu. Picha ya 8x8 ina vipimo 64, kwa hivyo tunahitaji nambari 64.

Bado haijawa wazi jinsi hii inatusaidia katika suala la compression. Ikiwa tunahitaji nambari 64 ili kuwakilisha picha ya 8x8, kwa nini hii itakuwa bora kuliko kuhifadhi tu vijenzi 64 vya mwangaza? Tunafanya hivi kwa sababu ile ile tuligeuza nambari tatu za RGB kuwa nambari tatu za YCbCr: inaturuhusu kuondoa maelezo mafupi.

Ni vigumu kuona ni maelezo gani hasa yanaondolewa katika hatua hii kwa sababu JPEG inatumika DCT kwa vitalu 8x8. Hata hivyo, hakuna mtu anayetukataza kuitumia kwa picha nzima. Hivi ndivyo DCT inavyoonekana kwa sehemu ya Y inayotumika kwenye picha nzima:

Jinsi muundo wa JPEG unavyofanya kazi

Zaidi ya nambari 60 zinaweza kuondolewa kutoka mwisho bila mabadiliko yoyote dhahiri kwenye picha.

Jinsi muundo wa JPEG unavyofanya kazi

Walakini, kumbuka kuwa ikiwa tutaondoa nambari tano za kwanza, tofauti itakuwa dhahiri.

Jinsi muundo wa JPEG unavyofanya kazi

Nambari za mwanzo zinawakilisha mabadiliko ya mzunguko wa chini kwenye picha, ambayo macho yetu huchukua bora zaidi. Nambari kuelekea mwisho zinaonyesha mabadiliko katika masafa ya juu ambayo ni vigumu kutambua. Ili "kuona kile ambacho jicho haliwezi kuona," tunaweza kutenga maelezo haya ya masafa ya juu kwa kuondoa nambari 5000 za kwanza.

Jinsi muundo wa JPEG unavyofanya kazi

Tunaona maeneo yote ya picha ambapo mabadiliko makubwa zaidi hutokea kutoka pikseli hadi pikseli. Macho ya paka, ndevu zake, blanketi ya terry na vivuli kwenye kona ya chini kushoto vinasimama. Unaweza kwenda mbali zaidi kwa kuondoa nambari 10 za kwanza:

Jinsi muundo wa JPEG unavyofanya kazi

20 000:

Jinsi muundo wa JPEG unavyofanya kazi

40 000:

Jinsi muundo wa JPEG unavyofanya kazi

60 000:

Jinsi muundo wa JPEG unavyofanya kazi

Maelezo haya ya masafa ya juu yanaondolewa na JPEG wakati wa hatua ya kukandamiza. Hakuna hasara katika kubadilisha rangi hadi vigawo vya DCT. Hasara hutokea katika hatua ya sampuli, ambapo maadili ya juu-frequency au karibu-sifuri huondolewa. Unapopunguza ubora wa kuokoa wa JPEG, programu huongeza kizingiti kwa idadi ya maadili yaliyoondolewa, ambayo hupunguza saizi ya faili, lakini hufanya picha kuwa ya pixelated zaidi. Ndio maana picha katika sehemu ya kwanza, ambayo ilikuwa ndogo mara 57, ilionekana hivi. Kila block 8x8 iliwakilishwa na vigawo vichache vya DCT ikilinganishwa na toleo la ubora wa juu.

Unaweza kuunda athari nzuri kama utiririshaji wa polepole wa picha. Unaweza kuonyesha picha yenye ukungu ambayo ina maelezo zaidi na zaidi kadiri vigawo zaidi na zaidi vinapopakuliwa.

Hapa, kwa kujifurahisha tu, ndio unapata kwa kutumia nambari 24 tu:

Jinsi muundo wa JPEG unavyofanya kazi

Au 5000 tu:

Jinsi muundo wa JPEG unavyofanya kazi

Blurry sana, lakini kwa namna fulani inatambulika!

3. Endesha usimbaji wa urefu, delta na Huffman

Hadi sasa, hatua zote za compression zimekuwa hasara. Hatua ya mwisho, kinyume chake, inaendelea bila hasara. Haifuta habari, lakini kwa kiasi kikubwa inapunguza ukubwa wa faili.

Unawezaje kukandamiza kitu bila kutupa habari? Hebu fikiria jinsi tunavyoweza kuelezea mstatili mweusi rahisi 700 x 437.

JPEG hutumia nambari 5000 kwa hili, lakini matokeo bora zaidi yanaweza kupatikana. Je, unaweza kufikiria mpango wa usimbuaji ambao unaweza kuelezea picha kama hiyo kwa baiti chache iwezekanavyo?

Mpango mdogo ambao ningeweza kupata hutumia nne: tatu kuwakilisha rangi, na ya nne kuonyesha ni saizi ngapi za rangi hiyo. Wazo la kuwakilisha maadili yanayojirudia kwa njia hii iliyofupishwa inaitwa usimbaji wa urefu wa kukimbia. Haina hasara kwa sababu tunaweza kurejesha data iliyosimbwa katika umbo lake asili.

Faili ya JPEG yenye mstatili mweusi ni kubwa zaidi ya baiti 4 - kumbuka kuwa katika kiwango cha DCT, mgandamizo unatumika kwa vizuizi vya pikseli 8x8. Kwa hivyo, kwa uchache, tunahitaji mgawo mmoja wa DCT kwa kila pikseli 64. Tunahitaji moja kwa sababu badala ya kuhifadhi mgawo mmoja wa DCT ikifuatiwa na sufuri 63, usimbaji wa urefu wa kukimbia huturuhusu kuhifadhi nambari moja na kuashiria kuwa "nyingine zote ni sufuri."

Usimbaji wa Delta ni mbinu ambayo kila baiti ina tofauti kutoka kwa thamani fulani, badala ya thamani kamili. Kwa hivyo, kuhariri baiti fulani hubadilisha rangi ya saizi zingine zote. Kwa mfano, badala ya kuhifadhi

12 13 14 14 14 13 13 14

Tunaweza kuanza na 12 na kisha tuonyeshe ni kiasi gani tunahitaji kuongeza au kupunguza ili kupata nambari inayofuata. Na mlolongo huu katika utunzi wa delta unachukua fomu:

12 1 1 0 0 -1 0 1

Data iliyobadilishwa sio ndogo kuliko data ya asili, lakini ni rahisi kuibana. Kuweka usimbaji wa delta kabla ya usimbaji wa urefu wa kukimbia kunaweza kusaidia sana huku kukiwa bado kuna mgandamizo usio na hasara.

Usimbaji wa Delta ni mojawapo ya mbinu chache zinazotumiwa nje ya vizuizi 8x8. Kati ya coefficients 64 za DCT, moja ni kazi ya mara kwa mara ya wimbi (rangi imara). Inawakilisha wastani wa mwangaza wa kila kizuizi kwa vipengele vya luma, au wastani wa bluu kwa vipengele vya Cb, na kadhalika. Thamani ya kwanza ya kila kizuizi cha DCT inaitwa thamani ya DC, na kila thamani ya DC inasimbwa kwa delta kwa heshima na zile za awali. Kwa hiyo, kubadilisha mwangaza wa block ya kwanza itaathiri vitalu vyote.

Siri ya mwisho inabaki: jinsi gani kubadilisha umoja kunaharibu kabisa picha nzima? Kufikia sasa, viwango vya compression havijawa na mali kama hizo. Jibu liko kwenye kichwa cha JPEG. Baiti 500 za kwanza zina metadata kuhusu picha - upana, urefu, n.k., na bado hatujafanya kazi nazo.

Bila kichwa ni vigumu sana (au vigumu sana) kusimbua JPEG. Itakuwa kana kwamba ninajaribu kukuelezea picha hiyo, na ninaanza kubuni maneno ili kuwasilisha maoni yangu. Maelezo labda yatafupishwa kabisa, kwani ninaweza kubuni maneno yenye maana haswa ninayotaka kuwasilisha, lakini kwa kila mtu mwingine hayatakuwa na maana.

Inaonekana ni ya kijinga, lakini ndivyo inavyotokea. Kila picha ya JPEG imebanwa na misimbo maalum kwake. Kamusi ya msimbo huhifadhiwa kwenye kichwa. Mbinu hii inaitwa msimbo wa Huffman na msamiati unaitwa jedwali la Huffman. Katika kichwa, meza ni alama ya byte mbili - 255 na kisha 196. Kila sehemu ya rangi inaweza kuwa na meza yake mwenyewe.

Mabadiliko ya jedwali yataathiri sana picha yoyote. Mfano mzuri ni kubadili mstari wa 15 hadi 1.

Jinsi muundo wa JPEG unavyofanya kazi

Hii hutokea kwa sababu majedwali yanabainisha jinsi biti za kibinafsi zinapaswa kusomwa. Kufikia sasa tumefanya kazi tu na nambari za binary katika fomu ya desimali. Lakini hii inatuficha ukweli kwamba ikiwa unataka kuhifadhi nambari 1 kwa baiti, itaonekana kama 00000001, kwani kila byte lazima iwe na bits nane, hata ikiwa ni moja tu inahitajika.

Huu ni uwezekano wa kupoteza nafasi kubwa ikiwa una idadi ndogo ndogo. Msimbo wa Huffman ni mbinu inayoturuhusu kulegeza hitaji hili kwamba kila nambari lazima ichukue biti nane. Hii inamaanisha kuwa ikiwa utaona ka mbili:

234 115

Kisha, kulingana na meza ya Huffman, hizi zinaweza kuwa nambari tatu. Ili kuzitoa, unahitaji kwanza kuzigawanya katika vipande vya mtu binafsi:

11101010 01110011

Kisha tunaangalia meza ili kujua jinsi ya kuwaweka katika vikundi. Kwa mfano, hii inaweza kuwa biti sita za kwanza, (111010), au 58 katika desimali, ikifuatiwa na biti tano (10011), au 19, na hatimaye biti nne za mwisho (0011), au 3.

Kwa hiyo, ni vigumu sana kuelewa byte katika hatua hii ya compression. Byte haziwakilishi kile wanachoonekana. Sitaingia katika maelezo ya kufanya kazi na meza katika makala hii, lakini vifaa kuhusu suala hili mtandaoni inatosha.

Ujanja mmoja wa kuvutia unaoweza kufanya na maarifa haya ni kutenganisha kichwa kutoka kwa JPEG na kuihifadhi kando. Kwa kweli, zinageuka kuwa wewe tu unaweza kusoma faili. Facebook hufanya hivi kufanya faili kuwa ndogo zaidi.

Nini kingine kinaweza kufanywa ni kubadilisha meza ya Huffman kidogo. Kwa wengine itaonekana kama picha iliyovunjika. Na wewe tu utajua njia ya kichawi ya kurekebisha.

Wacha tufanye muhtasari: kwa hivyo ni nini kinachohitajika ili kusimbua JPEG? Muhimu:

  1. Toa jedwali la Huffman kutoka kwa kichwa na usimbue biti.
  2. Chambua kibadilishaji kigawe cha kosini kwa kila rangi na kijenzi cha mwanga kwa kila kizuizi cha 8x8, ukifanya mabadiliko ya urefu wa kukimbia na mabadiliko ya usimbaji wa delta.
  3. Changanya kosini kulingana na mgawo ili kupata thamani za pikseli kwa kila kizuizi cha 8x8.
  4. Vipimo vya vipengele vya rangi ikiwa sampuli ndogo zilifanywa (maelezo haya yapo kwenye kichwa).
  5. Badilisha thamani zinazotokana za YCbCr kwa kila pikseli hadi RGB.
  6. Onyesha picha kwenye skrini!

Kazi kubwa kwa kutazama tu picha na paka! Walakini, ninachopenda juu yake ni kwamba inaonyesha jinsi teknolojia ya JPEG ya kibinadamu ilivyo. Inategemea upekee wa mtazamo wetu, kuruhusu sisi kufikia compression bora zaidi kuliko teknolojia ya kawaida. Na sasa tunaelewa jinsi JPEG inavyofanya kazi, tunaweza kufikiria jinsi teknolojia hizi zinaweza kuhamishiwa kwenye maeneo mengine. Kwa mfano, usimbaji wa delta kwenye video unaweza kutoa upunguzaji mkubwa wa saizi ya faili, kwani mara nyingi kuna maeneo yote ambayo hayabadiliki kutoka kwa sura hadi sura (kwa mfano, usuli).

Kanuni iliyotumiwa katika makala, imefunguliwa, na ina maagizo ya jinsi ya kubadilisha picha na picha zako.

Chanzo: mapenzi.com

Kuongeza maoni