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!
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!
Kuphatikiza apo, kusewera ndi zithunzi mwanjira iyi ndikosangalatsa kwambiri.
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.
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!
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!
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.
(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?
Izi ndichifukwa choti mabayiti awa amayimira Y (kuwala),
Cb (mawonekedwe abuluu),
ndi Cr (kufiira kwachibale) zithunzi.
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.
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.
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.
(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.
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:
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.
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:
20 000:
40 000:
60 000:
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.
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?
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
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.
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.
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:
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.
Chotsani tebulo (ma) Huffman kuchokera pamutu ndikusankha ma bits.
Chotsani ma cosine osinthika amtundu uliwonse pamtundu uliwonse ndi gawo lounikira pa chipika chilichonse cha 8x8, kumachita utali wothamanga komanso masinthidwe a delta.
Phatikizani ma cosine kutengera ma coefficients kuti mupeze ma pixel pa block iliyonse ya 8x8.
Magawo amtundu wamtundu ngati kusanja kwanga kudachitika (chidziwitsochi chili pamutu).
Sinthani zotsatira za YCbCr pa pixel iliyonse kukhala RGB.