Iyo JPEG fomati inoshanda sei

Mifananidzo yeJPEG inowanikwa kwese kwese muhupenyu hwedu hwedhijitari, asi kuseri kweiyo vhezheni yekuziva kune maalgorithms anobvisa zvinyorwa zvisingaonekwe nemeso emunhu. Mhedzisiro ndiyo yepamusoro yemhando yekuona mudiki faira saizi - asi zvese zvinoshanda sei? Ngationei izvo chaizvo zvisingaonekwe nemaziso edu!

Iyo JPEG fomati inoshanda sei

Zviri nyore kutora sezvineiwo kugona kutumira foto kushamwari uye kusanetsekana kuti ndeipi mudziyo, browser kana sisitimu yekushandisa yavari kushandisa - asi handizvo zvaigara zvakadaro. Pakazosvika makore ekuma1980, makomputa aikwanisa kuchengeta uye kuratidza mifananidzo yedhijitari, asi pakanga paine pfungwa dzakawanda dzaikwikwidzana pamusoro penzira yakanaka yekuita izvi. Iwe haugone kungotumira mufananidzo kubva kune imwe komputa uchienda kune imwe uye unovimba ichashanda.

Kugadzirisa dambudziko iri, komiti yenyanzvi kubva pasirese yakaunganidzwa muna 1986 inonzi "Joint Group of Photography NyanzviΒ» (Joint Photographic Experts Group, JPEG), yakavambwa semubatanidzwa pakati peInternational Organisation for Standardization (ISO) neInternational Electrotechnical Commission (IEC), masangano maviri epasi rose ane muzinda kuGeneva, Switzerland.

Boka revanhu rinonzi JPEG rakagadzira iyo JPEG digital image compression standard muna 1992. Chero ani akashandisa Indaneti angangove asangana neJPEG encoded mifananidzo. Iyi ndiyo nzira yakajairika yekukodha, kutumira uye kuchengeta mifananidzo. Kubva pamapeji ewebhu kuenda kuemail kusvika pasocial media, JPEG inoshandiswa mabhiriyoni enguva pazuva β€” pese patinoona mufananidzo pamhepo kana kuutumira. Pasina JPEG, dandemutande ingadai isina mavara, inononoka, uye pamwe iine katsi mifananidzo mishoma!

Ichi chinyorwa chiri pamusoro pekuita decode mufananidzo weJPEG. Mune mamwe mazwi, chii chinodiwa kushandura data yakamanikidzwa yakachengetwa pakombuta kuita mufananidzo unooneka pachiratidziri. Izvi zvakakosha kuziva, kwete chete nekuti zvakakosha kuti tinzwisise tekinoroji yatinoshandisa zuva rega rega, asiwo nekuti nekuvhura mazinga ekumanikidza, tinodzidza zvakawanda nezve maonero uye kuona, uye kuti ndeapi ruzivo rwemeso edu anonyanya kutarisisa.

Mukuwedzera, kutamba nemifananidzo nenzira iyi kunonakidza zvikuru.

Iyo JPEG fomati inoshanda sei

Kutarisa mukati meJPEG

Pakombiyuta, zvinhu zvose zvinochengetwa senhevedzano yenhamba dzebhinari. Kazhinji mabhiti aya, mazero neamwe, anoiswa mumapoka masere kuita mabhayiti. Paunovhura mufananidzo weJPEG pakombuta, chimwe chinhu (browser, inoshanda sisitimu, chimwe chinhu) chinofanira kusarudza mabytes, kudzorera mufananidzo wepakutanga serunyorwa rwemavara anogona kuratidzwa.

Ukadhawunirodha zvinotapira izvi mufananidzo wekatsi uye uvhure mune chinyorwa edhita, iwe uchaona boka remavara asina kurongeka.

Iyo JPEG fomati inoshanda sei
Pano ndiri kushandisa Notepad ++ kuti ndiongorore zviri mukati mefaira, sezvo vashanduri venguva dzose seNotepad paWindows vachakanganisa bhinari faira mushure mekuchengetedza uye haichazogutsi JPEG fomati.

Kuvhura mufananidzo mune izwi processor kuvhiringa komputa, sezvaunovhiringa uropi hwako paunokwesha maziso ako uye wotanga kuona mavara eruvara!

Aya mavara aunoona anozivikanwa se phosphenes, uye hazvisi mhedzisiro yechiedza chinosimudzira kana kuona kusiririsa kunoitwa nepfungwa. Zvinoitika nekuti uropi hwako hunofunga kuti chero zviratidzo zvemagetsi mutsinga dzemaziso zvinopa ruzivo nezvechiedza. Uropi hunoda kuita fungidziro idzi nekuti hapana nzira yekuziva kana chiratidzo chiri ruzha, chiono, kana chimwewo chinhu. Tsinga dzese dziri mumuviri dzinofambisa zvakangofanana zvemagetsi. Nokushandisa kumanikidza kumaziso ako, unotumira zviratidzo zvisingaonekwi, asi shandisa zvigadziro zveziso, izvo uropi hwako hunodudzira - munyaya iyi, zvisizvo - sechinhu chinooneka. Unogona kunyatsoona kumanikidzwa!

Zvinosetsa kufunga nezvekuti makomputa akafanana sei nehuropi, asi zvakare fananidzo inobatsira kuratidza kuti yakawanda sei iyo data data - ingave inotakurwa nemuviri netsinga kana kuchengetwa pakombuta - zvinoenderana nekududzirwa kwayo. Yese mabhinari data inoumbwa ne0s uye 1s, izvo zvakakosha zvikamu zvinogona kuendesa ruzivo rwechero rudzi. Komputa yako inowanzo fungidzira nzira yekuzvidudzira nekushandisa zvinongedzo zvakaita semafaira ekuwedzera. Zvino isu tinozvimanikidza kuti idudzire sechinyorwa, nekuti ndizvo zvinotarisirwa nemupepeti wezvinyorwa.

Kuti tinzwisise maitiro ekutsanangura JPEG, isu tinoda kuona masaini ekutanga ivo pachavo - iyo binary data. Izvi zvinogona kuitwa uchishandisa hexadecimal editor, kana zvakananga pa chinyorwa chepakutanga peji rewebhu! Pane mufananidzo, padivi payo mune yemavara ndima mabheti ayo ese (kunze kwemusoro), anoratidzwa muchimiro chedesimali. Iwe unogona kuzvishandura, uye script inozonyora zvakare uye inoburitsa mufananidzo mutsva panhunzi.

Iyo JPEG fomati inoshanda sei

Unogona kudzidza zvakawanda nekungotamba nemupepeti uyu. Semuenzaniso, unogona here kutaurira kuti mapikseli anochengeterwa sei?

Chinhu chinoshamisa pamuenzaniso uyu ndechekuti kuchinja dzimwe nhamba hakukanganisi chifananidzo zvachose, asi, semuenzaniso, kana ukatsiva nhamba 17 ne0 mumutsara wekutanga, mufananidzo wacho uchaparadzwa zvachose!

Iyo JPEG fomati inoshanda sei

Dzimwe shanduko, sekutsiva 7 pamutsara 1988 nenhamba 254, inoshandura ruvara, asi chete yemapikisi anotevera.

Iyo JPEG fomati inoshanda sei

Zvichida chinhu chinoshamisa ndechekuti dzimwe nhamba dzinoshandura kwete chete ruvara, asiwo chimiro chemufananidzo. Shandura makumi manomwe mumutsara wechigumi nemaviri kuenda ku70 uye tarisa pamutsara wepamusoro wemufananidzo kuti uone zvandiri kureva.

Iyo JPEG fomati inoshanda sei

Uye zvisinei kuti unoshandisa mufananidzo upi weJPEG, iwe unogara uchiwana izvi zvisinganzwisisike chess mapatani paunenge uchigadzirisa ma byte.

Paunenge uchitamba nemupepeti, zvinonetsa kunzwisisa kuti foto inogadzirwa sei kubva kune aya mabheti, sezvo JPEG compression ine matatu akasiyana matekinoroji, anoiswa sequentially mumatanho. Tichadzidza chimwe nechimwe chakasiyana kuti tiburitse maitiro asinganzwisisike atiri kuona.

Matanho matatu eJPEG compression:

  1. Colour subsampling.
  2. Discrete cosine shanduko uye sampling.
  3. Mhanya kureba encoding, delta ΠΈ Huffman

Kuti ndikupe iwe pfungwa yehukuru hwekumanikidza, cherechedza kuti mufananidzo uri pamusoro unomiririra 79 nhamba, kana nezve 819 KB. Kana isu takaichengeta pasina kudzvanywa, pixel yega yega yaizoda nhamba nhatu - kune iyo tsvuku, yegirini uye yebhuruu zvikamu. Izvi zvingasvika 79 nhamba, kana approx. 917 KB. Somugumisiro wekumanikidzwa kweJPEG, faira yekupedzisira yakaderedzwa nekanopfuura ka700!

Muchokwadi, mufananidzo uyu unogona kuomeswa zvakanyanya. Pazasi pane mifananidzo miviri padivi nepadivi - iyo foto iri kurudyi yakatsikirirwa kusvika 16 KB, kureva, 57 times idiki pane iyo uncompressed vhezheni!

Iyo JPEG fomati inoshanda sei

Kana ukanyatsotarisisa, uchaona kuti mifananidzo iyi haina kufanana. Ose ari maviri mifananidzo ine JPEG compression, asi iyo yekurudyi idiki zvakanyanya muhuwandu. Inotaridzika zvakare yakashata zvishoma (tarisa kumashure kwemavara makwere). Ndicho chikonzero JPEG ichinziwo kurasikirwa kwekumanikidza; Munguva yekumanikidza, chifananidzo chinoshanduka uye chinorasa zvimwe zvinhu.

1. Ruvara subsampling

Heino mufananidzo une chete nhanho yekutanga yekumanikidza yakaiswa.

Iyo JPEG fomati inoshanda sei
(Interactive version - in original zvinyorwa). Kubvisa nhamba imwe chete kunoparadza mavara ose. Nekudaro, kana nhamba nhanhatu chaidzo dzakabviswa, haina kana mhedzisiro pamufananidzo.

Iye zvino nhamba dzave nyore kudzidudzira. Iri rinenge rakareruka runyoro rwemavara, umo imwe neimwe byte inoshandura chaizvo pixel imwe chete, asi panguva imwechete yatova hafu yehukuru hwemufananidzo usina kuomeswa (izvo zvingatora 300 KB muhukuru hwakaderedzwa). Unogona kufungidzira kuti nei?

Iwe unogona kuona kuti idzi nhamba hadzimiriri iyo yakajairwa tsvuku, girini, uye yebhuruu zvikamu, sezvo tikatsiva nhamba dzese ne zero, tinowana mufananidzo wegirinhi (panzvimbo pechena).

Iyo JPEG fomati inoshanda sei

Izvi zvinodaro nekuti mabytes aya anomirira Y (kupenya),

Iyo JPEG fomati inoshanda sei

Cb (hukama hwebhuruu),

Iyo JPEG fomati inoshanda sei

uye Cr (hama yakatsvuka) mifananidzo.

Iyo JPEG fomati inoshanda sei

Wadii kushandisa RGB? Mushure mezvose, aya ndiwo mashandiro emazuva ano masikirini anoshanda. Yako yekutarisa inogona kuratidza chero ruvara, kusanganisira tsvuku, girinhi uye bhuruu, ine akasiyana intensity kune yega pixel. Machena anowanikwa nekubatidza ese ari matatu pakupenya kuzere, uye dema nekudzima.

Iyo JPEG fomati inoshanda sei

Izvi zvakafananawo nemabatiro anoita ziso remunhu. Iwo mavara anogamuchirwa mumaziso edu anonzi "cones", uye akakamurwa kuita marudzi matatu, imwe neimwe inonyatsonzwa kune tsvuku, girinhi, kana yebhuruu mavara [S-mhando makoni anonzwa muviolet-blue (S kubva kuChirungu Short - short-wave spectrum), M -mhando - mune yakasvibira-yero (M kubva kuChirungu Medium - yepakati-wave), uye L-mhando - mune yero-tsvuku (L kubva kuChirungu Yakareba - yakareba-wave) zvikamu zve spectrum. Kuvapo kwemhando nhatu idzi dzemakoni (netsvimbo, dzinonzwa muchikamu chegirinhi cheemerald che spectrum) kunopa munhu ruvara. / approx. transl.]. Zvimiti, imwe mhando yephotoreceptor mumaziso edu, inokwanisa kuona kuchinja kwekupenya, asi inonyanya kukoshesa ruvara. Meso edu ane miriyoni 120 tsvimbo uye 6 miriyoni makoni chete.

Ichi ndicho chikonzero maziso edu ari nani pakuona kuchinja kwekupenya pane kuchinja kwemavara. Kana iwe ukaparadzanisa ruvara kubva pakupenya, unogona kubvisa ruvara rudiki uye hapana anozoona chero chinhu. Chroma subsampling ndiyo nzira yekumiririra zvikamu zveruvara zvemufananidzo pane yakaderera resolution pane yeruvheneko zvikamu. Mumuenzaniso uri pamusoro, pixel yega yega ine Y chikamu chimwe chete, uye rimwe nerimwe boka remapikisi mana rine Cb imwechete uye Cr chimwe chikamu. Nokudaro, mufananidzo wacho une ruzivo rushoma rwemavara rukapetwa kana kupfuura rwepakutanga.

Iyo YCbCr ruvara nzvimbo inoshandiswa kwete muJPEG chete. Yakatangwa muna 1938 nokuda kwezvirongwa zveterevhizheni. Haasi munhu wese ane ruvara rweTV, saka kupatsanura ruvara uye kupenya kwakabvumira munhu wese kuwana chiratidzo chimwe chete, uye maTV asina ruvara aingoshandisa chete chinopenya.

Saka kubvisa nhamba imwe kubva kumupepeti kunoparadza zvachose mavara ese. Izvo zvikamu zvakachengetwa mufomu Y Y Y Y Cb Cr (chaizvoizvo, kwete hazvo muhurongwa uhu - iyo yekuchengetedza yakatsanangurwa mumusoro wefaira). Kubvisa nhamba yekutanga kuchaita kuti kukosha kwekutanga kweCb kuonekwe seY, Cr seCb, uye kazhinji iwe uchava nedomino effect inoshandura mavara ose emufananidzo.

Iyo JPEG yakatarwa haikumanikidzi kushandisa YCbCr. Asi mafaera mazhinji anoishandisa nekuti inoburitsa zvirinani mifananidzo yakaderedzwa pane RGB. Asi haufaniri kutora shoko rangu pazviri. Zvionere wega mutafura iri pazasi kuti kusampling kwechimwe nechimwe chikamu kuchaita sei muRGB neYCbCr.

Iyo JPEG fomati inoshanda sei
(Interactive version - in original zvinyorwa).

Kubviswa kwebhuruu hakuoneki seye tsvuku kana girini. Imhaka yekuti mamiriyoni matanhatu emakoni ari mumaziso ako, angangoita 64% anonzwa kutsvuka, 32% kugirinhi uye 2% kune bhuruu.

Kuderedzwa kwechikamu cheY (pazasi kuruboshwe) kunoonekwa zvakanyanya. Kunyange kuchinja kuduku kunooneka.

Kushandura chifananidzo kubva kuRGB kuenda kuYCbCr hakuderedze saizi yefaira, asi zvinoita kuti zvive nyore kuwana zvishoma zvinooneka izvo zvinogona kubviswa. Lossy compression inoitika muchikamu chechipiri. Izvo zvakavakirwa pane zano rekupa data mune imwe inodzvinyirira fomu.

2. Discrete cosine shanduko uye sampling

Iyi nhanho yekumanikidza ndeye, kune yakawanda chikamu, iyo JPEG iri pamusoro. Mushure mekushandura mavara kuita YCbCr, zvikamu zvinomisikidzwa chimwe nechimwe, saka tinogona kuzotarisa pane chikamu cheY chete. Uye izvi ndizvo zvinotaridzika sechikamu cheY mushure mekushandisa layer iyi.

Iyo JPEG fomati inoshanda sei
(Interactive version - in original zvinyorwa). Mune inopindirana vhezheni, kudzvanya papixel kunopeta mupepeti kumutsetse unoimiririra. Edza kubvisa nhamba kubva kumagumo kana kuwedzera mazero mashoma kune imwe nhamba.

Pakutanga kuona, zvinoita sekumanikidza kwakashata. Pane 100 pixels mumufananidzo, uye zvinotora 000 manhamba kumiririra kupenya kwadzo (Y-zvikamu) - izvo zvakaipa pane kumanikidza hapana zvachose!

Nekudaro, cherechedza kuti zhinji dzenhamba idzi zero. Uyezve, ese mazero pamagumo emitsara anogona kubviswa pasina kushandura mufananidzo. Kwasara nhamba dzinenge 26 000, uye izvi zvishoma neka4!

Iyi nhanho ine chakavanzika chechess mapatani. Kusiyana nemimwe mhedzisiro yataona, kutaridzika kwemapateni aya hakusi glitch. Ndivo matombo ekuvaka echifananidzo chose. Mutsara wega wega wemupepeti une chaizvo 64 manhamba, discrete cosine shanduko (DCT) coefficients inoenderana nekusimba kwe64 yakasarudzika mapatani.

Aya mapatani anoumbwa zvichibva pane cosine plot. Hezvino izvo zvimwe zvacho zvinotaridzika:

Iyo JPEG fomati inoshanda sei
8 kubva pa64 zvisingaite

Pazasi pane mufananidzo unoratidza ese makumi matanhatu nemana mapatani.

Iyo JPEG fomati inoshanda sei
(Interactive version - in original zvinyorwa).

Aya mapatani akanyanya kukosha nekuti anoumba hwaro hwemifananidzo 8x8. Kana usina kujaira mutsara algebra, izvi zvinoreva kuti chero mufananidzo we8x8 unogona kugadzirwa kubva pamapatani makumi matanhatu nemana aya. DCT inzira yekukamura mifananidzo kuita 64x8 mabhuroko uye kushandura bhuroko rega rega kuita musanganiswa weaya makumi matanhatu nemana coefficients.

Zvinoita semashiripiti kuti chero mufananidzo unogona kuumbwa ne64 chaiwo mapatani. Zvisinei, izvi zvakafanana nekutaura kuti chero nzvimbo iri paNyika inogona kutsanangurwa nenhamba mbiri - latitude uye longitude [inoratidza hemispheres / approx. transl.]. Tinowanzo funga pamusoro pePasi semaviri-dimensional, saka tinongoda nhamba mbiri chete. Mufananidzo we8x8 une 64 dimensions, saka tinoda 64 manhamba.

Hazvisati zvanyatsojeka kuti izvi zvinotibatsira sei panyaya yekumanikidza. Kana tichida manhamba makumi matanhatu nemana ekumiririra mufananidzo we64x8, nei izvi zvingave nani pane kungochengeta zvikamu makumi matanhatu nemana ekupenya? Isu tinoita izvi nechikonzero chimwe chete icho takashandura nhamba nhatu dzeRGB kuita nhamba nhatu dzeYCbCr: zvinotibvumira kubvisa zvisizvo.

Zvakaoma kuti uone chaizvo kuti ndeupi ruzivo rwakabviswa panguva ino nekuti JPEG inoshandisa DCT kune 8x8 blocks. Zvisinei, hapana anotirambidza kuishandisa kumufananidzo wose. Hezvino izvo DCT inotaridzika seY chikamu chakaiswa pamufananidzo wese:

Iyo JPEG fomati inoshanda sei

Anopfuura zviuru makumi matanhatu manhamba anogona kubviswa kubva kumagumo pasina kana shanduko inooneka pamufananidzo.

Iyo JPEG fomati inoshanda sei

Nekudaro, cherechedza kuti kana tikasiya nhamba shanu dzekutanga, mutsauko uchave pachena.

Iyo JPEG fomati inoshanda sei

Nhamba dzekutanga dzinomiririra shanduko yakaderera mumufananidzo, iyo maziso edu anotora zvakanyanya. Nhamba dzakananga kumagumo dzinoratidza shanduko mumafafitera epamusoro ayo anonetsa kuona. Ku "kuona izvo ziso risingaone," tinogona kupatsanura aya epamusoro frequency ruzivo nekubvisa nhamba dzekutanga 5000.

Iyo JPEG fomati inoshanda sei

Isu tinoona nzvimbo dzese dzechifananidzo uko shanduko huru inoitika kubva pixel kuenda pixel. Maziso ekatsi, ndebvu dzake, gumbeze reterry uye mimvuri iri mukona yezasi yekuruboshwe zvinobuda pachena. Iwe unogona kuenda mberi nekubvisa nhamba dzekutanga dzegumi:

Iyo JPEG fomati inoshanda sei

20:

Iyo JPEG fomati inoshanda sei

40:

Iyo JPEG fomati inoshanda sei

60:

Iyo JPEG fomati inoshanda sei

Aya ma-high-frequency details anobviswa neJPEG panguva yekumanikidza. Hapana kurasikirwa mukushandura mavara kuDCT coefficients. Kurasikirwa kunoitika padanho resampling, uko yakakwirira-frequency kana pedyo-zero kukosha kunobviswa. Paunodzikisa JPEG yekuchengetedza mhando, chirongwa chinowedzera chikumbaridzo chehuwandu hwehuwandu hwakabviswa, izvo zvinoderedza saizi yefaira, asi inoita kuti mufananidzo uwedzere pixelated. Ndosaka mufananidzo uri muchikamu chekutanga, waive mudiki ka57, wakaita seizvi. Imwe neimwe 8x8 block yaimiririrwa neashoma kwazvo maDCT coefficients achienzaniswa nemhando yepamusoro vhezheni.

Iwe unogona kugadzira inotonhorera mhedzisiro sekuyerera zvishoma nezvishoma kwemifananidzo. Iwe unogona kuratidza mufananidzo usina kujeka uyo unowedzera kutsanangurwa sezvo akawanda uye akawanda coefficients achitorwa.

Pano, zvekunakidzwa chete, ndizvo zvaunowana uchishandisa 24 nhamba chete:

Iyo JPEG fomati inoshanda sei

Kana kuti 5000 chete:

Iyo JPEG fomati inoshanda sei

Yakanyanya blurry, asi neimwe nzira inozivikanwa!

3. Mhanya kureba encoding, delta uye Huffman

Kusvika parizvino, ese matanho ekumanikidza anga arasikirwa. Nhanho yekupedzisira, pane zvinopesana, inoenderera pasina kurasikirwa. Iyo haibvise ruzivo, asi inoderedza zvakanyanya saizi yefaira.

Unogona sei kumanikidza chimwe chinhu pasina kurasa ruzivo? Fungidzira kuti tingatsanangura sei rectangle nhema 700 x 437.

JPEG inoshandisa nhamba dze5000 pane izvi, asi mhedzisiro iri nani inogona kuwanikwa. Unogona here kufungidzira chirongwa che encoding chinotsanangura mufananidzo wakadaro mumabheti mashoma sezvinobvira?

Iyo diki hurongwa yandinogona kuuya nayo inoshandisa ina: matatu kumiririra ruvara, uye yechina kuratidza mangani mapikseli eruvara. Pfungwa yekumiririra kudzokorora kukosha nenzira iyi yakapfupikiswa inonzi run-length encoding. Izvo hazvina kurasikirwa nekuti isu tinogona kudzoreredza iyo encoded data kune yayo yekutanga fomu.

Faili reJPEG rine rectangle dema rakakura kudarika 4 bytes - rangarira kuti padanho reDCT, kudzvanywa kunoiswa ku8x8 pixel blocks. Naizvozvo, padikidiki, isu tinoda imwechete DCT coefficient pamapikisi makumi matanhatu nemana ega ega. Tinoda imwe nekuti pachinzvimbo chekuchengetedza imwe DCT coefficient inoteverwa ne64 zero, run length encoding inotibvumira kuchengeta nhamba imwe uye kuratidza kuti "mamwe ese mazero."

Delta encoding inzira umo imwe neimwe byte ine mutsauko kubva kune imwe kukosha, pane iyo yakazara kukosha. Naizvozvo, kugadzirisa mamwe mabyte anoshandura ruvara rwemamwe ese mapixels. Somuenzaniso, pane kuchengeta

12 13 14 14 14 13 13 14

Tinogona kutanga na12 tozongoratidza kuti tinoda kuwedzera kana kutapudza kuti tiwane nhamba inotevera. Uye iyi inoteedzana mu delta coding inotora fomu:

12 1 1 0 0 -1 0 1

Iyo data yakashandurwa haisi diki pane yekutanga data, asi zviri nyore kuimanikidza. Kuisa delta encoding usati wamhanya kureba encoding kunogona kubatsira zvakanyanya uchiri kusarasikirwa nekumanikidza.

Delta coding ndeimwe yemaitiro mashoma anoshandiswa kunze kwe8x8 zvidhinha. Pakati pe64 DCT coefficients, imwe inongova yenguva dzose inotenderera (solid color). Inomiririra kupenya kweavhareji yevhavha yega yega yezvikamu zveluma, kana avhareji yeblueness yezvikamu zveCb, zvichingodaro. Iko kukosha kwekutanga kweyega yega DCT block inodaidzwa kukosha kweDC, uye yega yega kukosha kweDC ndeye delta encoded maererano neyakapfuura. Naizvozvo, kushandura kupenya kweyekutanga block kuchakanganisa ese mabhuraki.

Chakavanzika chekupedzisira chinoramba chiripo: sei kushandura imwe chete kunoparadza zvachose mufananidzo wese? Parizvino, mazinga ekumanikidza anga asina zvinhu zvakadaro. Mhinduro iri muJPEG musoro. Ma500 bytes ekutanga ane metadata yemufananidzo - hupamhi, urefu, nezvimwewo, uye hatisati tashanda navo.

Pasina musoro zvinenge zvisingaite (kana zvakanyanya kuoma) kusarudza JPEG. Zvichaita sekunge ndiri kuedza kukutsanangurira mufananidzo wacho, uye ndava kutanga kugadzira mazwi kuti ndibudise maonero angu. Rondedzero yacho ingangove yakapfupikiswa, sezvo ini ndichigona kugadzira mazwi ane chaizvo chirevo chandinoda kuburitsa, asi kune wese wese haazoite musoro.

Zvinoita sehupenzi, asi ndizvo chaizvo zvinoitika. Imwe neimwe JPEG mufananidzo inomanikidzwa nemakodhi akananga kwairi. Duramazwi rekodhi rinochengetwa mumusoro. Iyi nzira inodaidzwa kunzi Huffman kodhi uye mazwi anonzi Huffman tafura. Mumusoro, tafura inotaridzwa nemabhayiti maviri - 255 uyezve 196. Chikamu chega chega chinogona kuva netafura yayo.

Kuchinja kumatafura kuchakanganisa zvakanyanya chero mufananidzo. Muenzaniso wakanaka ndewekuchinja mutsara wechi15 kuenda ku1.

Iyo JPEG fomati inoshanda sei

Izvi zvinoitika nekuti matafura anotsanangura kuti mabhiti ega ega anofanira kuverengwa sei. Parizvino takangoshanda nenhamba dzebhinari muchimiro chedesimali. Asi izvi zvinotivanzira chokwadi chekuti kana iwe uchida kuchengeta nhamba 1 mubyte, ichaita senge 00000001, sezvo yega yega inofanira kunge iine mabheti masere, kunyangwe kana imwe chete yadzo ichidiwa.

Uku kungangove kutambisa hombe kwenzvimbo kana uine nhamba diki zhinji. Huffman kodhi inyanzvi inotibvumira kuzorodza ichi chinodiwa kuti nhamba yega yega inofanirwa kutora mabhiti masere. Izvi zvinoreva kuti kana ukaona mabhayiti maviri:

234 115

Zvino, zvichienderana netafura yeHuffman, idzi dzinogona kuva nhamba nhatu. Kuti uzvibudise, unofanirwa kutanga wazvipatsanura kuita zvidimbu zvega:

11101010 01110011

Tinobva tatarisa patafura kuti tione kuti tingaaronga sei. Semuenzaniso, aya anogona kunge ari mabhiti matanhatu ekutanga, (111010), kana makumi mashanu neshanu mudesimali, achiteverwa nemabhiti mashanu (58), kana 10011, uye pakupedzisira mana ekupedzisira (19), kana 0011.

Naizvozvo, zvakanyanya kuoma kunzwisisa mabheti panguva ino yekumanikidza. Mabhayiti haamiriri zvavanoita. Ini handisi kuzopinda mune zvakadzama zvekushanda netafura mune ino chinyorwa, asi zvinhu panyaya iyi online yakakwana.

Imwe nzira inofadza yaunogona kuita neruzivo urwu ndeyekuparadzanisa musoro kubva kuJPEG uye kuichengeta zvakasiyana. Muchokwadi, zvinoitika kuti iwe chete ndiwe unogona kuverenga iyo faira. Facebook inoita izvi kuita kuti mafaera ave madiki.

Chii chimwe chingaitwe kushandura tafura yeHuffman zvishoma. Kune vamwe ichaita semufananidzo wakaputsika. Uye iwe chete uchaziva nzira yemashiripiti yekugadzirisa.

Ngatipei muchidimbu: saka chii chinodiwa kuti utore JPEG? Zvinodikanwa:

  1. Bvisa iyo Huffman tafura (s) kubva kumusoro uye decode mabits.
  2. Bvisa iyo discrete cosine inoshandura coefficients kune yega yega ruvara uye luminance chikamu cheimwe neimwe 8x8 block, ichiita inverse run-urefu uye delta encoding inoshandura.
  3. Sanganisa cosines yakavakirwa pacoefficients kuti uwane pixel kukosha kune yega 8x8 block.
  4. Scale color color kana subsampling yakaitwa (iyi ruzivo ruri mumusoro).
  5. Shandura mhedzisiro YCbCr kukosha kwepixel yega yega kuita RGB.
  6. Ratidza mufananidzo pachiratidziro!

Basa rakakomba rekungoona mufananidzo nekatsi! Nekudaro, chandinoda nezvacho ndechekuti inoratidza kuti tekinoroji yeJPEG yemunhu. Zvinobva pane zvakasarudzika zvemaonero edu, zvichitibvumira kuwana zvirinani kudzvanya pane zvakajairika matekinoroji. Uye zvino zvatiri kunzwisisa kuti JPEG inoshanda sei, tinogona kufungidzira kuti tekinoroji idzi dzinogona kutamirwa sei kune dzimwe nzvimbo. Semuenzaniso, delta encoding muvhidhiyo inogona kupa kuderedzwa kwakakosha muhukuru hwefaira, sezvo paine kazhinji nzvimbo dzese dzisingashanduke kubva pafuremu kuenda kune furemu (semuenzaniso, kumashure).

Kodhi yakashandiswa muchinyorwa, yakavhurika, uye ine mirayiridzo yekuti ungatsiva sei mifananidzo yacho neyako.

Source: www.habr.com

Voeg