Isebenza kanjani ifomethi ye-JPEG

Izithombe ze-JPEG zitholakala yonke indawo empilweni yethu yedijithali, kodwa ngemuva kwalokhu kuqwashisa kukhona ama-algorithms asusa imininingwane engabonakali ngeso lomuntu. Umphumela uyikhwalithi yokubonwa ephezulu kakhulu kusayizi wefayela omncane kunawo wonke - kodwa kusebenza kanjani konke? Ake sibone ukuthi yini ngempela amehlo ethu angayiboni!

Isebenza kanjani ifomethi ye-JPEG

Kulula ukulithatha kalula ikhono lokuthumela isithombe kumngane futhi ungakhathazeki ngokuthi iyiphi idivayisi, isiphequluli noma isistimu yokusebenza abayisebenzisayo - kodwa bekungenjalo ngaso sonke isikhathi. Ekuqaleni kwawo-1980, amakhompyutha ayekwazi ukugcina futhi abonise izithombe zedijithali, kodwa kwakunemibono eminingi ephikisanayo mayelana nendlela engcono kakhulu yokwenza lokhu. Awukwazanga nje ukuthumela isithombe sisuka kwenye ikhompyutha uye kwenye futhi wethemba ukuthi sizosebenza.

Ukuxazulula le nkinga, ikomiti lochwepheshe abavela emhlabeni wonke lahlanganiswa ngo-1986 elibizwa ngokuthi "Iqembu Elihlangene Lochwepheshe Bezithombe» (Iqembu Elihlanganisiwe Lochwepheshe Bezithombe, i-JPEG), elasungulwa njengomzamo ohlanganyelwe phakathi kwe-International Organisation for Standardization (ISO) kanye ne-International Electrotechnical Commission (IEC), izinhlangano ezimbili zamazinga omhlaba ezikomkhulu e-Geneva, eSwitzerland.

Iqembu labantu elibizwa nge-JPEG lidale izinga lokucindezelwa kwesithombe sedijithali se-JPEG ngo-1992. Noma ubani osebenzise i-inthanethi kungenzeka ukuthi uhlangabezane nezithombe ezibhalwe ngekhodi ze-JPEG. Lena indlela ejwayeleke kakhulu yokufaka ikhodi, ukuthumela nokugcina izithombe. Kusukela emakhasini ewebhu kuya ku-imeyili kuya ezinkundleni zokuxhumana, i-JPEG isetshenziswa izikhathi eziyizigidigidi ngosuku—cishe njalo uma sibuka isithombe ku-inthanethi noma sisithumela. Ngaphandle kwe-JPEG, iwebhu izoba nemibala emincane, ihambe kancane, futhi mhlawumbe ibe nezithombe zamakati ezimbalwa!

Lesi sihloko simayelana nendlela yokukhipha ikhodi yesithombe se-JPEG. Ngamanye amazwi, yini edingekayo ukuze uguqule idatha ecindezelwe egcinwe kukhompuyutha ibe isithombe esivela esikrinini. Lokhu kubalulekile ukwazi, hhayi nje ngoba kubalulekile ukuqonda ubuchwepheshe esibusebenzisa nsuku zonke, kodwa futhi ngoba ngokuvula amazinga okucindezela, sifunda kabanzi mayelana nokubona nokubona, nokuthi yimiphi imininingwane amehlo ethu azwela kakhulu kuyo.

Ngaphezu kwalokho, ukudlala ngezithombe ngale ndlela kuyathakazelisa kakhulu.

Isebenza kanjani ifomethi ye-JPEG

Uma ubheka ngaphakathi kwe-JPEG

Kukhompyutha, yonke into igcinwa njengokulandelana kwezinombolo kanambambili. Ngokujwayelekile lezi zingcezu, oziro kanye noyedwa, ziqoqwa ngamaqembu ayisishiyagalombili ukuze akhe amabhayithi. Uma uvula isithombe se-JPEG kukhompuyutha, okuthile (isiphequluli, isistimu yokusebenza, enye into) kufanele inqume amabhayithi, ibuyisele isithombe sangempela njengohlu lwemibala engaboniswa.

If you download this sweet isithombe sekati futhi uyivule kusihleli sombhalo, uzobona inqwaba yezinhlamvu ezingahlangani.

Isebenza kanjani ifomethi ye-JPEG
Lapha ngisebenzisa i-Notepad++ ukuhlola okuqukethwe kwefayela, njengoba abahleli bombhalo abavamile njenge-Notepad ku-Windows bazokonakalisa ifayela kanambambili ngemva kokulondoloza futhi ngeke lisanelisa ifomethi ye-JPEG.

Ukuvula isithombe kusicubunguli samagama kudida ikhompuyutha, njengoba nje udida ingqondo yakho lapho ucikica amehlo bese uqala ukubona amabala ombala!

Lezi zindawo ozibonayo zaziwa ngokuthi ama-phosphenes, futhi akuwona umphumela wokuvuselela ukukhanya noma ukubona izinto ezingekho okudalwa ingqondo. Kwenzeka ngoba ubuchopho bakho bucabanga ukuthi noma yiziphi izimpawu zikagesi emithanjeni ye-optic zidlulisela ulwazi ngokukhanya. Ubuchopho budinga ukwenza lokhu kucabangela ngoba ayikho indlela yokwazi ukuthi isignali iwumsindo, umbono, noma enye into. Zonke izinzwa emzimbeni zidlulisa amandla afanayo kagesi. Ngokufaka ingcindezi emehlweni akho, uthumela izimpawu ezingabonakali, kodwa wenze kusebenze ama-receptors esweni, ubuchopho bakho obuhumusha - kulokhu, ngokungalungile - njengento ebonakalayo. Ungayibona ngokoqobo ingcindezi!

Kuyahlekisa ukucabanga ukuthi amakhompyutha afana kanjani nobuchopho, kodwa futhi kuwukufanekisa okuwusizo ukukhombisa ukuthi incazelo yedatha—kungakhathaliseki ukuthi ihanjiswa yizinzwa emzimbeni noma igcinwe kuyikhompyutha—kuncike endleleni echazwa ngayo. Yonke idatha kanambambili yenziwe ngo-0 no-1, izingxenye eziyisisekelo ezingadlulisa ulwazi lwanoma yiluphi uhlobo. Ikhompyutha yakho ivamise ukuthola ukuthi ichazwa kanjani ngokusebenzisa imikhondo efana nezandiso zefayela. Manje siyayiphoqa ukuthi iwahumushe njengombhalo, ngoba yilokho okulindelwe umhleli wombhalo.

Ukuze siqonde indlela yokuqopha i-JPEG, sidinga ukubona izimpawu zangempela ngokwazo - idatha kanambambili. Lokhu kungenziwa kusetshenziswa umhleli we-hexadecimal, noma ngokuqondile ikhasi lewebhu lesihloko sokuqala! Kunesithombe, eduze kwaso esigcawini sombhalo kukhona wonke amabhayithi aso (ngaphandle kwesihloko), okwethulwa ngedesimali. Ungazishintsha, futhi iskripthi sizofaka ikhodi kabusha futhi sikhiqize isithombe esisha ngokuhamba kwesikhathi.

Isebenza kanjani ifomethi ye-JPEG

Ungafunda okuningi ngokudlala nje nalo mhleli. Isibonelo, ungasho ukuthi amaphikseli agcinwe ngaluphi uhlelo?

Into exakayo ngalesi sibonelo ukuthi ukushintsha ezinye izinombolo akuphazamisi isithombe, kodwa, isibonelo, uma ushintsha inombolo engu-17 ngo-0 emgqeni wokuqala, isithombe sizokonakala ngokuphelele!

Isebenza kanjani ifomethi ye-JPEG

Ezinye izinguquko, njengokushintsha u-7 kulayini ka-1988 nenombolo engu-254, zishintsha umbala, kodwa kuphela amaphikseli alandelayo.

Isebenza kanjani ifomethi ye-JPEG

Mhlawumbe into emangalisa kakhulu ukuthi ezinye izinombolo azishintshi umbala kuphela, kodwa futhi nokuma kwesithombe. Shintsha u-70 emugqeni we-12 uye ku-2 bese ubheka umugqa ophezulu wesithombe ukuze ubone ukuthi ngiqonde ukuthini.

Isebenza kanjani ifomethi ye-JPEG

Futhi noma ngabe usebenzisa siphi isithombe se-JPEG, uzohlala uthola lawa maphethini e-chess angaqondakali lapho uhlela amabhayithi.

Uma udlala nomhleli, kunzima ukuqonda ukuthi isithombe sidalwa kanjani kabusha kusuka kulawa mabhayithi, njengoba ukucindezela kwe-JPEG kuqukethe ubuchwepheshe obuthathu obuhlukene, obusetshenziswa ngokulandelana kumazinga. Sizofunda ngayinye ngokwehlukana ukuze sembule ukuziphatha okungaqondakali esikubonayo.

Amazinga amathathu wokucindezelwa kwe-JPEG:

  1. Ukusampula kombala.
  2. Ukuguqulwa kwe-cosine okuhlukile nokusampula.
  3. Qalisa umbhalo wekhodi wobude, delta и Huffman

Ukukunikeza umbono wobukhulu bokuminyanisa, qaphela ukuthi isithombe esingenhla simele izinombolo ezingama-79, noma cishe 819 KB. Uma besiyigcina ngaphandle kokuminyanisa, iphikseli ngayinye ingadinga izinombolo ezintathu - zezingxenye ezibomvu, eziluhlaza okotshani neziluhlaza okwesibhakabhaka. Lokhu kungaba izinombolo ezingu-79, noma cishe. 917 KB. Njengomphumela wokucindezelwa kwe-JPEG, ifayela lokugcina lancishiswa izikhathi ezingaphezu kwezingu-700!

Eqinisweni, lesi sithombe singacindezelwa kakhulu. Ngezansi kunezithombe ezimbili ezibhekene - isithombe esingakwesokudla sicindezelwe saba ngu-16 KB, okungukuthi, izikhathi ezingu-57 ezincane kunenguqulo engacindezelwanga!

Isebenza kanjani ifomethi ye-JPEG

Uma ubhekisisa, uzobona ukuthi lezi zithombe azifani. Zombili ziyizithombe ezinokucindezelwa kwe-JPEG, kodwa elungile incane kakhulu ngevolumu. Futhi kubukeka kubi kakhulu (bheka izikwele zombala wangemuva). Yingakho i-JPEG ibizwa nangokuthi ukucindezela kokulahlekelwa; Phakathi nenqubo yokucindezelwa, isithombe siyashintsha futhi silahlekelwe imininingwane ethile.

1. Ukusampula kombala

Nasi isithombe esinezinga lokuqala lokuminyanisa elisetshenzisiwe.

Isebenza kanjani ifomethi ye-JPEG
(Inguqulo esebenzayo - ku okwangempela izindatshana). Ukukhipha inombolo eyodwa kucekela phansi yonke imibala. Kodwa-ke, uma izinombolo eziyisithupha zisusiwe, cishe azinawo umthelela esithombeni.

Manje izinombolo sezilula kancane ukuzichaza. Lolu cishe uhlu olulula lwemibala, lapho ibhayithi ngayinye ishintsha khona iphikseli eyodwa ncamashi, kodwa ngesikhathi esifanayo isivele isiwuhhafu wosayizi wesithombe esingacindezelwanga (okungathatha cishe u-300 KB kulo sayizi oncishisiwe). Ungaqagela ukuthi kungani?

Ungabona ukuthi lezi zinombolo azimele izingxenye ezijwayelekile ezibomvu, eziluhlaza, neziluhlaza okwesibhakabhaka, njengoba uma sishintsha izinombolo ngoziro, sizothola isithombe esiluhlaza (kunokuba simhlophe).

Isebenza kanjani ifomethi ye-JPEG

Lokhu kungenxa yokuthi lawa mabhayithi amele u-Y (ukukhanya),

Isebenza kanjani ifomethi ye-JPEG

I-Cb (i-blueness ehlobene),

Isebenza kanjani ifomethi ye-JPEG

kanye nezithombe ze-Cr (ubomvu obuhlobene).

Isebenza kanjani ifomethi ye-JPEG

Kungani ungasebenzisi i-RGB? Phela, yile ndlela izikrini eziningi zesimanje ezisebenza ngayo. Imonitha yakho ingabonisa noma yimuphi umbala, okuhlanganisa obomvu, oluhlaza okotshani noluhlaza okwesibhakabhaka, ngokuqina okuhlukile kwephikseli ngayinye. Okumhlophe kutholakala ngokukhanyisa kobathathu ekukhanyeni okugcwele, futhi kube mnyama ngokuyivala.

Isebenza kanjani ifomethi ye-JPEG

Lokhu kuphinde kufane kakhulu nendlela iso lomuntu elisebenza ngayo. Ama-receptors ombala emehlweni ethu abizwa ngokuthi "izigaxa“, futhi ihlukaniswe yaba izinhlobo ezintathu, ngayinye ezwela kakhulu imibala ebomvu, eluhlaza, noma eluhlaza okwesibhakabhaka [Amakhoni ohlobo luka-S azwela ku-violet-blue (S from the English Short - short-wave spectrum), M -uhlobo - ku-green-yellow (M kusukela ku-English Medium - medium-wave), kanye nohlobo lwe-L - ezingxenyeni eziphuzi-bomvu (L kusukela ku-English Long - long-wave) izingxenye ze-spectrum. Ukuba khona kwalezi zinhlobo ezintathu zezigaxa (kanye nezinduku, ezizwelayo engxenyeni eluhlaza ye-emerald ye-spectrum) kunikeza umuntu umbono wombala. / cishe. transl.]. Izinduku, olunye uhlobo lwe-photoreceptor emehlweni ethu, luyakwazi ukubona izinguquko ekukhanyeni, kodwa luzwela kakhulu umbala. Amehlo ethu anezinduku ezingaba yizigidi eziyi-120 kanye nezigaxa eziyizigidi eziyisi-6 kuphela.

Yingakho amehlo ethu engcono kakhulu ekuboneni izinguquko ekugqameni kunokushintsha kombala. Uma uhlukanisa umbala ekukhanyeni, ungasusa umbala omncane futhi akekho ozobona lutho. I-Chroma subsampling inqubo yokumela izingxenye zombala wesithombe ngokulungiswa okuphansi kunezingxenye zokukhanya. Esibonelweni esingenhla, iphikseli ngayinye inengxenye engu-Y eyodwa ncamashi, futhi iqembu ngalinye lamaphikseli amane linengxenye ye-Cb eyodwa kanye ne-Cr eyodwa. Ngakho-ke, isithombe siqukethe ulwazi lombala oluphindwe kane kunolokuqala.

Isikhala sombala we-YCbCr asisetshenziswa ku-JPEG kuphela. Yasungulwa ngo-1938 ngezinhlelo zethelevishini. Akuwona wonke umuntu one-TV enemibala, ngakho ukuhlukanisa umbala nokukhanya kuvumela wonke umuntu ukuthi athole isignali efanayo, futhi ama-TV angenambala asebenzise ingxenye yokukhanya kuphela.

Ngakho ukususa inombolo eyodwa kumhleli kucekela phansi yonke imibala. Izingxenye zigcinwa ngendlela ethi Y Y Y Y Cb Cr (eqinisweni, hhayi ngalolo hlelo - uhlelo lwesitoreji lucaciswe enhlokweni yefayela). Ukukhipha inombolo yokuqala kuzokwenza inani lokuqala le-Cb libonakale njengo-Y, Cr njenge-Cb, futhi ngokuvamile uzoba nomthelela we-domino oshintsha yonke imibala yesithombe.

Ukucaciswa kwe-JPEG akukuphoqi ukuthi usebenzise i-YCbCr. Kodwa amafayela amaningi ayisebenzisa ngoba ikhiqiza izithombe ezingcono zesampula kune-RGB. Kodwa awudingi ukuthatha izwi lami ngakho. Zibonele wena kuthebula elingezansi ukuthi ukusampula kwengxenye ngayinye kuzobukeka kanjani ku-RGB naku-YCbCr.

Isebenza kanjani ifomethi ye-JPEG
(Inguqulo esebenzayo - ku okwangempela izindatshana).

Ukukhishwa okuluhlaza okwesibhakabhaka akubonakali njengokubomvu noma okuluhlaza. Lokhu kungenxa yokuthi ama-cones ayizigidi eziyisithupha emehlweni akho, cishe u-64% uyazwela kubomvu, u-32% uzwela eluhlaza kanye no-2% kokuluhlaza okwesibhakabhaka.

Ukwehliswa kwesampula yengxenye engu-Y (phansi kwesokunxele) kubonakala kangcono. Ngisho noshintsho oluncane luyabonakala.

Ukuguqula isithombe sisuka ku-RGB siye ku-YCbCr akwehlisi usayizi wefayela, kodwa kwenza kube lula ukuthola imininingwane engabonakali kancane engasuswa. Ukucindezelwa okulahlekile kwenzeka esigabeni sesibili. Isekelwe embonweni wokwethula idatha ngendlela ecindezela kakhulu.

2. Ukuguqulwa kwe-cosine okuhlukile kanye nokusampula

Leli zinga lokucindezelwa, ingxenye enkulu, ukuthi i-JPEG imayelana nani. Ngemva kokuguqula imibala ibe yi-YCbCr, izingxenye zicindezelwa ngazodwana, ngakho-ke singakwazi ukugxila engxenyeni engu-Y kuphela. Futhi nansi indlela amabhayithi engxenye ka-Y abukeka ngayo ngemva kokusebenzisa lesi sendlalelo.

Isebenza kanjani ifomethi ye-JPEG
(Inguqulo esebenzayo - ku okwangempela izindatshana). Enguqulweni esebenzisanayo, ukuchofoza ku-pixel kuskrola umhleli emgqeni oyimele. Zama ukususa izinombolo ekugcineni noma wengeze oziro abambalwa enombolweni ethile.

Uma uthi nhlá, kubonakala sengathi ukucindezela okubi kakhulu. Kunamaphikseli angu-100 esithombeni, futhi kuthatha izinombolo ezingu-000 ukumela ukukhanya kwazo (izingxenye ezingu-Y)—lokho kubi kakhulu kunokuminyanisa lutho nhlobo!

Nokho, qaphela ukuthi eziningi zalezi zinombolo zinguziro. Ngaphezu kwalokho, wonke lawo ma-zero ekugcineni kwemigqa angasuswa ngaphandle kokushintsha isithombe. Sekusele izinombolo ezingaba ngu-26, futhi lokhu kuncane ngokuphindwe ka-000!

Leli zinga liqukethe imfihlo yamaphethini we-chess. Ngokungafani neminye imithelela esiyibonile, ukubukeka kwalawa maphethini akuyona into embi. Ziyizingqimba zokwakha zesithombe sonke. Umugqa ngamunye womhleli uqukethe izinombolo eziqondile ezingama-64, amakhoyefiyenti e-discrete cosine transform (DCT) ahambisana nokuqina kwamaphethini ahlukile angama-64.

Lawa maphethini akhiwe ngokusekelwe esakhiweni se-cosine. Nakhu ukuthi ezinye zazo zibukeka kanjani:

Isebenza kanjani ifomethi ye-JPEG
8 kokungu-64 okungavamile

Ngezansi kunesithombe esibonisa wonke amaphethini angama-64.

Isebenza kanjani ifomethi ye-JPEG
(Inguqulo esebenzayo - ku okwangempela izindatshana).

Lawa maphethini abaluleke kakhulu ngoba akha isisekelo sezithombe ezingu-8x8. Uma ungayazi i-algebra yomugqa, lokhu kusho ukuthi noma yisiphi isithombe esingu-8x8 singenziwa kusuka kulawa maphethini angu-64. I-DCT inqubo yokuhlukanisa izithombe zibe amabhulokhi angu-8x8 nokuguqula ibhulokhi ngayinye ibe inhlanganisela yalawa ma-coefficient angu-64.

Kubukeka njengomlingo ukuthi noma yisiphi isithombe singakhiwa ngamaphethini athile angama-64. Kodwa-ke, lokhu kufana nokuthi noma iyiphi indawo eMhlabeni ingachazwa ngezinombolo ezimbili - i-latitude ne-longitude [ekhombisa ama-hemispheres / approx. transl.]. Sivame ukucabanga ngobuso boMhlaba njengobubili-ntathu, ngakho sidinga izinombolo ezimbili kuphela. Isithombe esingu-8x8 sinobukhulu obungu-64, ngakho sidinga izinombolo ezingu-64.

Akukacaci ukuthi lokhu kusisiza kanjani mayelana nokucindezelwa. Uma sidinga izinombolo ezingu-64 ukumela isithombe esingu-8x8, kungani lokhu kungaba ngcono kunokugcina izingxenye zokukhanya ezingu-64? Senza lokhu ngesizathu esifanayo siphendule izinombolo ze-RGB ezintathu zaba izinombolo ze-YCbCr ezintathu: kusivumela ukuthi sisuse imininingwane ecashile.

Kunzima ukubona kahle ukuthi iyiphi imininingwane esusiwe kulesi sigaba ngoba i-JPEG isebenzisa i-DCT kumabhulokhi angu-8x8. Nokho, akekho osivimbelayo ukuba sikusebenzise kuso sonke isithombe. Nakhu ukuthi i-DCT ibukeka kanjani ku-Y ingxenye esetshenziswe kuso sonke isithombe:

Isebenza kanjani ifomethi ye-JPEG

Izinombolo ezingaphezu kuka-60 zingasuswa ekugcineni ngaphandle kwezinguquko ezibonakalayo esithombeni.

Isebenza kanjani ifomethi ye-JPEG

Kodwa-ke, qaphela ukuthi uma sikhipha izinombolo ezinhlanu zokuqala, umehluko uzoba sobala.

Isebenza kanjani ifomethi ye-JPEG

Izinombolo ezisekuqaleni zimelela izinguquko zemvamisa ephansi esithombeni, amehlo ethu azithatha kangcono. Izinombolo eziya ngasekugcineni zikhombisa izinguquko kumafrikhwensi aphezulu okunzima ukuzibona. Ukuze "sibone lokho iso elingeke likubone," singahlukanisa le mininingwane yefrikhwensi ngokukhipha izinombolo zokuqala ezingu-5000.

Isebenza kanjani ifomethi ye-JPEG

Sibona zonke izindawo zesithombe lapho kwenzeka khona ushintsho olukhulu ukusuka kumaphikseli ukuya kumaphikseli. Amehlo ekati, amadevu alo, ingubo yokulala nethunzi ekhoneni elingezansi kwesokunxele kuyagqama. Ungaqhubekela phambili ngokukhipha izinombolo zokuqala eziyi-10:

Isebenza kanjani ifomethi ye-JPEG

20 000:

Isebenza kanjani ifomethi ye-JPEG

40 000:

Isebenza kanjani ifomethi ye-JPEG

60 000:

Isebenza kanjani ifomethi ye-JPEG

Le mininingwane yefrikhwensi ephezulu isuswa yi-JPEG phakathi nesigaba sokucindezela. Akukho ukulahlekelwa ekuguquleni imibala ibe ama-coefficient e-DCT. Ukulahlekelwa kwenzeka esinyathelweni sesampula, lapho amanani aphezulu noma aseduze noziro asuswa. Uma wehlisa ikhwalithi yokulondoloza ye-JPEG, uhlelo lukhulisa umkhawulo wenani lamanani asusiwe, okunciphisa usayizi wefayela, kodwa kwenza isithombe sibe nephikiseli. Yingakho isithombe esisesigabeni sokuqala, esasisincane ngokuphindwe izikhathi ezingu-57, sasibukeka kanje. Ibhulokhi ngayinye engu-8x8 imelwe ama-coefficients e-DCT ambalwa kakhulu uma kuqhathaniswa nenguqulo yekhwalithi ephezulu.

Ungakha umphumela opholile njengokusakazwa kancane kancane kwezithombe. Ungabonisa isithombe esilufifi esiba nemininingwane eminingi njengoba kulandwa ama-coefficient amaningi.

Nakhu, ukuzijabulisa nje, yilokho okuthola usebenzisa izinombolo ezingu-24 kuphela:

Isebenza kanjani ifomethi ye-JPEG

Noma 5000 nje:

Isebenza kanjani ifomethi ye-JPEG

Kufiphele kakhulu, kodwa kuyabonakala ngandlela thize!

3. Qalisa umbhalo wekhodi wobude, i-delta ne-Huffman

Kuze kube manje, zonke izigaba zokucindezelwa zilahlekile. Isigaba sokugcina, ngokuphambene nalokho, siqhubeka ngaphandle kokulahlekelwa. Ayisusi imininingwane, kodwa inciphisa kakhulu usayizi wefayela.

Ungayicindezela kanjani into ngaphandle kokulahla ulwazi? Cabanga ukuthi singawuchaza kanjani unxande olula omnyama 700 x 437.

I-JPEG isebenzisa izinombolo ezingu-5000 kulokhu, kodwa imiphumela engcono kakhulu ingafinyelelwa. Ungacabanga uhlelo lombhalo wekhodi olungachaza isithombe esinjalo ngamabhayithi ambalwa ngangokunokwenzeka?

Isikimu esincane engingaqhamuka naso sisebenzisa okune: okuthathu ukumela umbala, kanye nokwesine ukukhombisa ukuthi mangaki amaphikseli lowo mbala. Umqondo wokumela amanani aphindayo ngale ndlela efingqiwe ubizwa nge-run-length encoding. Ayilahleki ngoba singakwazi ukubuyisela idatha efakwe ikhodi efomini layo langempela.

Ifayela le-JPEG elinonxande omnyama likhulu kakhulu kunamabhayithi angu-4 - khumbula ukuthi ezingeni le-DCT, ukucindezela kusetshenziswa kumabhulokhi wamaphikseli angu-8x8. Ngakho-ke, okungenani, sidinga i-coefficient eyodwa ye-DCT kuwo wonke amaphikseli angama-64. Sidinga eyodwa ngoba esikhundleni sokugcina i-coefficient eyodwa ye-DCT elandelwa ngoziro abangu-63, umbhalo wekhodi wobude bokugijima kusivumela ukuthi sigcine inombolo eyodwa futhi sibonise ukuthi "zonke ezinye zingoziro."

Umbhalo wekhodi we-Delta kuyindlela lapho ibhayithi ngayinye iqukethe khona umehluko kusuka kwelinye inani, kunevelu eliphelele. Ngakho-ke, ukuhlela amabhayithi athile kushintsha umbala wawo wonke amanye amaphikseli. Ngokwesibonelo, esikhundleni sokugcina

12 13 14 14 14 13 13 14

Singaqala ngo-12 bese simane sibonise ukuthi sidinga ukungeza noma ukunciphisa kangakanani ukuze sithole inombolo elandelayo. Futhi lokhu kulandelana ekufakweni kwekhodi kwe-delta kuthatha ifomu:

12 1 1 0 0 -1 0 1

Idatha eguquliwe ayincane kunedatha yasekuqaleni, kodwa kulula ukuyiminyanisa. Ukusebenzisa umbhalo wekhodi we-delta ngaphambi kokufaka ikhodi yobude bokusebenza kungasiza kakhulu ngenkathi kuseyimicindezelo engalahleki.

Ukufaka ikhodi kwe-Delta kungenye yezindlela ezimbalwa ezisetshenziswa ngaphandle kwamabhulokhi angu-8x8. Kuma-coefficients we-DCT angu-64, eyodwa imane iwumsebenzi wamagagasi ongashintshi (umbala oqinile). Imele ukukhanya okumaphakathi kwebhulokhi ngayinye yezingxenye ze-luma, noma ubuluhlaza obumaphakathi bezingxenye ze-Cb, njalo njalo. Inani lokuqala lebhulokhi ngayinye ye-DCT libizwa ngokuthi inani le-DC, futhi inani ngalinye le-DC lifakwe ikhodi ye-delta ngokuphathelene nangaphambili. Ngakho-ke, ukushintsha ukukhanya kwebhulokhi yokuqala kuzothinta wonke amabhlogo.

Imfihlakalo yokugcina isasele: ukuguqula ubunye kusichitha kanjani isithombe sonke? Kuze kube manje, amazinga okucindezela awakabi nazo izici ezinjalo. Impendulo ilele enhlokweni ye-JPEG. Amabhayithi okuqala angu-500 aqukethe imethadatha mayelana nesithombe - ububanzi, ubude, njll., futhi asikakasebenzi ngawo kuze kube manje.

Ngaphandle kweheda cishe akunakwenzeka (noma kunzima kakhulu) ukuqopha i-JPEG. Kuzobukeka sengathi ngizama ukukuchazela isithombe, futhi sengiqala ukuqamba amagama ukuze ngidlulise umbono wami. Incazelo cishe izofinyezwa impela, njengoba ngikwazi ukusungula amagama anencazelo ngqo engifuna ukuyidlulisela, kodwa kuwo wonke umuntu ngeke abe nengqondo.

Kuzwakala kuwubuwula, kodwa yilokho kanye okwenzekayo. Isithombe ngasinye se-JPEG sicindezelwa ngamakhodi aqondene naso. Isichazamazwi sekhodi sigcinwe kunhlokweni. Le nqubo ibizwa ngokuthi ikhodi ye-Huffman futhi isilulumagama sibizwa ngokuthi ithebula likaHuffman. Kunhlokweni, itafula limakwe ngamabhayithi amabili - 255 bese kuba ngu-196. Ingxenye ngayinye yombala ingaba netafula layo.

Izinguquko kumathebula zizothinta kakhulu noma yisiphi isithombe. Isibonelo esihle ukushintsha umugqa we-15 ube ngu-1.

Isebenza kanjani ifomethi ye-JPEG

Lokhu kwenzeka ngoba amathebula acacisa ukuthi izingcezu ngazinye kufanele zifundwe kanjani. Kuze kube manje sisebenze kuphela ngezinombolo kanambambili kwifomu ledesimali. Kodwa lokhu kusifihlela iqiniso lokuthi uma ufuna ukugcina inombolo engu-1 ngebhayithi, izobukeka njenge-00000001, ngoba ibhayithi ngayinye kufanele ibe namabhithi ayisishiyagalombili ncamashi, ngisho noma kudingeka eyodwa kuphela.

Lokhu kungase kube ukumosha indawo okukhulu uma unezinombolo eziningi ezincane. Ikhodi ye-Huffman iwuhlelo olusivumela ukuthi siphumuze le mfuneko yokuthi inombolo ngayinye kufanele ithathe amabhithi ayisishiyagalombili. Lokhu kusho ukuthi uma ubona amabhayithi amabili:

234 115

Khona-ke, kuye ngetafula likaHuffman, lezi zingaba izinombolo ezintathu. Ukuze uzikhiphe, udinga kuqala uzihlukanise zibe izingcezu ngazinye:

11101010 01110011

Bese sibheka itafula ukuthola ukuthi singawaqoqa kanjani. Isibonelo, lokhu kungaba amabhithi ayisithupha okuqala, (111010), noma amabhithi angama-58 ngedesimali, kulandelwe amabhithi amahlanu (10011), noma u-19, futhi ekugcineni amabhithi amane okugcina (0011), noma 3.

Ngakho-ke, kunzima kakhulu ukuqonda ama-byte kulesi sigaba sokucindezelwa. Amabhayithi awameleli lokho abonakala ngakho. Ngeke ngingene emininingwaneni yokusebenza netafula kulesi sihloko, kodwa izinto zokwakha ngalolu daba ku-inthanethi yanele.

Iqhinga elilodwa elithokozisayo ongayenza ngalolu lwazi ukuhlukanisa unhlokweni ku-JPEG futhi uyigcine ngokuhlukene. Eqinisweni, kuvela ukuthi nguwe kuphela ongafunda ifayela. I-Facebook yenza lokhu ukwenza amafayela abe mancane nakakhulu.

Okunye okungenziwa wukushintsha ithebula likaHuffman kancane. Kwabanye kuzobukeka njengesithombe esiphukile. Futhi nguwe kuphela ozokwazi indlela yomlingo yokuyilungisa.

Ake sifingqe: ngakho-ke yini edingekayo ukuze ukhiphe ikhodi ye-JPEG? Kudingeka:

  1. Khipha ithebula (ama) Huffman kunhlokweni bese unquma izingcezu.
  2. Khipha ama-coefficients okuguqula i-cosine ombala ngamunye nengxenye yokukhanya kubhulokhi ngayinye engu-8x8, wenza ubude bokugijima obuphambene kanye nokuguqulwa kombhalo wekhodi we-delta.
  3. Hlanganisa ama-cosine ngokusekelwe kuma-coefficients ukuze uthole amanani ephikseli kubhulokhi ngayinye engu-8x8.
  4. Kala izingxenye zombala uma ukusampula okuncane kwenziwe (lolu lwazi lukunhlokweni).
  5. Guqula amanani e-YCbCr angumphumela wephikseli ngayinye abe yi-RGB.
  6. Bonisa isithombe esikrinini!

Umsebenzi onzima wokubuka nje isithombe nekati! Kodwa-ke, engikuthandayo ngayo ukuthi ikhombisa ukuthi ubuchwepheshe be-JPEG obugxile kumuntu bunjani. Isekelwe ezintweni ezingavamile zombono wethu, okusivumela ukuba sifinyelele ukucindezelwa okungcono kakhulu kunobuchwepheshe obuvamile. Futhi manje njengoba sesiqonda ukuthi i-JPEG isebenza kanjani, singacabanga ukuthi lobu buchwepheshe bungadluliswa kanjani kwezinye izindawo. Isibonelo, umbhalo wekhodi we-delta kuvidiyo unganikeza ukuncipha okukhulu kosayizi wefayela, njengoba kuvame ukuba nezindawo eziphelele ezingashintshi ukusuka kuhlaka kuye kuhlaka (ngokwesibonelo, ingemuva).

Ikhodi esetshenziswe esihlokweni, ivuliwe, futhi iqukethe imiyalelo yokuthi ungashintsha kanjani izithombe ufake esakho.

Source: www.habr.com

Engeza amazwana