Isebenza njani ifomathi yeJPEG

Imifanekiso yeJPEG ifumaneka kuyo yonke indawo kubomi bethu bedijithali, kodwa emva kolu lwazi luyi-algorithms esusa iinkcukacha ezingabonakaliyo emehlweni abantu. Isiphumo lolona mgangatho uphezulu wokubonwayo kwisayizi yefayile encinci - kodwa isebenza njani yonke? Makhe sibone ukuba yintoni kanye kanye ayiboniyo amehlo ethu!

Isebenza njani ifomathi yeJPEG

Kulula ukuthabatha lula ukukwazi ukuthumela ifoto kumhlobo kwaye ungakhathazeki malunga nokuba sesiphi isixhobo, isikhangeli okanye inkqubo yokusebenza abayisebenzisayo - kodwa bekungasoloko kunjalo. Ekuqaleni kwee-1980, iikhomputha zazikwazi ukugcina kwaye zibonise imifanekiso yedijithali, kodwa kwakukho iingcamango ezininzi ezikhuphisanayo malunga neyona ndlela yokwenza oku. Awukwazanga ukuthumela umfanekiso ukusuka kwenye ikhompyuter ukuya kwenye kwaye unethemba lokuba iya kusebenza.

Ukusombulula le ngxaki, ikomiti yeengcali ezivela kwihlabathi liphela yahlanganiswa ngo-1986 ebizwa ngokuba "Iqela elidibeneyo leeNgcali zokuFotaΒ» (Iqela leeNgcali zeeFoto eziDityanisiweyo, i-JPEG), esekwe njengomzamo odibeneyo phakathi kwe-International Organisation for Standardization (ISO) kunye ne-International Electrotechnical Commission (IEC), imibutho emibini yemigangatho yamazwe ngamazwe ekomkhulu e-Geneva, eSwitzerland.

Iqela labantu elibizwa ngokuba yiJPEG lenze umgangatho wocinezelo wedijithali weJPEG ngo-1992. Nabani na okhe wasebenzisa i-Intanethi uye wadibana nemifanekiso enekhowudi yeJPEG. Le yeyona ndlela iqhelekileyo yokufaka ikhowudi, ukuthumela kunye nokugcina imifanekiso. Ukusuka kumaphepha ewebhu ukuya kwi-imeyile ukuya kwimidiya yoluntu, iJPEG isetyenziswa amaxesha ezigidi ngezigidi ngosuku-phantse ngalo lonke ixesha sijonga umfanekiso kwi-intanethi okanye ukuwuthumela. Ngaphandle kweJPEG, iwebhu inokuba nemibala encinci, icothe, kwaye mhlawumbi ibe nemifanekiso yekati embalwa!

Eli nqaku limalunga nendlela yokuwucacisa umfanekiso weJPEG. Ngamanye amazwi, yintoni efunekayo ukuguqula idatha ecinezelweyo egcinwe kwikhompyuter ibe ngumfanekiso ovela kwisikrini. Oku kufanelekile ukwazi, kungekuphela nje kuba kubalulekile ukuqonda itekhnoloji esiyisebenzisa yonke imihla, kodwa nangenxa yokuba ngokuvula amanqanaba oxinzelelo, sifunda ngakumbi malunga nokuqonda kunye nombono, kwaye zeziphi iinkcukacha amehlo ethu aziva eziva kakhulu.

Ukongeza, ukudlala ngemifanekiso ngale ndlela kunomdla kakhulu.

Isebenza njani ifomathi yeJPEG

Ukujonga ngaphakathi kweJPEG

Kwikhompyuter, yonke into igcinwa njengokulandelelana kwamanani okubini. Ngokuqhelekileyo la masuntswana, ooziro kunye nemiye, adityaniswa ngokwamaqela asibhozo ukwenza iibhayithi. Xa uvula umfanekiso weJPEG kwikhompyutheni, into ethile (isiphequluli, inkqubo yokusebenza, enye into) kufuneka inqume ii-bytes, ukubuyisela umfanekiso wokuqala njengoluhlu lwemibala enokuthi iboniswe.

Ukuba ukhuphela le switi ifoto yekati kwaye uyivule kumhleli wokubhaliweyo, uya kubona iqela lamagama angahambelaniyo.

Isebenza njani ifomathi yeJPEG
Apha ndisebenzisa i-Notepad ++ ukujonga imixholo yefayile, kuba abahleli besicatshulwa rhoqo njengeNotepad kwiWindows baya konakalisa ifayile yokubini emva kokugcina kwaye ayisayi kuyanelisa ifomathi yeJPEG.

Ukuvula umfanekiso kwiprosesa yegama kuyayibhidanisa ikhompyuter, njengokuba ubhida ingqondo yakho xa uhlikihla amehlo kwaye uqala ukubona amabala ombala!

La mabala uwabonayo aziwa ngokuba iiphosphenes, kwaye ayisosiphumo sokuvuselela ukukhanya okanye ukubona izinto ezingekhoyo eziveliswa yingqondo. Zenzeka ngenxa yokuba ingqondo yakho icinga ukuba nayiphi na imiqondiso yombane kwimithambo-luvo yamehlo idlulisela ulwazi ngokukhanya. Ingqondo kufuneka yenze ezi ngqikelelo kuba akukho ndlela yokwazi ukuba umqondiso sisandi, umbono, okanye enye into. Zonke imithambo-luvo emzimbeni zihambisa kanye iimpembelelo zombane ezifanayo. Ngokufaka uxinzelelo emehlweni akho, uthumela imiqondiso engabonakaliyo, kodwa isebenze i-receptors yamehlo, apho ingqondo yakho itolika - kule meko, ngokungalunganga - njengento ebonakalayo. Unokulubona ngokoqobo uxinzelelo!

Kuyahlekisa ukucinga ngendlela iikhompyutha ezifanayo ebuchotsheni, kodwa ukwalufaniso oluluncedo ukubonisa ukuba ingakanani intsingiselo yedatha-nokuba ithwalwa emzimbeni yimithambo-luvo okanye igcinwe ekhompyutheni-ixhomekeke kwindlela etolikwa ngayo. Yonke idatha yokubini yenziwe ngama-0 kunye nee-1, amacandelo asisiseko anokudlulisa ulwazi lwalo naluphi na uhlobo. Ikhompyuter yakho ihlala ibala ukuba itolikwa njani usebenzisa imikhondo efana nezandiso zefayile. Ngoku siyayinyanzela ukuba itolike njengesicatshulwa, kuba nantso into elindelwe ngumhleli wokubhaliweyo.

Ukuqonda indlela yokucima iJPEG, kufuneka sibone iimpawu zokuqala ngokwazo - idatha yebinary. Oku kunokwenziwa kusetyenziswa umhleli wehexadecimal, okanye ngqo kwi iphepha lewebhu lenqaku lokuqala! Kukho umfanekiso, ecaleni kwawo kwindawo yokubhaliweyo kukho zonke ii-bytes zawo (ngaphandle kwesihloko), zinikezelwe kwifomu yesishumi. Unokuzitshintsha, kwaye iskripthi siya kufakwa kwakhona kwaye sivelise umfanekiso omtsha kwi-fly.

Isebenza njani ifomathi yeJPEG

Unokufunda okuninzi ngokudlala nalo mhleli. Umzekelo, ungaxela ukuba iipixels zigcinwe ngoluphi ulandelelwano?

Into engaqhelekanga ngalo mzekelo kukuba ukutshintsha amanani akuchaphazeli konke konke, kodwa, umzekelo, ukuba utshintshe inombolo ye-17 kunye no-0 kumgca wokuqala, ifoto iya kutshatyalaliswa ngokupheleleyo!

Isebenza njani ifomathi yeJPEG

Olunye utshintsho, olunjengokutshintsha u-7 kumgca ka-1988 ngenani lama-254, lutshintsha umbala, kodwa kuphela ngeepixels ezilandelayo.

Isebenza njani ifomathi yeJPEG

Mhlawumbi into emangalisa kukuba amanye amanani atshintshi kuphela umbala, kodwa kunye nokumila komfanekiso. Guqula i-70 kumgca we-12 ukuya ku-2 kwaye ujonge kumqolo ongasentla womfanekiso ukuze ubone ukuba ndithetha ukuthini.

Isebenza njani ifomathi yeJPEG

Kwaye nokuba usebenzisa owuphi umfanekiso weJPEG owusebenzisayo, uyakuhlala ufumana ezi patheni zechess zingaqondakaliyo xa uhlela iibytes.

Xa udlala nomhleli, kunzima ukuqonda ukuba ifoto yenziwa njani kwakhona kwezi byte, kuba ucinezelo lweJPEG lubandakanya itekhnoloji ezintathu ezahlukeneyo, ezisetyenziswa ngokulandelelana kumanqanaba. Siza kufunda nganye ngokwahlukeneyo ukuze sifumanise indlela yokuziphatha engaqondakaliyo esiyibonayo.

Amanqanaba amathathu oxinzelelo lweJPEG:

  1. Iisampulu zombala.
  2. Ukutshintsha kwe-cosine kunye nesampuli.
  3. Sebenzisa ubude beekhowudi, delta ΠΈ Huffman

Ukukunika umbono wobungakanani boxinzelelo, qaphela ukuba umfanekiso ongentla umele amanani angama-79, okanye malunga ne-819 KB. Ukuba besiyigcinile ngaphandle koxinzelelo, ipixel nganye ibinokufuna amanani amathathu - kuluhlu olubomvu, oluluhlaza kunye noluzuba. Oku kuya kuba ngama-79 amanani, okanye malunga. 917 KB. Ngenxa yokunyanzeliswa kweJPEG, ifayile yokugqibela yancitshiswa ngaphezu kwamaxesha e-700!

Ngapha koko, lo mfanekiso unokucinezelwa ngakumbi. Ngezantsi kukho imifanekiso emibini ecaleni-ifoto esekunene icinezelwe ukuya kwi-16 KB, oko kukuthi, amaxesha angama-57 amancinci kunoguqulelo olungaxinzelelwanga!

Isebenza njani ifomathi yeJPEG

Ukuba ujongisisa, uya kubona ukuba le mifanekiso ayifani. Zombini ziyimifanekiso ene-JPEG yoxinzelelo, kodwa eyona ilungileyo incinci kakhulu ngevolumu. Ikwajongeka mbi ngakumbi (jonga kwibala lemibala engasemva). Yiyo loo nto iJPEG ikwabizwa ngokuba yi-lossy compression; Ngexesha lenkqubo yokucinezela, umfanekiso uyatshintsha kwaye ulahlekelwe ezinye iinkcukacha.

1. Isampuli zombala

Nanku umfanekiso onenqanaba lokuqala locinezelo elisetyenzisiweyo.

Isebenza njani ifomathi yeJPEG
(Uguqulelo olusebenzayo-kwi yoqobo amanqaku). Ukususa inani elinye kutshabalalisa yonke imibala. Nangona kunjalo, ukuba amanani amathandathu ngokuthe ngqo asusiwe, ayinasiphumo kumfanekiso.

Ngoku amanani alula kancinci ukuwacacisa. Olu phantse luluhlu olulula lwemibala, apho i-byte nganye itshintsha ngokuthe ngqo ipixel enye, kodwa kwangaxeshanye sele isisiqingatha sobukhulu bomfanekiso ongaxinzelelwanga (obuya kuthatha malunga ne-300 KB kobu bukhulu buncitshisiweyo). Ngaba unokuthelekelela ukuba kutheni?

Uyabona ukuba la manani akameleli umlinganiselo obomvu, oluhlaza, noluhlaza okwesibhakabhaka, kuba ukuba sitshintsha amanani ngooziro, siya kufumana umfanekiso oluhlaza (kunokuba mhlophe).

Isebenza njani ifomathi yeJPEG

Oku kungenxa yokuba ezi bytes zimela u-Y (ukukhanya),

Isebenza njani ifomathi yeJPEG

I-Cb (i-blueness ehambelanayo),

Isebenza njani ifomathi yeJPEG

kunye nemifanekiso ye-Cr (ebomvu ehambelanayo).

Isebenza njani ifomathi yeJPEG

Kutheni ungasebenzisi iRGB? Ngapha koko, le yindlela uninzi lwezikrini zanamhlanje ezisebenza ngayo. Imonitha yakho inokubonisa nawuphi na umbala, kubandakanya obomvu, eluhlaza kunye noluhlaza okwesibhakabhaka, ngokuqina okwahlukileyo kwipixel nganye. Umhlophe ufunyanwa ngokuvula zonke ezithathu ekukhanyeni okupheleleyo, kwaye umnyama ufunyanwa ngokuwacima.

Isebenza njani ifomathi yeJPEG

Oku kukwafana kakhulu nendlela elisebenza ngayo iliso lomntu. I-receptors yombala emehlweni ethu ibizwa ngokuba "iiconesβ€œ, kwaye zahlulwe zazintlobo ezintathu, nganye kuzo inovakalelo ngakumbi nokuba kubomvu, luhlaza, okanye imibala eluhlaza [iicones zohlobo lwe-S zinobuntununtunu kwiviolet-blue (S ukusuka kuMfutshane wesiNgesi - i-short-wave spectrum), M -uhlobo - kwi-green-yellow (M ukusuka kwiNgesi Medium - medium-wave), kunye no-L-uhlobo - kwi-yellow-red (L ukusuka kwiNgesi ye-Long-long-wave) iindawo ze-spectrum. Ubukho bezi ntlobo zintathu zeecones (kunye neentonga, ezinovakalelo kwindawo ye-emerald eluhlaza kwi-spectrum) zinika umntu umbono wombala. / malunga. guqulela.]. Iziqu, olunye uhlobo lwe<em>photoreceptor emehlweni ethu, luyakwazi ukubona utshintsho ekukhanyeni, kodwa lunovelwano ngakumbi kumbala. Amehlo ethu amalunga ne-120 yezigidi zeerodi kunye ne-6 yezigidi zeecones kuphela.

Yiyo loo nto amehlo ethu elunge ngakumbi ekuboneni utshintsho ekukhanyeni kunokutshintsha kombala. Ukuba uhlula umbala ekukhanyeni, unokususa umbala omncinci kwaye akukho mntu uya kuqaphela nantoni na. I-Chroma subsampling yinkqubo yokumela amalungu ombala womfanekiso kwisisombululo esisezantsi kunezixhobo zokukhanya. Kulo mzekelo ungasentla, ipixel nganye inecandelo elingu-Y kanye, kwaye iqela ngalinye leepixel ezine lineCb enye kanye neCr enye. Ngoko ke, umfanekiso uqulethe ulwazi lombala oluphindwe kane kunolokuqala.

Isithuba sombala we-YCbCr asisetyenziswanga kuphela kwiJPEG. Yaqanjwa ngo-1938 kwiinkqubo zikamabonwakude. Ayinguye wonke umntu onombala weTV, ngoko ukwahlula umbala kunye nokuqaqamba kwavumela wonke umntu ukuba afumane umqondiso ofanayo, kwaye iiTV ezingenambala zisebenzise kuphela icandelo lokukhanya.

Ngoko ukususa inombolo enye kumhleli kuyonakalisa ngokupheleleyo yonke imibala. Amacandelo agcinwe kwifom YYYY Cb Cr (eqinisweni, kungekhona ngokomyalelo - umyalelo wokugcinwa uchazwe kwifayile yefayile). Ukususa inombolo yokuqala kuya kubangela ukuba ixabiso lokuqala le-Cb libonwe njenge-Y, i-Cr njenge-Cb, kwaye ngokubanzi uya kuba nempembelelo ye-domino eguqula yonke imibala yomfanekiso.

Iinkcukacha zeJPEG azikunyanzeli ukuba usebenzise i-YCbCr. Kodwa uninzi lweefayile ziyayisebenzisa kuba ivelisa imifanekiso ethotyiweyo engcono kuneRGB. Kodwa akunyanzelekanga ukuba uthathe ilizwi lam ngalo. Zibonele kule theyibhile ingezantsi ukuba iisampulu zecandelo ngalinye ziya kujongeka njani kuzo zombini iRGB kunye neYCbCr.

Isebenza njani ifomathi yeJPEG
(Uguqulelo olusebenzayo-kwi yoqobo amanqaku).

Ukususwa kweblue akubonakali njengento ebomvu okanye eluhlaza. Oku kungenxa yezigidi ezithandathu zeecones emehlweni akho, malunga nama-64% anovelwano kubomvu, ama-32% kuluhlaza kunye ne-2% eluhlaza okwesibhakabhaka.

Ukuthotywa kwecandelo lika-Y (ezantsi ekhohlo) kubonwa kakuhle. Nokuba utshintsho oluncinci luyabonakala.

Ukuguqula umfanekiso ukusuka kwi-RGB ukuya kwi-YCbCr akunciphisi ubungakanani befayile, kodwa kwenza kube lula ukufumana iinkcukacha ezingabonakaliyo ezinokuthi zisuswe. Ukunyanzeliswa kwelahleko kwenzeka kwinqanaba lesibini. Isekwe kumbono wokunikezela ngedatha ngendlela ecinezeleka ngakumbi.

2. Ukuguqulwa kwe-cosine ekhethiweyo kunye nesampuli

Eli nqanaba loxinzelelo, ubukhulu becala, yintoni na iJPEG. Emva kokuguqula imibala ibe yi-YCbCr, iikhomponenti zicinezelwa ngokwahlukeneyo, ngoko ke sinokugxila kwinxalenye kaY Kwaye nantsi indlela icandelo le-bytes elibukeka ngayo emva kokufaka lo maleko.

Isebenza njani ifomathi yeJPEG
(Uguqulelo olusebenzayo-kwi yoqobo amanqaku). Kuhlelo olusebenzisanayo, ukucofa kwi-pixel skrola umhleli ukuya kumgca oyimeleyo. Zama ukususa amanani ukusuka ekupheleni okanye udibanise ooziro abambalwa kwinani elithile.

Ekuboneni kokuqala, kubonakala ngathi i-compress embi kakhulu. Kukho i-100 pixels emfanekisweni, kwaye kuthatha amanani angama-000 ukumela ukuqaqamba kwawo (Y-compounds)β€”ibi kakhulu kunokucinezela nto kwaphela!

Nangona kunjalo, qaphela ukuba uninzi lwala manani ngu-zero. Ngaphezu koko, zonke ezo zero ekupheleni kwemigca zinokususwa ngaphandle kokutshintsha umfanekiso. Kukho malunga nama-26 amanani aseleyo, kwaye oku kuphantse kube ngama-000 ngaphantsi!

Eli nqanaba liqulethe imfihlelo yeepateni ze-chess. Ngokungafaniyo nezinye iziphumo esizibonileyo, inkangeleko yale pateni ayiyongxaki. Ziibhloko zokwakha zomfanekiso wonke. Umgca ngamnye womhleli uqulethe amanani angama-64 ngokuthe ngqo, i-discrete cosine transform (DCT) coefficients ehambelana nobunzulu be-64 iipateni ezizodwa.

Ezi patheni zenziwe ngokusekelwe kwisakhiwo se-cosine. Nantsi indlela ezinye zazo ezikhangeleka ngayo:

Isebenza njani ifomathi yeJPEG
8 kuma 64 amathuba

Ngezantsi ngumfanekiso obonisa zonke iipateni ezingama-64.

Isebenza njani ifomathi yeJPEG
(Uguqulelo olusebenzayo-kwi yoqobo amanqaku).

Ezi patheni zibaluleke kakhulu kuba zenza isiseko semifanekiso ye-8x8. Ukuba awuqhelananga ne-algebra yomgca, oku kuthetha ukuba nawuphi na umfanekiso we-8x8 unokwenziwa kwezi patheni zingama-64. I-DCT yinkqubo yokwahlula imifanekiso kwiibhloko ze-8x8 kunye nokuguqula ibhloko nganye ibe yindibaniselwano yala ma-coefficients angama-64.

Kubonakala ngathi umlingo ukuba nawuphi na umfanekiso unokuqulunqwa ngeepatheni ezithile ezingama-64. Nangona kunjalo, oku kuyafana nokuthi nayiphi na indawo eMhlabeni inokuchazwa ngamanani amabini - i-latitude kunye ne-longitude [ebonisa i-hemispheres / approx. guqulela.]. Sihlala sicinga ngomphezulu woMhlaba njenge-dimensional, ngoko sifuna amanani amabini kuphela. Umfanekiso we-8x8 unemilinganiselo engama-64, ngoko sifuna amanani angama-64.

Akukacaci ukuba oku kusinceda njani malunga noxinzelelo. Ukuba sifuna amanani angama-64 ukumela umfanekiso we-8x8, kutheni le nto inokuba ngcono kunokugcina izinto zokukhanya ezingama-64? Senza oku ngesizathu esifanayo sajika amanani amathathu e-RGB kumanani amathathu e-YCbCr: ivumela ukuba sisuse iinkcukacha ezifihlakeleyo.

Kunzima ukubona kanye ukuba yeyiphi inkcukacha esusiweyo kweli nqanaba kuba iJPEG isebenzisa iDCT kwiibhloko eziyi-8x8. Nangona kunjalo, akukho mntu usithintelayo ukuba siwusebenzise kuwo wonke umfanekiso. Nantsi indlela iDCT ejongeka ngayo kwicandelo likaY elisetyenziswa kuwo wonke umfanekiso:

Isebenza njani ifomathi yeJPEG

Ngaphezulu kwamanani angama-60 anokususwa ekugqibeleni kwaye akukho tshintsho lubonakalayo kwifoto.

Isebenza njani ifomathi yeJPEG

Nangona kunjalo, qaphela ukuba xa sikhupha amanani amahlanu okuqala, umahluko uya kubonakala.

Isebenza njani ifomathi yeJPEG

Amanani ekuqaleni amele utshintsho oluphantsi lwefrikhwensi emfanekisweni, apho amehlo ethu ayithatha kakuhle. Amanani ukuya ekupheleni abonisa utshintsho kwiifrikhwensi eziphezulu ekunzima ukuzibona. Ukubona into engenakubonwa liliso, siyakwazi ukwahlula ezi nkcukacha ziphezulu ngokukhupha amanani angama-5000 okuqala.

Isebenza njani ifomathi yeJPEG

Sibona zonke iindawo zomfanekiso apho utshintsho olukhulu lwenzeka ukusuka kwipixel ukuya kwipikseli. Amehlo ekati, amabhovu akhe, ingubo yeterry kunye nezithunzi ezikwikona esezantsi ekhohlo zigqamile. Ungaya phambili ngokususa amanani angama-10 okuqala:

Isebenza njani ifomathi yeJPEG

I-20 000:

Isebenza njani ifomathi yeJPEG

I-40 000:

Isebenza njani ifomathi yeJPEG

I-60 000:

Isebenza njani ifomathi yeJPEG

Ezi nkcukacha ze-high-frequency zisuswe yiJPEG ngexesha loxinzelelo. Akukho lahleko ekuguquleni imibala kwii-coefficients ze-DCT. Ilahleko yenzeka kwinyathelo lesampulu, apho amaxabiso aphezulu okanye akufutshane-zero asuswa. Xa uthoba umgangatho wogcino lweJPEG, inkqubo yonyusa umda wenani lamaxabiso asusiweyo, okunciphisa ubungakanani befayile, kodwa yenza umfanekiso ube pixelated ngakumbi. Yiyo loo nto umfanekiso okwicandelo lokuqala, ubuncinci ngokuphindwe ngama-57, ukhangeleka ngolu hlobo. Ibhloko nganye ye-8x8 yayimelwe yi-coefficients ye-DCT encinci kakhulu xa kuthelekiswa nohlobo oluphezulu lomgangatho.

Unokwenza impembelelo epholileyo njengokusasazwa ngokuthe ngcembe kwemifanekiso. Ungabonisa umfanekiso omfiliba oya usiba neenkcukacha ngakumbi njengoko kukhutshelwa i-coefficients.

Apha, ukonwabela nje, nantsi into oyifumanayo usebenzisa amanani angama-24 kuphela:

Isebenza njani ifomathi yeJPEG

Okanye nje 5000:

Isebenza njani ifomathi yeJPEG

I-blurry kakhulu, kodwa ngandlela-thile iyabonakala!

3. Sebenzisa ubude beekhowudi, idelta kunye neHuffman

Ukuza kuthi ga ngoku, zonke izigaba zoxinzelelo zilahlekile. Inqanaba lokugqibela, ngokuchaseneyo, liqhubeka ngaphandle kokulahlekelwa. Ayicimi ulwazi, kodwa inciphisa kakhulu ubungakanani befayile.

Ungayicinezela njani into ngaphandle kokulahla ulwazi? Khawucinge ukuba singaluchaza njani uxande olulula olumnyama 700 x 437.

IJPEG isebenzisa amanani angama-5000 kule nto, kodwa iziphumo ezingcono kakhulu zinokufumaneka. Ngaba unokuthelekelela iskimu sokukhowuda esingachaza umfanekiso onje ngeebyte ezimbalwa kangangoko kunokwenzeka?

Iskimu esincinci endinokuza naso sisebenzisa ezine: ezintathu ukumela umbala, kunye nesine ukubonisa ukuba zingaphi iipixels ezinemibala. Umbono wokumela amaxabiso aphinda-phindayo ngale ndlela icutheneyo ibizwa ngokuba yi-run-length encoding. Ayilahleki kuba sinokubuyisela idatha ekhowudiweyo kwifomu yayo yoqobo.

Ifayile yeJPEG enoxande olumnyama inkulu kakhulu kune-4 bytes - khumbula ukuba kwinqanaba le-DCT, ucinezelo lusetyenziswa kwiibhloko ze-pixel eziyi-8x8. Ke ngoko, ubuncinci, sifuna i-coefficient enye ye-DCT kuzo zonke ii-pixel ezingama-64. Sifuna enye kuba endaweni yokugcina i-coefficient ye-DCT enye ilandelwa ngo-zero abangama-63, i-encoding yobude bobude buvumela ukuba sigcine inani elinye kwaye sibonise ukuba "zonke ezinye zi-zero."

I-Delta encoding bubuchule apho i-byte nganye iqulethe umahluko ukusuka kwelinye ixabiso, kunexabiso elipheleleyo. Ke ngoko, ukuhlela iibhayithi ezithile kutshintsha umbala wazo zonke ezinye iipikseli. Ngokomzekelo, endaweni yokugcina

12 13 14 14 14 13 13 14

Sinokuqala ngo-12 size ke sibonise ukuba kufuneka sidibanise okanye sithabathe kangakanani na ukuze sifumane inani elilandelayo. Kwaye oku kulandelelana kwikhowudi ye-delta kuthatha imo:

12 1 1 0 0 -1 0 1

Idatha eguqulweyo ayincinci kunedatha yokuqala, kodwa kulula ukuyicinezela. Ukufaka i-delta encoding phambi kobude be-encoding kunokunceda kakhulu ngelixa kuseluxinzelelo olungalahlekiyo.

Ikhowudi yeDelta yenye yeendlela ezimbalwa ezisetyenziswa ngaphandle kweebhloko ze-8x8. Kuma-coefficients e-DCT angama-64, omnye ngumsebenzi wamaza oqhubekayo (umbala oqinileyo). Imele ukukhanya okuphakathi kwebhloko nganye kumacandelo e-luma, okanye i-avareji eluhlaza okwesibhakabhaka kumacandelo e-Cb, njalo njalo. Ixabiso lokuqala kwibhloko nganye ye-DCT libizwa ngokuba lixabiso le-DC, kwaye ixabiso ngalinye le-DC liyi-delta ekhowudiweyo ngokubhekisele kwezo zangaphambili. Ngoko ke, ukutshintsha ukukhanya kwebhloko yokuqala kuya kuchaphazela zonke iibhloko.

Imfihlelo yokugqibela ihleli: njani ukutshintsha isinye kuwonakalisa ngokupheleleyo umfanekiso wonke? Ukuza kuthi ga ngoku, amanqanaba oxinzelelo awanazo iimpawu ezinjalo. Impendulo ilele kwiJPEG header. I-500 bytes yokuqala iqulethe i-metadata malunga nomfanekiso - ububanzi, ubude, njl., kwaye asikasebenzi nabo okwangoku.

Ngaphandle kweheader phantse akunakwenzeka (okanye kunzima kakhulu) ukucacisa iJPEG. Kuya kubonakala ngathi ndizama ukuchaza umfanekiso kuwe, kwaye ndiyaqala ukuyila amagama ukuze ndidlulise umbono wam. Inkcazo ngokuqinisekileyo iya kufinyezwa, kuba ndiyakwazi ukuqamba amagama anentsingiselo kanye endifuna ukuyidlulisela, kodwa kuye wonke umntu akayi kwenza ngqiqo.

Kuvakala ukuba bubudenge, kodwa yiloo nto kanye eyenzekayo. Umfanekiso ngamnye weJPEG ucinezelwe ngeekhowudi ezithile kuwo. Isichazi-magama sekhowudi sigcinwe kwisihloko. Obu buchule bubizwa ngokuba yikhowudi yeHuffman kwaye isigama sibizwa ngokuba yitafile yeHuffman. Kwi-header, itafile iphawulwe ngamabhayithi amabini - 255 kwaye emva koko 196. Icandelo ngalinye lombala linokuba netafile yalo.

Utshintsho kwiitafile luyakuchaphazela kakhulu nawuphi na umfanekiso. Umzekelo omhle kukutshintsha umgca we-15 ukuya kwi-1.

Isebenza njani ifomathi yeJPEG

Oku kwenzeka ngenxa yokuba iitheyibhile zichaza indlela amasuntswana angawodwa kufuneka afundwe ngayo. Ukuza kuthi ga ngoku sisebenze kuphela ngamanani okubini kwimo yesishumi. Kodwa oku kusifihla into yokuba ukuba ufuna ukugcina inombolo ye-1 kwi-byte, iya kujongeka njenge-00000001, kuba i-byte nganye kufuneka ibe neebhithi ezisibhozo, nokuba inye kuphela efunekayo.

Oku kunokuba yinkcitho enkulu yendawo ukuba unamanani amaninzi amancinci. Ikhowudi ye-Huffman bubuchule obuvumela ukuba siphumle le mfuneko yokuba inani ngalinye kufuneka lithathe amasuntswana asibhozo. Oku kuthetha ukuba xa ubona ii-byte ezimbini:

234 115

Emva koko, kuxhomekeke kwitafile kaHuffman, ezi zinokuba ngamanani amathathu. Ukuzikhupha, kufuneka uqale uzihlule zibe ngamasuntswana ahlukeneyo:

11101010 01110011

Emva koko sijonge kwitheyibhile ukuze sibone indlela yokwenza amaqela. Umzekelo, le inokuba ngamasuntswana amathandathu okuqala, (111010), okanye ama-58 kwidesimali, ilandelwe ngamasuntswana amahlanu (10011), okanye i-19, kwaye ekugqibeleni amasuntswana amane okugqibela (0011), okanye isi-3.

Ngoko ke, kunzima kakhulu ukuqonda i-bytes kweli nqanaba loxinzelelo. Ii-bytes aziyimeli into ebonakala ngathi. Andiyi kungena kwiinkcukacha zokusebenza kunye netafile kweli nqaku, kodwa izixhobo ngalo mbandela kwi-intanethi lanele.

Elinye iqhinga elinomdla onokuthi ulenze ngolu lwazi kukwahlula iheader kwiJPEG kwaye uyigcine ngokwahlukileyo. Enyanisweni, kuvela ukuba nguwe kuphela onokufunda ifayile. I-Facebook yenza oku ukwenza iifayile zibe zincinci.

Yintoni enye enokwenziwa kukutshintsha itafile kaHuffman kancinci. Kwabanye kuya kubonakala njengomfanekiso ophukileyo. Kwaye nguwe kuphela oya kuyazi indlela yomlingo yokuyilungisa.

Masishwankathele: ke yintoni efunekayo ukucacisa iJPEG? Kuyafuneka:

  1. Khupha i Huffman table(s) ukusuka kwiheda kwaye uchaze amasuntswana.
  2. Khupha i-cosine ecacileyo yokuguqula i-coefficients yombala ngamnye kunye necandelo lokukhanya kwibhloko nganye ye-8x8, yenza inverse run-length kunye ne-delta encoding transforms.
  3. Hlanganisa i-cosines ngokusekwe kwi-coefficients ukufumana amaxabiso e-pixel kwibhloko nganye ye-8x8.
  4. Ukulinganisa izakhi zombala ukuba isampulu yenziwe (olu lwazi lukwisihloko).
  5. Guqula iziphumo ze-YCbCr zepixel nganye ibe yiRGB.
  6. Bonisa umfanekiso kwiscreen!

Umsebenzi onzima wokujonga nje ifoto kunye nekati! Nangona kunjalo, into endiyithandayo ngayo kukuba ibonisa indlela iteknoloji yeJPEG ephakathi kwabantu. Isekwe kwizinto ezikhethekileyo zombono wethu, okusivumela ukuba sifezekise ucinezelo olungcono kunobuchwepheshe obuqhelekileyo. Kwaye ngoku ukuba siyayiqonda indlela iJPEG esebenza ngayo, sinokucinga ukuba obu buchwepheshe bunokudluliselwa njani kwezinye iindawo. Ngokomzekelo, i-encoding ye-delta kwividiyo inokubonelela ngokunciphisa okukhulu kwisayizi yefayile, kuba kukho iindawo ezipheleleyo ezingatshintshiyo ukusuka kwisakhelo ukuya kwisakhelo (umzekelo, imvelaphi).

Ikhowudi esetyenziswe kwinqaku, ivuliwe, kwaye iqulethe imiyalelo yendlela yokutshintsha imifanekiso ngeyakho.

umthombo: www.habr.com

Yongeza izimvo