Momwe mtundu wa JPEG umagwirira ntchito

Zithunzi za JPEG zili ponseponse m'miyoyo yathu ya digito, koma kumbuyo kwa chidziwitso ichi pali ma aligorivimu omwe amachotsa zambiri zomwe sizikuwoneka ndi maso. Zotsatira zake ndi mawonekedwe apamwamba kwambiri pamafayilo ang'onoang'ono - koma kodi zonsezi zimagwira ntchito bwanji? Tiyeni tiwone zomwe maso athu sakuwona!

Momwe mtundu wa JPEG umagwirira ntchito

Ndiosavuta kutenga mopepuka kuthekera kutumiza chithunzi kwa mnzako osadandaula za chipangizo, msakatuli kapena makina ogwiritsira ntchito omwe akugwiritsa ntchito - koma sizinali choncho nthawi zonse. Pofika kumayambiriro kwa zaka za m’ma 1980, makompyuta ankatha kusunga ndi kusonyeza zithunzi za digito, koma panali malingaliro ambiri opikisana okhudza njira yabwino yochitira zimenezi. Simungangotumiza chithunzi kuchokera pakompyuta kupita kwina ndikuyembekeza kuti chitha kugwira ntchito.

Kuti athetse vutoli, komiti ya akatswiri padziko lonse lapansi inasonkhana mu 1986 yotchedwa ".Gulu Lophatikizana la Akatswiri Ojambula Zithunzi» (Joint Photographic Experts Group, JPEG), yomwe idakhazikitsidwa ngati mgwirizano pakati pa International Organisation for Standardization (ISO) ndi International Electrotechnical Commission (IEC), mabungwe awiri apadziko lonse lapansi omwe ali ku Geneva, Switzerland.

Gulu la anthu lotchedwa JPEG lidapanga JPEG digito compression standard mu 1992. Aliyense amene wagwiritsa ntchito intaneti mwina wakumana ndi zithunzi zojambulidwa ndi JPEG. Iyi ndi njira yodziwika kwambiri yolembera, kutumiza ndi kusunga zithunzi. Kuchokera pamasamba mpaka maimelo mpaka malo ochezera a pa Intaneti, JPEG imagwiritsidwa ntchito mabiliyoni ambiri patsiku—nthawi zonse tikamaona chithunzi pa intaneti kapena kuchitumiza. Popanda JPEG, intaneti ikadakhala yocheperako, yocheperako, komanso kukhala ndi zithunzi zochepa za amphaka!

Nkhaniyi ikukhudza momwe mungasinthire chithunzi cha JPEG. M'mawu ena, zomwe zimafunika kuti mutembenuzire deta yothinikizidwa yomwe imasungidwa pakompyuta kukhala chithunzi chomwe chimawonekera pazenera. Izi ndizoyenera kudziwa, osati chifukwa ndikofunikira kumvetsetsa ukadaulo womwe timagwiritsa ntchito tsiku lililonse, komanso chifukwa potsegula milingo yoponderezedwa, timaphunzira zambiri za kuzindikira ndi masomphenya, komanso zomwe maso athu amakhudzidwa kwambiri.

Kuphatikiza apo, kusewera ndi zithunzi mwanjira iyi ndikosangalatsa kwambiri.

Momwe mtundu wa JPEG umagwirira ntchito

Kuyang'ana mkati mwa JPEG

Pa kompyuta, chirichonse chimasungidwa ngati ndondomeko ya manambala a binary. Nthawi zambiri tizidutswa, ziro ndi amodzi, amasanjidwa m'magulu asanu ndi atatu kuti apange ma byte. Mukatsegula chithunzi cha JPEG pa kompyuta, chinachake (msakatuli, makina opangira opaleshoni, chinthu china) chiyenera kufotokoza ma byte, kubwezeretsanso chithunzi choyambirira monga mndandanda wa mitundu yomwe ingasonyezedwe.

Ngati mutsitsa izi zokoma chithunzi cha mphaka ndikutsegula mu mkonzi wa zolemba, muwona gulu la zilembo zosagwirizana.

Momwe mtundu wa JPEG umagwirira ntchito
Apa ndikugwiritsa ntchito Notepad ++ kuti ndifufuze zomwe zili mufayiloyo, popeza olemba nthawi zonse monga Notepad pa Windows adzawononga fayilo ya binary atasunga ndipo sichidzakwaniritsanso mtundu wa JPEG.

Kutsegula chithunzi mu purosesa ya mawu kumasokoneza kompyuta, monga momwe mumasokoneza ubongo wanu pamene mukupukuta m'maso ndikuyamba kuona madontho amitundu!

Madontho awa mukuwona amadziwika kuti phosphenes, ndipo sizidzabwera chifukwa cha kusonkhezeredwa ndi kuwala kapena kuyerekezera zinthu m’maganizo kopangidwa ndi maganizo. Zimachitika chifukwa ubongo wanu umaganiza kuti zizindikiro zilizonse zamagetsi mu mitsempha ya optic zimapereka chidziwitso chokhudza kuwala. Ubongo umayenera kupanga malingaliro awa chifukwa palibe njira yodziwira ngati chizindikiro ndi phokoso, masomphenya, kapena china. Mitsempha yonse m'thupi imafalitsa chimodzimodzi mphamvu zamagetsi. Pogwiritsa ntchito kukakamiza m'maso mwanu, mumatumiza zizindikiro zomwe sizikuwoneka, koma yambitsani zolandilira diso, zomwe ubongo wanu umatanthauzira - pamenepa, molakwika - ngati chinachake chowoneka. Mutha kuwona kupsinjika!

Ndizoseketsa kuganiza momwe makompyuta amafanana ndi ubongo, komanso ndi fanizo lothandiza kufotokoza kuchuluka kwa tanthauzo la data - kaya kunyamulidwa m'thupi ndi mitsempha kapena kusungidwa pakompyuta - zimatengera kutanthauzira kwake. Deta yonse ya binary imapangidwa ndi 0s ndi 1s, zigawo zoyambira zomwe zimatha kupereka chidziwitso chamtundu uliwonse. Kompyuta yanu nthawi zambiri imadziwa momwe mungawatanthauzire pogwiritsa ntchito zizindikiro monga zowonjezera mafayilo. Tsopano tikukakamiza kuti liwatanthauzire ngati malemba, chifukwa ndi zomwe mkonzi wa malemba amayembekezera.

Kuti timvetse momwe tingasinthire JPEG, tiyenera kuwona zizindikiro zoyambirira - deta ya binary. Izi zitha kuchitika pogwiritsa ntchito hexadecimal editor, kapena mwachindunji tsamba loyamba latsamba lawebusayiti! Pali chithunzi, pafupi ndi chomwe m'malemba onse ali ndi ma byte ake (kupatula mutu), operekedwa mu mawonekedwe a decimal. Mutha kuzisintha, ndipo script idzayambiranso ndikupanga chithunzi chatsopano pa ntchentche.

Momwe mtundu wa JPEG umagwirira ntchito

Mutha kuphunzira zambiri pongosewera ndi mkonzi uyu. Mwachitsanzo, kodi munganene kuti ma pixel amasungidwa bwanji?

Chodabwitsa pa chitsanzo ichi ndikuti kusintha manambala ena sikukhudza chithunzicho, koma, mwachitsanzo, ngati mutasintha nambala 17 ndi 0 pamzere woyamba, chithunzicho chidzawonongeka kwathunthu!

Momwe mtundu wa JPEG umagwirira ntchito

Zosintha zina, monga kusintha 7 pamzere wa 1988 ndi nambala 254, zimasintha mtundu, koma ma pixel otsatirawa.

Momwe mtundu wa JPEG umagwirira ntchito

Mwina chodabwitsa kwambiri ndi chakuti manambala ena amasintha osati mtundu wokha, komanso mawonekedwe a chithunzicho. Sinthani 70 mu mzere 12 mpaka 2 ndikuyang'ana pamzere wapamwamba wa chithunzi kuti muwone zomwe ndikutanthauza.

Momwe mtundu wa JPEG umagwirira ntchito

Ndipo ziribe kanthu kuti mumagwiritsa ntchito chithunzi chanji cha JPEG, nthawi zonse mumapeza mawonekedwe odabwitsa awa mukamakonza ma byte.

Mukamasewera ndi mkonzi, zimakhala zovuta kumvetsetsa momwe chithunzi chimapangidwiranso kuchokera ku mabayiti awa, popeza kuphatikizika kwa JPEG kumakhala ndi matekinoloje atatu osiyanasiyana, omwe amagwiritsidwa ntchito motsatizana. Tiphunzira chilichonse padera kuti tiwulule zachinsinsi zomwe tikuwona.

Magawo atatu a JPEG compression:

  1. Mtundu wa subsampling.
  2. Kusintha kwapadera kwa cosine ndi kuyesa.
  3. Kuthamanga kwa encoding kutalika, delta и Huffman

Kuti ndikupatseni lingaliro la kukula kwa kukakamiza, zindikirani kuti chithunzi pamwambapa chikuyimira manambala 79, kapena pafupifupi 819 KB. Ngati titasunga popanda kukakamiza, pixel iliyonse ingafunike manambala atatu - pazigawo zofiira, zobiriwira ndi zabuluu. Izi zitha kukhala manambala 79, kapena pafupifupi. Zithunzi za 917 KB Chifukwa cha kupsinjika kwa JPEG, fayilo yomaliza idachepetsedwa ndi nthawi zopitilira 700!

M'malo mwake, chithunzichi chikhoza kupanikizidwa kwambiri. Pansipa pali zithunzi ziwiri mbali ndi mbali - chithunzi chakumanja chapanikizidwa ku 16 KB, ndiko kuti, kucheperako ka 57 kuposa mtundu wosakanizidwa!

Momwe mtundu wa JPEG umagwirira ntchito

Mukayang'anitsitsa, mudzawona kuti zithunzizi sizili zofanana. Onsewa ndi zithunzi ndi JPEG compression, koma yoyenera ndi yaing'ono kwambiri mu voliyumu. Imawonekanso yoyipa pang'ono (onani mabwalo amtundu wakumbuyo). Ndicho chifukwa JPEG amatchedwanso lossy psinjika; Panthawi yoponderezedwa, chithunzicho chimasintha ndikutaya zina.

1. Kutengera mtundu

Pano pali chithunzi chomwe chili ndi mulingo woyamba wokha wa kukanikiza.

Momwe mtundu wa JPEG umagwirira ntchito
(Interactive version - in choyambirira zolemba). Kuchotsa nambala imodzi kumawononga mitundu yonse. Komabe, ngati nambala zisanu ndi imodzi ndendende zichotsedwa, zilibe kanthu pa chithunzicho.

Tsopano manambalawo ndi osavuta kumasulira. Uwu ndi mndandanda wamitundu yosavuta, momwe baiti iliyonse imasintha ndendende pixel imodzi, koma nthawi yomweyo ili kale theka la kukula kwa chithunzi chosakanizidwa (chomwe chingatenge pafupifupi 300 KB mu kukula kocheperako). Kodi mungaganizire chifukwa chake?

Mutha kuwona kuti manambalawa sakuyimira magawo ofiira, obiriwira, ndi abuluu, chifukwa tikasintha manambala onse ndi ziro, tidzapeza chithunzi chobiriwira (m'malo moyera).

Momwe mtundu wa JPEG umagwirira ntchito

Izi ndichifukwa choti mabayiti awa amayimira Y (kuwala),

Momwe mtundu wa JPEG umagwirira ntchito

Cb (mawonekedwe abuluu),

Momwe mtundu wa JPEG umagwirira ntchito

ndi Cr (kufiira kwachibale) zithunzi.

Momwe mtundu wa JPEG umagwirira ntchito

Bwanji osagwiritsa ntchito RGB? Kupatula apo, umu ndi momwe zowonera zambiri zamakono zimagwirira ntchito. Chowunikira chanu chimatha kuwonetsa mtundu uliwonse, kuphatikiza wofiira, wobiriwira ndi wabuluu, wokhala ndi mphamvu zosiyanasiyana pa pixel iliyonse. White imapezeka poyatsa zonse zitatu pakuwala kokwanira, ndi zakuda pozimitsa.

Momwe mtundu wa JPEG umagwirira ntchito

Izinso zikufanana kwambiri ndi momwe diso la munthu limagwirira ntchito. Ma receptor amtundu m'maso mwathu amatchedwa "cones", ndipo amagawidwa m'mitundu itatu, iliyonse yomwe imakhala yovuta kwambiri kumitundu yofiira, yobiriwira, kapena yabuluu [Ma cones amtundu wa S amamva bwino mumtundu wa violet-blue (S kuchokera ku English Short - short-wave spectrum), M -mtundu - mu wobiriwira-wachikasu (M kuchokera ku English Medium - medium-wave), ndi L-mtundu - wachikasu-wofiira (L kuchokera ku English Long - long wave) mbali za sipekitiramu. Kukhalapo kwa mitundu itatu ya ma cones (ndi ndodo, zomwe zimakhala zomveka mu gawo la emerald lobiriwira) zimapatsa munthu masomphenya amtundu. / pafupifupi. kumasulira]. Mitengo, mtundu wina wa photoreceptor m’maso mwathu, umatha kuzindikira kusintha kwa kuwala, koma umakhudzidwa kwambiri ndi mtundu. Maso athu ali ndi ndodo pafupifupi 120 miliyoni ndi ma cones 6 miliyoni okha.

Ichi ndichifukwa chake maso athu amatha kuzindikira kusintha kwa kuwala kusiyana ndi kusintha kwa mtundu. Ngati mutalekanitsa mtundu ndi kuwala, mukhoza kuchotsa mtundu pang'ono ndipo palibe amene angazindikire kalikonse. Chroma subsampling ndi njira yoyimira zigawo zamtundu wa chithunzi pamlingo wocheperako kuposa zida zowunikira. Muchitsanzo pamwambapa, pixel iliyonse imakhala ndi gawo limodzi la Y, ndipo gulu lililonse la ma pixel anayi lili ndi Cb imodzi ndi gawo limodzi la Cr. Choncho, chithunzicho chili ndi zambiri zamitundu yochepera kanayi kuposa choyambirira.

Malo amtundu wa YCbCr amagwiritsidwa ntchito osati mu JPEG yokha. Idapangidwa koyamba mu 1938 kuti ipange mapulogalamu a pa TV. Sikuti aliyense ali ndi mtundu wa TV, kotero kulekanitsa mtundu ndi kuwala kunalola aliyense kupeza chizindikiro chomwecho, ndipo ma TV opanda mtundu amangogwiritsa ntchito gawo lowala.

Chifukwa chake kuchotsa nambala imodzi kuchokera kwa mkonzi kumawononga mitundu yonse. Zigawozo zimasungidwa mu mawonekedwe a Y Y Y Y Cb Cr (kwenikweni, osati kwenikweni mu dongosolo limenelo - dongosolo losungirako likufotokozedwa pamutu wa fayilo). Kuchotsa nambala yoyamba kumapangitsa kuti mtengo woyamba wa Cb uwoneke ngati Y, Cr ngati Cb, ndipo kawirikawiri mudzakhala ndi mphamvu ya domino yomwe imasintha mitundu yonse ya chithunzicho.

Mafotokozedwe a JPEG samakukakamizani kugwiritsa ntchito YCbCr. Koma mafayilo ambiri amawagwiritsa ntchito chifukwa amapanga zithunzi zotsika bwino kuposa RGB. Koma inu simusowa kuti mutenge mawu anga pa izo. Dziwoneni nokha mu tebulo ili m'munsimu momwe kusanja kwa gawo lililonse kumawonekera mu RGB ndi YCbCr.

Momwe mtundu wa JPEG umagwirira ntchito
(Interactive version - in choyambirira zolemba).

Kuchotsedwa kwa buluu sikukuwoneka ngati kofiira kapena kobiriwira. Ndi chifukwa cha ma cones mamiliyoni asanu ndi limodzi m'maso mwanu, pafupifupi 64% amamva zofiira, 32% zobiriwira ndi 2% zabuluu.

Kutsitsa kwa gawo la Y (pansi kumanzere) kumawoneka bwino. Ngakhale kusintha kochepa kumawonekera.

Kutembenuza chithunzi kuchokera ku RGB kupita ku YCbCr sikuchepetsa kukula kwa fayilo, koma kumapangitsa kuti zikhale zosavuta kupeza zambiri zomwe zingachotsedwe. Kupsinjika kotayika kumachitika mu gawo lachiwiri. Zimatengera lingaliro la kupereka deta mu mawonekedwe ophatikizika.

2. Kusintha kosiyanasiyana kwa cosine ndi kusanja

Mulingo wa kupsinjika uku, makamaka, zomwe JPEG ikunena. Mukasintha mitundu kukhala YCbCr, zigawo zake zimapanikizidwa payekhapayekha, kotero titha kuyang'ana kwambiri gawo la Y. Ndipo izi ndi momwe ma byte a Y gawo amawonekera mutagwiritsa ntchito wosanjikizawu.

Momwe mtundu wa JPEG umagwirira ntchito
(Interactive version - in choyambirira zolemba). Mu mtundu wolumikizirana, kudina pa pixel kumasunthira mkonzi kupita pamzere womwe ukuyimira. Yesani kuchotsa manambala kumapeto kapena kuwonjezera maziro angapo pa nambala inayake.

Poyang'ana koyamba, zikuwoneka ngati kupanikizana koyipa kwambiri. Muli ma pixel 100 pachithunzi, ndipo pamafunika manambala 000 kuti aimire kuwala kwake (Y-components) -ndizoipa kwambiri kuposa kupondereza kalikonse!

Komabe, dziwani kuti ambiri mwa manambalawa ndi ziro. Komanso, mazero onse kumapeto kwa mizere amatha kuchotsedwa popanda kusintha chithunzicho. Kwatsala manambala pafupifupi 26, ndipo izi zacheperako kuwirikiza kanayi!

Mulingo uwu uli ndi chinsinsi cha machitidwe a chess. Mosiyana ndi zotsatira zina zomwe taziwonapo, maonekedwe a machitidwewa si glitch. Ndiwo zomangira za fano lonselo. Mzere uliwonse wa mkonzi uli ndi manambala 64 ndendende, ma coefficients a discrete cosine transform (DCT) ofanana ndi kulimba kwa 64 mapatani apadera.

Mapangidwe awa amapangidwa kutengera chiwembu cha cosine. Nazi momwe ena a iwo amawonekera:

Momwe mtundu wa JPEG umagwirira ntchito
8 mwa 64 zovuta

Pansipa pali chithunzi chomwe chikuwonetsa mapatani onse 64.

Momwe mtundu wa JPEG umagwirira ntchito
(Interactive version - in choyambirira zolemba).

Zithunzizi ndizofunika kwambiri chifukwa zimapanga maziko a zithunzi za 8x8. Ngati simukuzidziwa linear algebra, izi zikutanthauza kuti chithunzi chilichonse cha 8x8 chikhoza kupangidwa kuchokera ku mapatani 64 awa. DCT ndi njira yogawa zithunzi kukhala midadada 8x8 ndikusintha chipika chilichonse kukhala chophatikizira cha 64 coefficients.

Zikuwoneka ngati zamatsenga kuti chithunzi chilichonse chikhoza kupangidwa ndi ma 64 apadera. Komabe, izi ndi zofanana ndi kunena kuti malo aliwonse padziko lapansi akhoza kufotokozedwa ndi manambala awiri - latitude ndi longitude [kusonyeza hemispheres / pafupifupi. kumasulira]. Nthawi zambiri timaganiza za dziko lapansi ngati ziwiri-dimensional, choncho timangofunika manambala awiri okha. Chithunzi cha 8x8 chili ndi miyeso 64, choncho tikufuna manambala 64.

Sizikudziwikabe kuti izi zimatithandiza bwanji pankhani ya kukanikiza. Ngati tikufuna manambala 64 kuti tiyimire chithunzi cha 8x8, chifukwa chiyani izi zingakhale bwino kuposa kungosunga zigawo 64 zowala? Timachita izi pazifukwa zomwezo tidatembenuza manambala atatu a RGB kukhala manambala atatu a YCbCr: zimatilola kuchotsa zidziwitso zobisika.

Ndizovuta kuwona zomwe zachotsedwa pakadali pano chifukwa JPEG imagwiritsa ntchito DCT ku midadada 8x8. Komabe, palibe amene amatiletsa kuzigwiritsa ntchito pa chithunzi chonse. Izi ndi zomwe DCT imawonekera pa gawo la Y lomwe likugwiritsidwa ntchito pachithunzi chonse:

Momwe mtundu wa JPEG umagwirira ntchito

Manambala opitilira 60 amatha kuchotsedwa kumapeto popanda kusintha kowoneka bwino pachithunzichi.

Momwe mtundu wa JPEG umagwirira ntchito

Komabe, dziwani kuti ngati titulutsa manambala asanu oyambirira, kusiyana kudzakhala koonekeratu.

Momwe mtundu wa JPEG umagwirira ntchito

Manambala omwe ali pachiyambi amaimira kusintha kwafupipafupi kwa chithunzicho, chomwe maso athu amawona bwino kwambiri. Nambala zakumapeto zimasonyeza kusintha kwa maulendo apamwamba omwe ndi ovuta kuzindikira. Kuti "tiwone zomwe diso silingawone," titha kusiyanitsa izi pochotsa manambala oyambira 5000.

Momwe mtundu wa JPEG umagwirira ntchito

Timawona madera onse a chithunzi kumene kusintha kwakukulu kumachitika kuchokera ku pixel kupita ku pixel. Maso a mphaka, ndevu zake, bulangete la terry ndi mithunzi yomwe ili pakona yakumanzere yakumanzere imawonekera. Mutha kupita patsogolo pochotsa manambala 10 oyamba:

Momwe mtundu wa JPEG umagwirira ntchito

20 000:

Momwe mtundu wa JPEG umagwirira ntchito

40 000:

Momwe mtundu wa JPEG umagwirira ntchito

60 000:

Momwe mtundu wa JPEG umagwirira ntchito

Zambiri zama frequency awa zimachotsedwa ndi JPEG panthawi yoponderezedwa. Palibe kutayika pakusintha mitundu kukhala ma coefficients a DCT. Kutayika kumachitika pazitsanzo, pomwe ma frequency apamwamba kapena pafupifupi zero amachotsedwa. Mukatsitsa mtundu wopulumutsa wa JPEG, pulogalamuyo imakulitsa malire a kuchuluka kwa zomwe zachotsedwa, zomwe zimachepetsa kukula kwa fayilo, koma zimapangitsa chithunzicho kukhala cha pixelated. N’chifukwa chake chithunzi m’chigawo choyamba, chimene chinali chaching’ono nthawi 57, chinkaoneka chonchi. Chida chilichonse cha 8x8 chidayimiridwa ndi ma coefficients ochepa a DCT poyerekeza ndi mtundu wapamwamba kwambiri.

Mutha kupanga mawonekedwe ozizira ngati kukhamukira pang'onopang'ono kwa zithunzi. Mutha kuwonetsa chithunzi chosawoneka bwino chomwe chimachulukirachulukira pomwe ma coefficients ochulukira amatsitsidwa.

Apa, kungosangalatsa, ndizomwe mumapeza pogwiritsa ntchito manambala 24 okha:

Momwe mtundu wa JPEG umagwirira ntchito

Kapena 5000 chabe:

Momwe mtundu wa JPEG umagwirira ntchito

Zosamveka kwambiri, koma mwanjira ina zodziwika!

3. Thamangani encoding kutalika, delta ndi Huffman

Pakalipano, magawo onse a kupanikizika atayika. Gawo lomaliza, m'malo mwake, limapitilira popanda zotayika. Sichichotsa zambiri, koma chimachepetsa kwambiri kukula kwa fayilo.

Kodi mungapanikize bwanji chinthu popanda kutaya chidziwitso? Tangoganizirani momwe tingafotokozere rectangle wakuda wakuda 700 x 437.

JPEG imagwiritsa ntchito manambala 5000 pa izi, koma zotsatira zabwino kwambiri zitha kupezeka. Kodi mungaganizire dongosolo la ma encoding lomwe lingafotokoze chithunzi chotere mu ma byte ochepa momwe mungathere?

Chiwembu chochepa chomwe nditha kupanga chimagwiritsa ntchito zinayi: zitatu kuyimira mtundu, ndipo chachinayi kuwonetsa ma pixel angati amtunduwo. Lingaliro loyimira zobwerezabwereza mwanjira yofupikitsidwa limatchedwa run-length encoding. Ndizosataya chifukwa tikhoza kubwezeretsa deta yosungidwa ku mawonekedwe ake oyambirira.

Fayilo ya JPEG yokhala ndi rectangle yakuda ndi yayikulu kwambiri kuposa ma byte 4 - kumbukirani kuti pamlingo wa DCT, kukanikiza kumayikidwa pa midadada ya 8x8. Chifukwa chake, osachepera, timafunikira coefficient imodzi ya DCT pa ma pixel 64 aliwonse. Timafunikira imodzi chifukwa m'malo mosunga koyereti imodzi ya DCT yotsatiridwa ndi ziro 63, kabisidwe kautali kamalola kuti tisunge nambala imodzi ndikuwonetsa kuti "zina zonse ndi ziro."

Delta encoding ndi njira yomwe byte iliyonse imakhala ndi kusiyana kwa mtengo wake, osati mtengo weniweni. Chifukwa chake, kusintha ma byte ena kumasintha mtundu wa ma pixel ena onse. Mwachitsanzo, m’malo mosunga

12 13 14 14 14 13 13 14

Titha kuyamba ndi 12 kenako ndikungowonetsa kuchuluka komwe tikufunika kuwonjezera kapena kuchepetsa kuti tipeze nambala yotsatira. Ndipo kutsatizana uku mu delta coding kumatenga mawonekedwe:

12 1 1 0 0 -1 0 1

Deta yotembenuzidwa si yaying'ono kusiyana ndi deta yoyambirira, koma ndiyosavuta kuifinya. Kugwiritsa ntchito encoding ya delta musanayambe kusindikiza kwautali kumatha kuthandizira kwambiri ndikukanikizana kosataya.

Delta coding ndi imodzi mwazinthu zochepa zomwe zimagwiritsidwa ntchito kunja kwa midadada 8x8. Mwa ma coefficients a 64 DCT, imodzi ndi ntchito yokhazikika (mtundu wokhazikika). Zimayimira kuwala kwapakati pa chipika chilichonse cha zigawo za luma, kapena blueness wapakati pa zigawo za Cb, ndi zina zotero. Mtengo woyamba wa chipika chilichonse cha DCT umatchedwa mtengo wa DC, ndipo mtengo uliwonse wa DC ndi delta encoded potengera zam'mbuyomu. Choncho, kusintha kuwala kwa chipika choyamba kudzakhudza midadada yonse.

Chinsinsi chomaliza chitsalira: kodi kusintha kwa umodzi kumawononga bwanji chithunzi chonse? Mpaka pano, milingo yoponderezana ilibe zinthu zotere. Yankho lili pamutu wa JPEG. Ma 500 ma byte oyamba ali ndi metadata ya chithunzi - m'lifupi, kutalika, ndi zina zotero, ndipo sitinagwire nawo ntchito.

Popanda mutu ndizosatheka (kapena zovuta kwambiri) kutsitsa JPEG. Zidzawoneka ngati ndikuyesera kukufotokozerani chithunzicho, ndipo ndikuyamba kupanga mawu kuti ndipereke malingaliro anga. Kufotokozeraku kudzakhala kofupikitsidwa, chifukwa ndimatha kupanga mawu omwe ali ndi tanthauzo lomwe ndikufuna kufotokoza, koma kwa wina aliyense sizingakhale zomveka.

Zikumveka zopusa, koma ndizomwe zimachitika. Chithunzi chilichonse cha JPEG chimapanikizidwa ndi ma code awo. Mtanthauzira mawu wa code imasungidwa pamutu. Njira imeneyi imatchedwa Huffman code ndipo mawu ake amatchedwa Huffman table. Pamutu, tebulo liri ndi ma byte awiri - 255 ndiyeno 196. Chigawo chilichonse cha mtundu chikhoza kukhala ndi tebulo lake.

Kusintha kwa matebulo kudzakhudza kwambiri chithunzi chilichonse. Chitsanzo chabwino ndikusintha mzere wa 15 kukhala 1.

Momwe mtundu wa JPEG umagwirira ntchito

Izi zimachitika chifukwa matebulo amafotokozera momwe ma bits ayenera kuwerengedwa. Pakadali pano tangogwira ntchito ndi manambala a binary mu mawonekedwe a decimal. Koma izi zimabisala kwa ife kuti ngati mukufuna kusunga nambala 1 pang'onopang'ono, idzawoneka ngati 00000001, popeza byte iliyonse iyenera kukhala ndi ma bits asanu ndi atatu, ngakhale imodzi yokha ikufunika.

Izi zitha kuwononga malo ngati muli ndi ziwerengero zazing'ono. Khodi ya Huffman ndi njira yomwe imatilola kumasuka izi kuti nambala iliyonse iyenera kukhala ndi ma bits asanu ndi atatu. Izi zikutanthauza kuti ngati muwona ma byte awiri:

234 115

Ndiye, kutengera tebulo la Huffman, izi zitha kukhala manambala atatu. Kuti muwachotse, choyamba muyenera kuwagawa m'magulu amodzi:

11101010 01110011

Kenako timayang'ana patebulo kuti tiwone momwe tingawagawire. Mwachitsanzo, izi zitha kukhala zoyambira zisanu ndi chimodzi, (111010), kapena 58 mu decimal, kutsatiridwa ndi ma bits asanu (10011), kapena 19, ndipo pomaliza anayi omaliza (0011), kapena 3.

Chifukwa chake, ndizovuta kwambiri kumvetsetsa ma byte panthawiyi ya psinjika. Ma byte samayimira zomwe zikuwoneka. Ine sindidzapita mwatsatanetsatane ntchito ndi tebulo m'nkhaniyi, koma zida pa intaneti iyi zokwanira.

Chinyengo chimodzi chosangalatsa chomwe mungachite ndi chidziwitso ichi ndikulekanitsa mutu ku JPEG ndikusunga padera. M'malo mwake, zikuwoneka kuti ndi inu nokha mutha kuwerenga fayilo. Facebook imachita izi kuti mafayilo akhale ochepa.

Chinanso chomwe chingachitike ndikusintha tebulo la Huffman pang'ono. Kwa ena zidzawoneka ngati chithunzi chosweka. Ndipo inu nokha mudzadziwa njira yamatsenga kukonza.

Tiyeni tifotokoze mwachidule: ndiye chofunika ndi chiyani kuti muzindikire JPEG? Zofunika:

  1. Chotsani tebulo (ma) Huffman kuchokera pamutu ndikusankha ma bits.
  2. Chotsani ma cosine osinthika amtundu uliwonse pamtundu uliwonse ndi gawo lounikira pa chipika chilichonse cha 8x8, kumachita utali wothamanga komanso masinthidwe a delta.
  3. Phatikizani ma cosine kutengera ma coefficients kuti mupeze ma pixel pa block iliyonse ya 8x8.
  4. Magawo amtundu wamtundu ngati kusanja kwanga kudachitika (chidziwitsochi chili pamutu).
  5. Sinthani zotsatira za YCbCr pa pixel iliyonse kukhala RGB.
  6. Onetsani chithunzicho pazenera!

Ntchito yayikulu yongowona chithunzi ndi mphaka! Komabe, zomwe ndimakonda ndikuti zikuwonetsa momwe ukadaulo wa JPEG ulili wamunthu. Zimatengera mawonekedwe amalingaliro athu, zomwe zimatilola kuti tikwaniritse kupsinjika kwabwinoko kuposa matekinoloje wamba. Ndipo tsopano kuti tamvetsetsa momwe JPEG imagwirira ntchito, tikhoza kulingalira momwe matekinolojewa angasamutsire kumadera ena. Mwachitsanzo, delta encoding mu kanema ikhoza kuchepetsa kwambiri kukula kwa fayilo, popeza nthawi zambiri pamakhala madera onse omwe sasintha kuchoka pa chimango kupita ku chimango (mwachitsanzo, kumbuyo).

Code yogwiritsidwa ntchito m'nkhaniyi, ndi lotseguka, ndipo lili ndi malangizo amomwe mungasinthire zithunzizo ndi zanu.

Source: www.habr.com

Kuwonjezera ndemanga