Bii ọna kika JPEG ṣe n ṣiṣẹ

Awọn aworan JPEG wa ni ibi gbogbo ni awọn igbesi aye oni-nọmba wa, ṣugbọn lẹhin veneer ti akiyesi yii jẹ awọn algoridimu ti o yọ awọn alaye kuro ti ko ṣe akiyesi si oju eniyan. Abajade jẹ didara wiwo ti o ga julọ ni iwọn faili ti o kere ju - ṣugbọn bawo ni deede ṣe gbogbo rẹ ṣiṣẹ? Jẹ ká wo ohun gangan oju wa ko ri!

Bii ọna kika JPEG ṣe n ṣiṣẹ

O rọrun lati gba fun laini agbara lati fi fọto ranṣẹ si ọrẹ kan ati ki o maṣe yọ ara rẹ lẹnu nipa iru ẹrọ, ẹrọ aṣawakiri tabi ẹrọ ti wọn nlo - ṣugbọn iyẹn kii ṣe ọran nigbagbogbo. Ni ibẹrẹ awọn ọdun 1980, awọn kọnputa le fipamọ ati ṣafihan awọn aworan oni-nọmba, ṣugbọn ọpọlọpọ awọn imọran idije wa nipa ọna ti o dara julọ lati ṣe eyi. O ko le fi aworan ranṣẹ lati kọnputa kan si omiiran ati nireti pe yoo ṣiṣẹ.

Lati yanju iṣoro yii, igbimọ ti awọn amoye lati kakiri agbaye ni a pejọ ni 1986 ti a pe ni "Apapọ Ẹgbẹ ti Photography Amoye»(Ẹgbẹ Awọn Amoye Aworan Ijọpọ, JPEG), ti a da gẹgẹ bi akitiyan apapọ laarin International Organisation for Standardization (ISO) ati International Electrotechnical Commission (IEC), awọn ajọ awọn ajohunše agbaye meji ti o jẹ olú ni Geneva, Switzerland.

Ẹgbẹ kan ti awọn eniyan ti a pe ni JPEG ṣẹda boṣewa funmorawon aworan oni nọmba JPEG ni ọdun 1992. Ẹnikẹni ti o ti lo Intanẹẹti ti ṣe alabapade awọn aworan koodu JPEG. Eyi ni ọna ti o wọpọ julọ lati fi koodu pamọ, firanṣẹ ati tọju awọn aworan. Lati awọn oju-iwe wẹẹbu si imeeli si media media, JPEG ni a lo awọn ọkẹ àìmọye awọn akoko lojumọ — fere ni gbogbo igba ti a ba wo aworan lori ayelujara tabi firanṣẹ. Laisi JPEG, oju opo wẹẹbu yoo kere si awọ, o lọra, ati boya ni awọn aworan ologbo diẹ!

Nkan yii jẹ nipa bi o ṣe le ṣe iyipada aworan JPEG kan. Ni awọn ọrọ miiran, kini o nilo lati ṣe iyipada data fisinuirindigbindigbin ti o fipamọ sori kọnputa sinu aworan ti o han loju iboju. Eyi tọ lati mọ, kii ṣe nitori pe o ṣe pataki lati ni oye imọ-ẹrọ ti a lo lojoojumọ, ṣugbọn nitori nipa ṣiṣi awọn ipele titẹkuro, a ni imọ siwaju sii nipa iwoye ati iran, ati awọn alaye wo ni oju wa ni ifarabalẹ si.

Ni afikun, ṣiṣere pẹlu awọn aworan ni ọna yii jẹ igbadun pupọ.

Bii ọna kika JPEG ṣe n ṣiṣẹ

Wiwo inu JPEG

Lori kọnputa, ohun gbogbo ti wa ni ipamọ bi ọna ti awọn nọmba alakomeji. Ni deede awọn die-die wọnyi, awọn odo ati awọn, ti wa ni akojọpọ ni awọn ẹgbẹ mẹjọ lati ṣe awọn baiti. Nigbati o ba ṣii aworan JPEG kan lori kọnputa, ohunkan ( ẹrọ aṣawakiri kan, ẹrọ ṣiṣe, nkan miiran) gbọdọ pinnu awọn baiti, mu pada aworan atilẹba pada bi atokọ awọn awọ ti o le ṣafihan.

Ti o ba gba lati ayelujara yi dun Fọto ti ologbo ati ṣi i ni olootu ọrọ, iwọ yoo rii opo awọn ohun kikọ ti ko ni ibamu.

Bii ọna kika JPEG ṣe n ṣiṣẹ
Nibi Mo n lo Notepad++ lati ṣayẹwo awọn akoonu inu faili naa, nitori awọn olootu ọrọ deede bi Notepad lori Windows yoo ba faili alakomeji jẹ lẹhin fifipamọ ati pe kii yoo ni itẹlọrun ọna kika JPEG mọ.

Ṣiṣii aworan kan ninu ero isise ọrọ kan daru kọnputa naa, gẹgẹ bi o ṣe daru ọpọlọ rẹ nigbati o ba pa oju rẹ ki o bẹrẹ si ri awọn aaye ti awọ!

Awọn aaye wọnyi ti o rii ni a mọ si awọn phosphenes, ati pe kii ṣe abajade ti itunnu ina tabi hallucination ti ipilẹṣẹ nipasẹ ọkan. Wọn waye nitori ọpọlọ rẹ ro pe eyikeyi awọn ifihan agbara itanna ninu awọn ara opiki ṣe alaye nipa ina. Ọpọlọ nilo lati ṣe awọn arosinu wọnyi nitori ko si ọna lati mọ boya ifihan kan jẹ ohun, iran, tabi nkan miiran. Gbogbo awọn iṣan ara ti o wa ninu ara n gbejade gangan awọn imun itanna kanna. Nipa titẹ titẹ si oju rẹ, o firanṣẹ awọn ifihan agbara ti kii ṣe wiwo, ṣugbọn mu awọn olugba oju ṣiṣẹ, eyiti ọpọlọ rẹ tumọ - ninu ọran yii, ti ko tọ - bi ohun wiwo. O le gangan ri awọn titẹ!

O jẹ ẹrin lati ronu nipa bii awọn kọnputa ti o jọra si ọpọlọ, ṣugbọn o tun jẹ afiwe ti o wulo lati ṣapejuwe iye itumọ data-boya ti a gbe nipasẹ ara nipasẹ awọn ara tabi ti o fipamọ sori kọnputa-da lori bi a ṣe tumọ rẹ. Gbogbo data alakomeji jẹ ti 0s ati 1s, awọn paati ipilẹ ti o le gbe alaye eyikeyi iru. Kọmputa rẹ nigbagbogbo n ṣalaye bi o ṣe le tumọ wọn nipa lilo awọn amọ bii awọn amugbooro faili. Bayi a fi agbara mu lati tumọ wọn bi ọrọ, nitori iyẹn ni ohun ti olootu ọrọ n reti.

Lati ni oye bi o ṣe le ṣe iyipada JPEG, a nilo lati rii awọn ifihan agbara atilẹba funrararẹ - data alakomeji. Eyi le ṣee ṣe nipa lilo olootu hexadecimal, tabi taara lori oju-iwe ayelujara nkan atilẹba! Aworan kan wa, lẹgbẹẹ eyiti ninu aaye ọrọ ni gbogbo awọn baiti rẹ (ayafi fun akọsori), ti a gbekalẹ ni fọọmu eleemewa. O le yi wọn pada, ati awọn iwe afọwọkọ yoo tun-encode ati ki o gbe awọn kan titun aworan lori awọn fly.

Bii ọna kika JPEG ṣe n ṣiṣẹ

O le kọ ẹkọ pupọ nipa ṣiṣere pẹlu olootu yii. Fun apẹẹrẹ, ṣe o le sọ iru aṣẹ ti awọn piksẹli ti wa ni ipamọ bi?

Ohun ajeji nipa apẹẹrẹ yii ni pe iyipada diẹ ninu awọn nọmba ko ni ipa lori aworan rara, ṣugbọn, fun apẹẹrẹ, ti o ba rọpo nọmba 17 pẹlu 0 ni ila akọkọ, fọto naa yoo bajẹ patapata!

Bii ọna kika JPEG ṣe n ṣiṣẹ

Awọn iyipada miiran, gẹgẹbi rirọpo 7 lori laini 1988 pẹlu nọmba 254, yi awọ pada, ṣugbọn awọn piksẹli ti o tẹle nikan.

Bii ọna kika JPEG ṣe n ṣiṣẹ

Boya ohun ajeji julọ ni pe awọn nọmba kan yipada kii ṣe awọ nikan, ṣugbọn tun apẹrẹ ti aworan naa. Yi 70 pada ni laini 12 si 2 ki o wo ila oke ti aworan lati wo kini Mo tumọ si.

Bii ọna kika JPEG ṣe n ṣiṣẹ

Ati pe ohunkohun ti aworan JPEG ti o lo, iwọ yoo rii nigbagbogbo awọn ilana chess aramada wọnyi nigba ṣiṣatunṣe awọn baiti naa.

Nigbati o ba nṣere pẹlu olootu, o nira lati ni oye bi a ṣe ṣẹda fọto lati awọn baiti wọnyi, nitori funmorawon JPEG ni awọn imọ-ẹrọ oriṣiriṣi mẹta, ti a lo ni atẹlera ni awọn ipele. A yoo ṣe iwadi kọọkan lọtọ lati ṣipaya ihuwasi aramada ti a n rii.

Awọn ipele mẹta ti funmorawon JPEG:

  1. Awọ subsampling.
  2. Oye cosine yipada ati iṣapẹẹrẹ.
  3. Ṣiṣe koodu ipari ipari, delta и Huffman

Lati fun ọ ni imọran titobi ti funmorawon, ṣe akiyesi pe aworan ti o wa loke duro fun awọn nọmba 79, tabi nipa 819 KB. Ti a ba tọju rẹ laisi titẹkuro, ẹbun kọọkan yoo nilo awọn nọmba mẹta - fun awọn paati pupa, alawọ ewe ati buluu. Eyi yoo jẹ awọn nọmba 79, tabi isunmọ. 917 KB. Bi abajade ti funmorawon JPEG, faili ikẹhin ti dinku nipasẹ diẹ sii ju awọn akoko 700 lọ!

Ni otitọ, aworan yii le jẹ fisinuirindigbindigbin pupọ diẹ sii. Ni isalẹ wa awọn aworan meji ni ẹgbẹ - Fọto ti o wa ni apa ọtun ti ni fisinuirindigbindigbin si 16 KB, iyẹn ni, awọn akoko 57 kere ju ẹya ti a ko fi sii!

Bii ọna kika JPEG ṣe n ṣiṣẹ

Ti o ba wo ni pẹkipẹki, iwọ yoo rii pe awọn aworan wọnyi ko jọra. Mejeji ti wọn wa ni awọn aworan pẹlu JPEG funmorawon, ṣugbọn awọn ọtun ọkan jẹ Elo kere ni iwọn didun. O tun dabi diẹ buru (wo awọn onigun mẹrin awọ lẹhin). Ti o ni idi JPEG tun npe ni lossy funmorawon; Lakoko ilana funmorawon, aworan naa yipada ati padanu diẹ ninu awọn alaye.

1. Awọ subsampling

Eyi jẹ aworan kan pẹlu ipele akọkọ ti funmorawon nikan ti a lo.

Bii ọna kika JPEG ṣe n ṣiṣẹ
(Ẹya ibaraenisepo - in atilẹba ìwé). Yiyọ ọkan nọmba run gbogbo awọn awọ. Sibẹsibẹ, ti o ba yọ awọn nọmba mẹfa gangan kuro, ko ni ipa lori aworan naa.

Bayi awọn nọmba jẹ diẹ rọrun lati decipher. Eyi fẹrẹ jẹ atokọ ti o rọrun ti awọn awọ, ninu eyiti awọn baiti kọọkan yipada gangan piksẹli kan, ṣugbọn ni akoko kanna o ti jẹ idaji iwọn ti aworan ti a ko fi sii (eyiti yoo gba to 300 KB ni iwọn idinku yii). O le gboju le won idi?

O le rii pe awọn nọmba wọnyi ko ṣe aṣoju awọn paati pupa, alawọ ewe ati buluu, nitori ti a ba rọpo gbogbo awọn nọmba pẹlu awọn odo, a yoo gba aworan alawọ ewe (dipo funfun).

Bii ọna kika JPEG ṣe n ṣiṣẹ

Eyi jẹ nitori awọn baiti wọnyi duro fun Y (imọlẹ),

Bii ọna kika JPEG ṣe n ṣiṣẹ

Cb (buluu ibatan),

Bii ọna kika JPEG ṣe n ṣiṣẹ

ati Cr (pupa ibatan) awọn aworan.

Bii ọna kika JPEG ṣe n ṣiṣẹ

Kilode ti o ko lo RGB? Lẹhinna, eyi ni bii ọpọlọpọ awọn iboju ode oni ṣiṣẹ. Atẹle rẹ le ṣe afihan eyikeyi awọ, pẹlu pupa, alawọ ewe ati buluu, pẹlu awọn iwọn oriṣiriṣi fun ẹbun kọọkan. A gba funfun nipa titan gbogbo awọn mẹta ni imọlẹ kikun, ati dudu nipa titan wọn.

Bii ọna kika JPEG ṣe n ṣiṣẹ

Eyi tun jẹ iru pupọ si bii oju eniyan ṣe n ṣiṣẹ. Awọn olugba awọ ni oju wa ni a npe ni "awọn cones“, ati pe wọn pin si awọn oriṣi mẹta, ọkọọkan wọn ni ifarabalẹ si boya pupa, alawọ ewe, tabi awọn awọ buluu [awọn cones iru S jẹ ifarabalẹ ni awọ-awọ-awọ-awọ-awọ-awọ-awọ-awọ-awọ-awọ-awọ-awọ-awọ-awọ-awọ-awọ-awọ-igbi kukuru-kukuru),M -type - ni alawọ-ofeefee (M lati English Medium - alabọde-igbi), ati L-type - ni ofeefee-pupa (L lati English Long - gun-igbi) awọn ẹya ara ti awọn julọ.Oniranran. Iwaju awọn iru mẹta ti awọn cones (ati awọn ọpa, eyiti o ni itara ni apakan alawọ ewe emerald ti spekitiriumu) fun eniyan ni iran awọ. / isunmọ. itumọ.]. Awọn ọpá, Iru miiran ti photoreceptor ni oju wa, ni o lagbara lati ṣawari awọn iyipada ninu imọlẹ, ṣugbọn o ni itara pupọ si awọ. Oju wa ni nipa 120 milionu ọpá ati ki o nikan 6 million cones.

Eyi ni idi ti oju wa dara julọ ni wiwa awọn iyipada ninu imọlẹ ju awọn iyipada ninu awọ lọ. Ti o ba ya awọ kuro lati imọlẹ, o le yọ awọ diẹ kuro ko si si ẹnikan ti yoo ṣe akiyesi ohunkohun. Iṣapẹrẹ Chroma jẹ ilana ti aṣoju awọn paati awọ ti aworan ni ipinnu kekere ju awọn paati itanna lọ. Ninu apẹẹrẹ loke, piksẹli kọọkan ni paati Y kan pato, ati pe ẹgbẹ kọọkan ti awọn piksẹli mẹrin ni deede Cb kan ati paati Cr kan. Nitorina, aworan naa ni awọn alaye awọ ti o kere ju igba mẹrin ju atilẹba lọ.

YCbCr aaye awọ jẹ lilo kii ṣe ni JPEG nikan. O jẹ ipilẹṣẹ ni 1938 fun awọn eto tẹlifisiọnu. Kii ṣe gbogbo eniyan ni TV awọ kan, nitorinaa iyatọ awọ ati imọlẹ gba gbogbo eniyan laaye lati gba ifihan kanna, ati awọn TV laisi awọ nirọrun lo paati imọlẹ nikan.

Nitorinaa yiyọ nọmba kan kuro lati ọdọ olootu ba gbogbo awọn awọ run patapata. Awọn paati ti wa ni ipamọ ni fọọmu YYYY Cb Cr (ni otitọ, kii ṣe dandan ni aṣẹ yẹn - aṣẹ ibi ipamọ ti wa ni pato ninu akọsori faili). Yiyọ nọmba akọkọ kuro yoo jẹ ki iye akọkọ ti Cb ni akiyesi bi Y, Cr bi Cb, ati ni gbogbogbo iwọ yoo ni ipa domino ti o yi gbogbo awọn awọ ti aworan naa pada.

Sipesifikesonu JPEG ko fi ipa mu ọ lati lo YCbCr. Ṣugbọn ọpọlọpọ awọn faili lo nitori pe o ṣe agbejade awọn aworan isalẹ ti o dara julọ ju RGB. Ṣugbọn o ko ni lati gba ọrọ mi fun. Wo fun ara rẹ ninu tabili ni isalẹ kini iṣapẹrẹ ti paati kọọkan yoo dabi ni RGB ati YCbCr mejeeji.

Bii ọna kika JPEG ṣe n ṣiṣẹ
(Ẹya ibaraenisepo - in atilẹba ìwé).

Yiyọ ti buluu kii ṣe akiyesi bi ti pupa tabi alawọ ewe. Iyẹn jẹ nitori awọn cones miliọnu mẹfa ni oju rẹ, nipa 64% ni ifura si pupa, 32% si alawọ ewe ati 2% si buluu.

Isalẹ ti paati Y (isalẹ osi) ni a rii dara julọ. Paapaa iyipada kekere jẹ akiyesi.

Yiyipada aworan lati RGB si YCbCr ko dinku iwọn faili, ṣugbọn o jẹ ki o rọrun lati wa awọn alaye ti ko han ti o le yọkuro. Ipanu pipadanu waye ni ipele keji. O da lori imọran ti iṣafihan data ni fọọmu fisinupọ diẹ sii.

2. Ọtọ cosine yipada ati iṣapẹẹrẹ

Ipele ti funmorawon ni, fun apakan pupọ julọ, kini JPEG jẹ gbogbo nipa. Lẹhin iyipada awọn awọ si YCbCr, awọn paati ti wa ni fisinuirindigbindigbin leyo, ki a le ki o si koju lori o kan Y paati.

Bii ọna kika JPEG ṣe n ṣiṣẹ
(Ẹya ibaraenisepo - in atilẹba ìwé). Ninu ẹya ibaraenisepo, titẹ lori piksẹli kan yi olootu lọ si laini ti o duro fun. Gbiyanju yiyọ awọn nọmba kuro ni ipari tabi ṣafikun awọn odo diẹ si nọmba kan.

Ni wiwo akọkọ, o dabi titẹkuro buburu pupọ. Awọn piksẹli 100 wa ninu aworan kan, ati pe o gba awọn nọmba 000 lati ṣe aṣoju imọlẹ wọn (awọn paati Y) - iyẹn buru ju titẹkuro ohunkohun rara!

Sibẹsibẹ, ṣe akiyesi pe pupọ julọ awọn nọmba wọnyi jẹ odo. Pẹlupẹlu, gbogbo awọn odo wọnyẹn ni opin awọn laini le yọkuro laisi yiyipada aworan naa. O fẹrẹ to awọn nọmba 26 ti o ku, ati pe eyi fẹrẹ to awọn akoko 000 kere si!

Ipele yii ni aṣiri ti awọn ilana chess ninu. Ko dabi awọn ipa miiran ti a ti rii, hihan awọn ilana wọnyi kii ṣe glitch kan. Wọn jẹ awọn bulọọki ile ti gbogbo aworan naa. Laini kọọkan ti olootu ni awọn nọmba gangan 64, awọn iyeida iyipada cosine ọtọtọ (DCT) ti o baamu awọn kikankikan ti awọn ilana alailẹgbẹ 64.

Awọn ilana wọnyi jẹ ipilẹ ti o da lori idite cosine. Eyi ni ohun ti diẹ ninu wọn dabi:

Bii ọna kika JPEG ṣe n ṣiṣẹ
8 ti 64 awọn aidọgba

Ni isalẹ jẹ aworan ti o nfihan gbogbo awọn ilana 64.

Bii ọna kika JPEG ṣe n ṣiṣẹ
(Ẹya ibaraenisepo - in atilẹba ìwé).

Awọn ilana wọnyi jẹ pataki pataki nitori wọn ṣe ipilẹ ti awọn aworan 8x8. Ti o ko ba mọ algebra laini, eyi tumọ si pe eyikeyi aworan 8x8 le ṣee ṣe lati awọn ilana 64 wọnyi. DCT jẹ ilana ti pinpin awọn aworan si awọn bulọọki 8x8 ati yiyipada bulọọki kọọkan sinu apapọ awọn iye-iye 64 wọnyi.

O dabi idan pe eyikeyi aworan le jẹ ti awọn ilana 64 pato. Sibẹsibẹ, eyi jẹ kanna bi sisọ pe eyikeyi aaye lori Earth le ṣe apejuwe nipasẹ awọn nọmba meji - latitude ati longitude [ti o nfihan awọn hemispheres / approx. itumọ.]. Nigbagbogbo a ma ronu ti oju ilẹ bi onisẹpo meji, nitorinaa a nilo awọn nọmba meji nikan. Aworan 8x8 ni awọn iwọn 64, nitorinaa a nilo awọn nọmba 64.

Ko tii ṣe afihan bi eyi ṣe ṣe iranlọwọ fun wa ni awọn ofin ti funmorawon. Ti a ba nilo awọn nọmba 64 lati ṣe aṣoju aworan 8x8, kilode ti eyi yoo dara ju fifipamọ awọn paati imọlẹ 64 nikan? A ṣe eyi fun idi kanna ti a yipada awọn nọmba RGB mẹta si awọn nọmba YCbCr mẹta: o gba wa laaye lati yọ awọn alaye arekereke kuro.

O nira lati rii pato iru alaye ti o yọkuro ni ipele yii nitori JPEG kan DCT si awọn bulọọki 8x8. Sibẹsibẹ, ko si ẹnikan ti o ṣe idiwọ fun wa lati lo si gbogbo aworan naa. Eyi ni ohun ti DCT ṣe dabi fun paati Y ti a lo si gbogbo aworan:

Bii ọna kika JPEG ṣe n ṣiṣẹ

Diẹ sii ju awọn nọmba 60 le yọkuro lati opin pẹlu fere ko si awọn ayipada akiyesi si fọto naa.

Bii ọna kika JPEG ṣe n ṣiṣẹ

Sibẹsibẹ, ṣe akiyesi pe ti a ba padanu awọn nọmba marun akọkọ, iyatọ yoo han gbangba.

Bii ọna kika JPEG ṣe n ṣiṣẹ

Awọn nọmba ti o wa ni ibẹrẹ jẹ aṣoju awọn iyipada igbohunsafẹfẹ kekere ninu aworan, eyiti oju wa gbe dara julọ. Awọn nọmba si opin tọkasi awọn ayipada ninu awọn igbohunsafẹfẹ giga ti o nira sii lati ṣe akiyesi. Lati “ri ohun ti oju ko le rii,” a le ya sọtọ awọn alaye igbohunsafẹfẹ giga wọnyi nipa yiyọkuro awọn nọmba 5000 akọkọ.

Bii ọna kika JPEG ṣe n ṣiṣẹ

A rii gbogbo awọn agbegbe ti aworan nibiti iyipada nla ti waye lati piksẹli si piksẹli. Awọn oju ologbo, awọn whiskers rẹ, ibora terry ati awọn ojiji ti o wa ni igun apa osi isalẹ duro jade. O le lọ siwaju nipa yiyọkuro awọn nọmba 10 akọkọ:

Bii ọna kika JPEG ṣe n ṣiṣẹ

20 000:

Bii ọna kika JPEG ṣe n ṣiṣẹ

40 000:

Bii ọna kika JPEG ṣe n ṣiṣẹ

60 000:

Bii ọna kika JPEG ṣe n ṣiṣẹ

Awọn alaye igbohunsafẹfẹ giga wọnyi ni a yọkuro nipasẹ JPEG lakoko ipele titẹkuro. Ko si ipadanu ni yiyipada awọn awọ si awọn iyeida DCT. Pipadanu waye ni igbesẹ iṣapẹẹrẹ, nibiti a ti yọkuro igbohunsafẹfẹ-giga tabi awọn iye odo-sunmọ. Nigbati o ba dinku didara fifipamọ JPEG, eto naa pọ si iloro fun nọmba awọn iye ti a yọkuro, eyiti o dinku iwọn faili, ṣugbọn jẹ ki aworan naa pọ si. Ti o ni idi ti aworan ni apakan akọkọ, ti o jẹ igba 57 kere, dabi eyi. Bulọọki 8x8 kọọkan jẹ aṣoju nipasẹ awọn iyeida DCT ti o kere ju ni akawe si ẹya didara ti o ga julọ.

O le ṣẹda iru ipa ti o tutu bi ṣiṣan ṣiṣan ti awọn aworan. O le ṣe afihan aworan blurry kan ti o di alaye siwaju ati siwaju sii bi a ṣe ngbasilẹ diẹ sii ati siwaju sii iyeida.

Nibi, fun igbadun nikan, ni ohun ti o gba ni lilo awọn nọmba 24 nikan:

Bii ọna kika JPEG ṣe n ṣiṣẹ

Tabi o kan 5000:

Bii ọna kika JPEG ṣe n ṣiṣẹ

Gan blurry, sugbon bakan recognizable!

3. Ṣiṣe fifi koodu ipari, delta ati Huffman

Nitorinaa, gbogbo awọn ipele ti funmorawon ti padanu. Ipele ti o kẹhin, ni ilodi si, tẹsiwaju laisi awọn adanu. Ko ṣe paarẹ alaye rẹ, ṣugbọn o dinku iwọn faili ni pataki.

Bawo ni o ṣe le rọ nkan kan laisi sisọ alaye kuro? Fojuinu bawo ni a ṣe le ṣe apejuwe igun dudu dudu ti o rọrun 700 x 437.

JPEG nlo awọn nọmba 5000 fun eyi, ṣugbọn awọn abajade to dara julọ le ṣee ṣe. Ṣe o le fojuinu ero fifi koodu kan ti yoo ṣapejuwe iru aworan ni bi awọn baiti diẹ bi o ti ṣee ṣe?

Ilana ti o kere julọ ti Mo le wa pẹlu nlo mẹrin: mẹta lati ṣe aṣoju awọ kan, ati ẹkẹrin lati tọka iye awọn piksẹli ti awọ naa ni. Imọran ti aṣoju awọn iye atunwi ni ọna isọdọmọ yii ni a pe ni fifi koodu ṣiṣe-ipari. O jẹ asan nitori a le mu data ti a fi koodu pada pada si fọọmu atilẹba rẹ.

Faili JPEG kan pẹlu onigun dudu tobi pupọ ju awọn baiti mẹrin lọ - ranti pe ni ipele DCT, a lo funmorawon si awọn bulọọki piksẹli 4x8. Nitorinaa, ni o kere ju, a nilo olùsọdipúpọ DCT kan fun gbogbo awọn piksẹli 8. A nilo ọkan nitori dipo titoju ọkan DCT olùsọdipúpọ atẹle nipa 64 zeros, ṣiṣe ipari fifi koodu gba wa lati fi nọmba kan ati ki o tọkasi wipe "gbogbo awọn miran ni o wa odo."

Iyipada Delta jẹ ilana kan ninu eyiti baiti kọọkan ni iyatọ ninu iye diẹ, dipo iye pipe. Nitorinaa, ṣiṣatunṣe awọn baiti kan yi awọ ti gbogbo awọn piksẹli miiran pada. Fun apẹẹrẹ, dipo titoju

12 13 14 14 14 13 13 14

A le bẹrẹ pẹlu 12 ati lẹhinna ṣe afihan iye ti a nilo lati ṣafikun tabi yọkuro lati gba nọmba atẹle. Ati pe ọkọọkan yii ni ifaminsi delta gba fọọmu naa:

12 1 1 0 0 -1 0 1

Awọn data iyipada ko kere ju data atilẹba lọ, ṣugbọn o rọrun lati rọpọ. Lilo fifi koodu delta ṣaaju ṣiṣe fifi ẹnọ kọ nkan gigun le ṣe iranlọwọ pupọ lakoko ti o tun jẹ funmorawon laisi pipadanu.

Ifaminsi Delta jẹ ọkan ninu awọn imọ-ẹrọ diẹ ti a lo ni ita awọn bulọọki 8x8. Ninu awọn onisọdipúpọ DCT 64, ọkan jẹ iṣẹ igbi igbagbogbo (awọ to lagbara). O ṣe aṣoju imọlẹ aropin ti bulọọki kọọkan fun awọn paati luma, tabi apapọ blueness fun awọn paati Cb, ati bẹbẹ lọ. Iye akọkọ ti bulọọki DCT kọọkan ni a pe ni iye DC, ati pe iye DC kọọkan jẹ koodu delta pẹlu ọwọ si awọn ti tẹlẹ. Nitorinaa, iyipada imọlẹ ti bulọọki akọkọ yoo kan gbogbo awọn bulọọki.

Ohun ijinlẹ ikẹhin wa: bawo ni yiyipada ẹyọkan ṣe ba gbogbo aworan jẹ patapata? Nitorinaa, awọn ipele titẹkuro ko ni iru awọn ohun-ini bẹ. Idahun si wa ninu akọsori JPEG. Awọn baiti 500 akọkọ ni metadata ni nipa aworan naa - iwọn, giga, ati bẹbẹ lọ, ati pe a ko tii ṣiṣẹ pẹlu wọn sibẹsibẹ.

Laisi akọsori o fẹrẹ jẹ soro (tabi o nira pupọ) lati pinnu JPEG. Yoo dabi ẹnipe Mo n gbiyanju lati ṣapejuwe aworan naa fun ọ, ati pe MO bẹrẹ lati ṣẹda awọn ọrọ lati le fi imọran mi han. Apejuwe naa yoo ṣee ṣe pupọ, nitori Mo le ṣẹda awọn ọrọ pẹlu itumọ gangan ti Mo fẹ sọ, ṣugbọn fun gbogbo eniyan miiran wọn kii yoo ni oye.

O ba ndun Karachi, ṣugbọn ti o ni pato ohun ti o ṣẹlẹ. Aworan JPEG kọọkan jẹ fisinuirindigbindigbin pẹlu awọn koodu kan pato si rẹ. Itumọ koodu ti wa ni ipamọ ninu akọsori. Ilana yii ni a pe ni koodu Huffman ati pe awọn fokabulari ni a pe ni tabili Huffman. Ninu akọsori, tabili ti samisi pẹlu awọn baiti meji - 255 ati lẹhinna 196. Ẹya awọ kọọkan le ni tabili tirẹ.

Awọn iyipada si awọn tabili yoo ni ipa lori eyikeyi aworan. Apẹẹrẹ to dara ni lati yi laini 15 pada si 1.

Bii ọna kika JPEG ṣe n ṣiṣẹ

Eleyi ṣẹlẹ nitori awọn tabili pato bi olukuluku die-die yẹ ki o wa ka. Nitorinaa a ti ṣiṣẹ nikan pẹlu awọn nọmba alakomeji ni fọọmu eleemewa. Ṣugbọn eyi tọju fun wa ni otitọ pe ti o ba fẹ fi nọmba 1 pamọ sinu baiti kan, yoo dabi 00000001, nitori pe baiti kọọkan gbọdọ ni awọn iwọn mẹjọ deede, paapaa ti ọkan ninu wọn ba nilo.

Eyi le jẹ egbin aaye nla ti o ba ni ọpọlọpọ awọn nọmba kekere. Koodu Huffman jẹ ilana ti o gba wa laaye lati sinmi ibeere yii pe nọmba kọọkan gbọdọ gba awọn iwọn mẹjọ. Eyi tumọ si pe ti o ba ri awọn baiti meji:

234 115

Lẹhinna, da lori tabili Huffman, iwọnyi le jẹ awọn nọmba mẹta. Lati jade wọn, o nilo lati kọkọ fọ wọn si awọn ege kọọkan:

11101010 01110011

Lẹhinna a wo tabili lati wa bi a ṣe le ṣe akojọpọ wọn. Fun apẹẹrẹ, eyi le jẹ awọn die-die mẹfa akọkọ, (111010), tabi 58 ni eleemewa, atẹle nipa awọn die-die marun (10011), tabi 19, ati nikẹhin awọn die-die mẹrin ti o kẹhin (0011), tabi 3.

Nitorina, o jẹ gidigidi soro lati ni oye awọn baiti ni ipele yii ti funmorawon. Awọn Bytes ko ṣe aṣoju ohun ti wọn dabi. Emi kii yoo lọ sinu awọn alaye ti ṣiṣẹ pẹlu tabili ni nkan yii, ṣugbọn awọn ohun elo lori atejade yii online jẹ to.

Ẹtan ti o nifẹ ti o le ṣe pẹlu imọ yii ni lati ya akọsori kuro ni JPEG ki o tọju rẹ lọtọ. Ni otitọ, o wa ni pe iwọ nikan ni o le ka faili naa. Facebook ṣe eyi lati ṣe awọn faili paapaa kere si.

Kini ohun miiran le ṣee ṣe ni lati yi tabili Huffman pada pupọ diẹ. Fun awọn miiran yoo dabi aworan fifọ. Ati pe iwọ nikan yoo mọ ọna idan lati ṣe atunṣe.

Jẹ ki a ṣe akopọ: nitorinaa kini o nilo lati pinnu JPEG? Pataki:

  1. Jade awọn tabili (e) Huffman lati akọsori ki o pinnu awọn die-die.
  2. Jade awọn iyeida iyipada cosine ọtọtọ fun awọ kọọkan ati paati itanna fun bulọọki 8 × 8 kọọkan, ṣiṣe gigun-ipari gigun ati awọn iyipada koodu delta.
  3. Darapọ awọn cosines ti o da lori awọn olusọdipúpọ lati gba awọn iye piksẹli fun bulọọki 8x8 kọọkan.
  4. Awọn paati awọ iwọn ti o ba jẹ pe a ti ṣe iṣapẹrẹ (alaye yii wa ninu akọsori).
  5. Ṣe iyipada awọn iye YCbCr abajade fun ẹbun kọọkan si RGB.
  6. Fi aworan han loju iboju!

Iṣẹ to ṣe pataki fun wiwo fọto nirọrun pẹlu ologbo kan! Sibẹsibẹ, ohun ti Mo fẹran nipa rẹ ni pe o fihan bi imọ-ẹrọ JPEG-centric ti eniyan jẹ. O da lori awọn iyasọtọ ti iwoye wa, gbigba wa laaye lati ṣaṣeyọri funmorawon ti o dara julọ ju awọn imọ-ẹrọ aṣa lọ. Ati ni bayi pe a loye bii JPEG ṣe n ṣiṣẹ, a le fojuinu bii awọn imọ-ẹrọ wọnyi ṣe le gbe lọ si awọn agbegbe miiran. Fun apẹẹrẹ, fifi koodu delta ninu fidio le pese idinku pataki ni iwọn faili, nitori pe igbagbogbo gbogbo awọn agbegbe wa ti ko yipada lati fireemu si fireemu (fun apẹẹrẹ, abẹlẹ).

Koodu ti a lo ninu nkan naa, wa ni sisi, o si ni awọn ilana lori bi o ṣe le rọpo awọn aworan pẹlu tirẹ.

orisun: www.habr.com

Fi ọrọìwòye kun