Yadda tsarin JPEG ke aiki

Hotunan JPEG suna ko'ina a cikin rayuwarmu ta dijital, amma a bayan wannan fa'idar wayar da kan jama'a akwai algorithms waɗanda ke cire cikakkun bayanai waɗanda ba su iya ganewa ga idon ɗan adam. Sakamakon shine mafi girman ingancin gani a cikin ƙaramin girman fayil - amma ta yaya daidai yake aiki duka? Bari mu ga abin da ainihin idanunmu ba sa gani!

Yadda tsarin JPEG ke aiki

Yana da sauƙi a ɗauka da sauƙi ikon aika hoto zuwa aboki kuma kada ku damu da wace na'ura, browser ko tsarin aiki da suke amfani da shi - amma ba koyaushe haka lamarin yake ba. A farkon shekarun 1980, kwamfutoci na iya adanawa da nuna hotuna na dijital, amma akwai ra'ayoyi da yawa masu gasa game da hanya mafi kyau don yin wannan. Ba za ku iya aika hoto kawai daga wannan kwamfuta zuwa wata ba kuma kuna fatan zai yi aiki.

Don magance wannan matsala, an kafa kwamitin kwararru daga sassan duniya a shekarar 1986 mai suna "Ƙungiyar Ƙwararrun Ƙwararrun Hoto» (Ƙungiyar Ƙwararrun Ƙwararrun Hoto, JPEG), wanda aka kafa a matsayin haɗin gwiwa tsakanin Ƙungiyar Ƙasa ta Duniya don daidaitawa (ISO) da Hukumar Kula da Wutar Lantarki ta Duniya (IEC), kungiyoyi biyu na kasa da kasa da ke da hedkwata a Geneva, Switzerland.

Ƙungiya ta mutane da ake kira JPEG sun ƙirƙiri ma'auni na hoto na dijital na JPEG a cikin 1992. Duk wanda ya yi amfani da Intanet yana yiwuwa ya ci karo da hotunan JPEG. Wannan ita ce hanyar da aka fi sani don ɓoye, aikawa da adana hotuna. Daga shafukan yanar gizo zuwa imel zuwa kafofin watsa labarun, JPEG ana amfani da biliyoyin sau a rana - kusan duk lokacin da muka kalli hoto akan layi ko aika shi. Idan ba tare da JPEG ba, gidan yanar gizon zai zama ƙasa mai launi, mai hankali, kuma mai yiwuwa yana da ƙarancin hotuna masu kyan gani!

Wannan labarin yana game da yadda ake yanke hoton JPEG. Ma'ana, abin da ake buƙata don canza matse bayanan da aka adana a kwamfuta zuwa hoton da ke bayyana akan allo. Wannan ya cancanci sanin, ba wai kawai don yana da mahimmanci don fahimtar fasahar da muke amfani da ita a kowace rana ba, har ma saboda ta hanyar buɗe matakan matsawa, muna ƙarin koyo game da fahimta da hangen nesa, da menene cikakkun bayanai idanunmu suka fi kula da su.

Bugu da ƙari, yin wasa da hotuna ta wannan hanya yana da ban sha'awa sosai.

Yadda tsarin JPEG ke aiki

Duba cikin JPEG

A kan kwamfuta, ana adana komai a matsayin jerin lambobin binary. Yawanci waɗannan raƙuman raƙuman ruwa, sifilai da waɗanda, an haɗa su cikin ƙungiyoyi takwas don yin bytes. Lokacin da ka buɗe hoton JPEG akan kwamfuta, dole ne wani abu (mai bincike, tsarin aiki, wani abu dabam) dole ne ya yanke bayanan bytes, maido da ainihin hoton azaman jerin launuka waɗanda za a iya nunawa.

Idan ka sauke wannan dadi hoton kyanwa kuma buɗe shi a cikin editan rubutu, za ku ga tarin haruffa marasa daidaituwa.

Yadda tsarin JPEG ke aiki
Anan ina amfani da Notepad++ don bincika abubuwan da ke cikin fayil ɗin, tunda masu gyara rubutu na yau da kullun kamar Notepad akan Windows zasu lalata fayil ɗin binary bayan adanawa kuma ba zai ƙara gamsar da tsarin JPEG ba.

Bude hoto a cikin na'ura mai sarrafa kalmomi yana rikitar da kwamfutar, kamar yadda kuke rikita kwakwalwar ku lokacin da kuka goge idanunku kuma fara ganin tabo masu launi!

Wadannan tabo da kuke gani ana kiran su phosphenes, kuma ba sakamakon wani haske mai motsa jiki ba ko hasashe da hankali ya haifar. Suna faruwa ne saboda kwakwalwarka tana tunanin cewa duk wani siginar lantarki a cikin jijiyoyin gani suna isar da bayanai game da haske. Kwakwalwa tana buƙatar yin waɗannan zato domin babu wata hanya ta sanin ko sigina sauti ne, gani, ko wani abu dabam. Duk jijiyoyi a cikin jiki suna watsa daidai da motsin wutar lantarki iri ɗaya. Ta hanyar matsa lamba a idanunku, kuna aika sakonnin da ba na gani ba, amma kunna masu karɓar ido, wanda kwakwalwarku ta fassara - a wannan yanayin, ba daidai ba - a matsayin wani abu na gani. Kuna iya ganin matsi a zahiri!

Yana da ban dariya a yi tunanin yadda kwamfutoci suke kama da kwakwalwa, amma kuma kwatanci ne mai amfani don kwatanta yawan ma'anar bayanai - ko jijiyoyi ke ɗauka ta jiki ko kuma an adana su a cikin kwamfuta - ya dogara da yadda ake fassara shi. Duk bayanan binary sun ƙunshi XNUMXs da XNUMXs, ainihin abubuwan da ke iya isar da bayanai kowane iri. Kwamfutar ku sau da yawa tana gano yadda ake fassara su ta hanyar amfani da alamu kamar kari na fayil. Yanzu muna tilasta shi ya fassara su a matsayin rubutu, saboda abin da editan rubutu ke tsammani ke nan.

Don fahimtar yadda ake yanke JPEG, muna buƙatar ganin siginar asali da kansu - bayanan binary. Ana iya yin wannan ta amfani da editan hexadecimal, ko kai tsaye a kunne shafin yanar gizon labarin asali! Akwai hoto, kusa da wanda a cikin filin rubutu akwai duk bytes (ban da rubutun kai), wanda aka gabatar a cikin nau'i na goma. Kuna iya canza su, kuma rubutun zai sake yin rikodin kuma ya samar da sabon hoto akan tashi.

Yadda tsarin JPEG ke aiki

Kuna iya koyan abubuwa da yawa kawai ta yin wasa da wannan editan. Misali, za ku iya gaya wa wane tsari aka adana pixels a ciki?

Abin ban mamaki game da wannan misalin shine canza wasu lambobi ba ya shafar hoton kwata-kwata, amma, misali, idan kun maye gurbin lamba 17 da 0 a layin farko, hoton zai lalace gaba ɗaya!

Yadda tsarin JPEG ke aiki

Sauran canje-canje, kamar maye gurbin 7 akan layi 1988 tare da lamba 254, yana canza launi, amma kawai na pixels masu zuwa.

Yadda tsarin JPEG ke aiki

Wataƙila abu mafi ban mamaki shine cewa wasu lambobi suna canza ba kawai launi ba, har ma da siffar hoton. Canza 70 a layi na 12 zuwa 2 kuma duba layin saman hoton don ganin abin da nake nufi.

Yadda tsarin JPEG ke aiki

Kuma ko menene hoton JPEG da kuke amfani da shi, koyaushe zaku sami waɗannan sifofin darasi masu ban mamaki yayin gyaran bytes.

Lokacin wasa tare da edita, yana da wahala a fahimci yadda ake sake ƙirƙira hoto daga waɗannan bytes, tunda JPEG matsawa ya ƙunshi fasahohi daban-daban guda uku, ana amfani da su a jere a matakan. Za mu yi nazarin kowannensu daban don fallasa halayen ban mamaki da muke gani.

Matakai uku na matsawar JPEG:

  1. Samfuran launi.
  2. Canji mai hankali da samfur.
  3. Gudu dogon rikodi, delta и Huffman

Don ba ku ra'ayi game da girman matsawa, lura cewa hoton da ke sama yana wakiltar lambobi 79, ko kuma kusan 819 KB. Idan muka adana shi ba tare da matsawa ba, kowane pixel zai buƙaci lambobi uku - don abubuwan ja, kore da shuɗi. Wannan zai kai adadin 79, ko kusan. 917 KB. Sakamakon matsawa JPEG, an rage fayil ɗin ƙarshe da fiye da sau 700!

A gaskiya ma, wannan hoton za a iya matsawa sosai. A ƙasa akwai hotuna guda biyu gefe-gefe - hoton da ke hannun dama an matsa shi zuwa 16 KB, wato, sau 57 ƙarami fiye da sigar da ba a haɗa ba!

Yadda tsarin JPEG ke aiki

Idan ka duba da kyau, za ka ga cewa waɗannan hotuna ba iri ɗaya ba ne. Dukansu hotuna ne tare da matsawa na JPEG, amma wanda ya dace ya fi karami a girma. Har ila yau yana kallon ɗan ƙaramin muni (duba murabba'in launi na bango). Shi ya sa ake kuma kiran JPEG damtsewa; Yayin aiwatar da matsawa, hoton ya canza kuma ya rasa wasu cikakkun bayanai.

1. Samfuran launi

Anan akwai hoto tare da matakin farko na matsawa kawai.

Yadda tsarin JPEG ke aiki
(Sigar hulɗa - in asali labarai). Cire lamba ɗaya yana lalata duk launuka. Koyaya, idan an cire ainihin lambobi shida, kusan babu wani tasiri akan hoton.

Yanzu lambobin sun ɗan fi sauƙi don tantancewa. Wannan kusan jerin launuka ne mai sauƙi, wanda kowane byte ya canza daidai pixel ɗaya, amma a lokaci guda ya riga ya kai rabin girman girman hoton da ba a haɗa shi ba (wanda zai ɗauki kusan 300 KB a cikin wannan raguwar girman). Za a iya tunanin dalili?

Kuna iya ganin cewa waɗannan lambobin ba su wakiltar daidaitattun abubuwan haɗin ja, kore, da shuɗi ba, tunda idan muka maye gurbin dukkan lambobin da sifili, za mu sami hoto mai kore (maimakon fari).

Yadda tsarin JPEG ke aiki

Wannan saboda waɗannan bytes suna tsaye ga Y (haske),

Yadda tsarin JPEG ke aiki

Cb (dangi shuɗi),

Yadda tsarin JPEG ke aiki

da Cr (dangi jajayen) hotuna.

Yadda tsarin JPEG ke aiki

Me yasa ba'a amfani da RGB? Bayan haka, wannan shine yadda yawancin allon zamani ke aiki. Mai saka idanu naka zai iya nuna kowane launi, gami da ja, kore da shuɗi, tare da mabambantan ƙarfi ga kowane pixel. Ana samun fari ta hanyar kunna duka ukun a cikakken haske, kuma baki ta hanyar kashe su.

Yadda tsarin JPEG ke aiki

Wannan kuma yayi kama da yadda idon mutum yake aiki. Ana kiran masu karɓar launi a cikin idanunmu "cones", kuma an raba su zuwa nau'i uku, kowannensu ya fi dacewa da ko dai ja, koren ko launin shudi (S-type cones suna da hankali a cikin violet-blue (S daga Turanci Short - short-wave spectrum), M. -type - a cikin kore-rawaya (M daga Turanci Medium - matsakaici-kalaman), da L-type - a cikin rawaya-ja (L daga Turanci Dogon - dogon-kalaman) sassa na bakan. Kasancewar waɗannan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan nau'ikan guda uku (da sanduna, waɗanda ke da hankali a cikin ɓangaren koren Emerald na bakan) yana ba mutum hangen nesa mai launi. /kimanin. fassara.]. Sutsi, Wani nau'in photoreceptor a cikin idanunmu, yana iya gano canje-canje a cikin haske, amma ya fi dacewa da launi. Idanuwanmu suna da sanduna kusan miliyan 120 da mazugi miliyan 6 kawai.

Wannan shine dalilin da ya sa idanuwanmu sun fi kyau a gano canje-canje a cikin haske fiye da canza launi. Idan kun raba launi da haske, zaku iya cire ɗan launi kaɗan kuma ba wanda zai lura da komai. Samfuran chroma shine tsarin wakiltar sassan launi na hoto a ƙaramin ƙuduri fiye da abubuwan haske. A cikin misalin da ke sama, kowane pixel yana da daidai ɓangaren Y, kuma kowane rukuni na pixels huɗu yana da daidai ɓangaren Cb ɗaya da Cr guda ɗaya. Saboda haka, hoton ya ƙunshi bayanan launi sau huɗu fiye da na asali.

Ana amfani da sararin launi na YCbCr ba kawai a cikin JPEG ba. An fara ƙirƙira shi a cikin 1938 don shirye-shiryen talabijin. Ba kowa ne ke da TV mai launi ba, don haka raba launi da haske ya ba kowa damar samun sigina iri ɗaya, kuma TV ba tare da launi ba kawai ana amfani da bangaren haske kawai.

Don haka cire lamba ɗaya daga editan gaba ɗaya ya lalata dukkan launuka. Ana adana abubuwan da aka gyara a cikin sigar YYYY Cb Cr (a zahiri, ba lallai ba ne a cikin wannan tsari - an ƙayyade odar ajiya a cikin taken fayil). Cire lambar farko zai sa a gane darajar farko na Cb a matsayin Y, Cr a matsayin Cb, kuma gabaɗaya za ku sami tasirin domino wanda ke canza duk launukan hoton.

Ƙayyadaddun JPEG baya tilasta muku amfani da YCbCr. Amma yawancin fayiloli suna amfani da shi saboda yana samar da mafi kyawun hotuna da aka saukar fiye da RGB. Amma ba lallai ne ka dauki maganata ba. Duba da kanku a cikin tebur ɗin da ke ƙasa yadda samfurin kowane bangare zai yi kama da RGB da YCbCr.

Yadda tsarin JPEG ke aiki
(Sigar hulɗa - in asali labarai).

Cire shuɗi ba shi da kyan gani kamar na ja ko kore. Wannan saboda cones miliyan shida a idanunku, kusan 64% suna jin ja, 32% zuwa kore da 2% zuwa shuɗi.

An fi ganin ƙaddamarwar ɓangaren Y (a ƙasa hagu). Ko da ƙaramin canji ana iya gani.

Canza hoto daga RGB zuwa YCbCr baya rage girman fayil, amma yana sauƙaƙa nemo bayanan da ba a iya gani ba wanda za'a iya cirewa. Matsi na rashin ƙarfi yana faruwa a mataki na biyu. Ya dogara ne akan ra'ayin gabatar da bayanai a cikin mafi matsi tsari.

2. Mai hankali cosine canji da samfur

Wannan matakin matsawa shine, ga mafi yawancin, menene JPEG gabaɗaya. Bayan an mayar da launuka zuwa YCbCr, ana matsar da abubuwan da aka haɗa daban-daban, don haka za mu iya mayar da hankali kan kawai bangaren Y. Kuma ga yadda tsarin YCbCr ya kasance bayan shafa wannan Layer.

Yadda tsarin JPEG ke aiki
(Sigar hulɗa - in asali labarai). A cikin sigar hulɗa, danna kan pixel yana gungurawa editan zuwa layin da ke wakiltarsa. Gwada cire lambobi daga ƙarshe ko ƙara ƴan sifili zuwa takamaiman lamba.

A kallon farko, yana kama da matsawa mara kyau. Akwai pixels 100 a cikin hoto, kuma yana ɗaukar lambobi 000 don wakiltar haskensu (Y-components) - wannan ya fi muni da matsawa komai!

Koyaya, lura cewa yawancin waɗannan lambobin ba su da sifili. Bugu da ƙari, duk waɗannan sifilai a ƙarshen layi ana iya cire su ba tare da canza hoton ba. Akwai kusan lambobi 26 da suka rage, kuma wannan ya ragu kusan sau 000!

Wannan matakin ya ƙunshi sirrin ƙirar dara. Ba kamar sauran tasirin da muka gani ba, bayyanar waɗannan alamu ba ƙugiya ba ne. Su ne tubalan ginin duka hoton. Kowane layi na editan yana ƙunshe da lambobi daidai 64, ƙayyadaddun ƙididdiga na cosine canzawa (DCT) daidai da ƙarfin nau'ikan 64 na musamman.

An kafa waɗannan alamu bisa ga makircin cosine. Ga yadda wasunsu suka yi kama:

Yadda tsarin JPEG ke aiki
8 daga cikin 64 rashin daidaito

A ƙasa akwai hoton da ke nuna dukkan alamu 64.

Yadda tsarin JPEG ke aiki
(Sigar hulɗa - in asali labarai).

Wadannan alamu suna da mahimmanci musamman saboda sun zama tushen ginshiƙan hotuna 8x8. Idan ba ku saba da algebra na layi ba, wannan yana nufin cewa ana iya yin kowane hoto 8x8 daga waɗannan alamu 64. DCT shine tsari na rarraba hotuna zuwa tubalan 8x8 da canza kowane toshe zuwa haɗin waɗannan ƙididdiga 64.

Yana da alama sihiri cewa kowane hoto yana iya haɗawa da takamaiman alamu 64. Duk da haka, wannan daidai yake da cewa kowane wuri a duniya ana iya kwatanta shi da lambobi biyu - latitude da longitude [yana nuna hemispheres / kimanin. fassara.]. Sau da yawa muna tunanin saman duniya a matsayin mai girma biyu, don haka lambobi biyu kawai muke bukata. Hoton 8x8 yana da girma 64, don haka muna buƙatar lambobi 64.

Har yanzu ba a bayyana yadda wannan ke taimaka mana ta fuskar matsawa ba. Idan muna buƙatar lambobi 64 don wakiltar hoton 8x8, me yasa wannan zai fi kyau fiye da adana abubuwan haske 64 kawai? Muna yin haka saboda wannan dalili mun juya lambobi RGB uku zuwa lambobin YCbCr uku: yana ba mu damar cire cikakkun bayanai.

Yana da wahala a ga ainihin abin da aka cire dalla-dalla a wannan matakin saboda JPEG yana amfani da DCT zuwa 8x8 tubalan. Duk da haka, babu wanda ya hana mu yin amfani da shi ga dukan hoto. Anan ga yadda DCT yayi kama da bangaren Y da aka yi amfani da shi ga duka hoton:

Yadda tsarin JPEG ke aiki

Fiye da lambobi 60 za a iya cire su daga ƙarshe ba tare da kusan wani canje-canje ga hoto ba.

Yadda tsarin JPEG ke aiki

Koyaya, lura cewa idan muka fitar da lambobi biyar na farko, bambancin zai fito fili.

Yadda tsarin JPEG ke aiki

Lambobin da ke farkon suna wakiltar ƙananan canje-canje a cikin hoton, wanda idanuwanmu suka ɗauka mafi kyau. Lambobi zuwa ƙarshe suna nuna canje-canje a cikin manyan mitoci waɗanda suka fi wahalar ganewa. Don “ga abin da ido ba zai iya gani ba,” za mu iya ware waɗannan manyan bayanan mitar ta hanyar cire lambobi 5000 na farko.

Yadda tsarin JPEG ke aiki

Muna ganin duk wuraren hoton inda babban canji ke faruwa daga pixel zuwa pixel. Idanun katsin, barasar sa, bargon terry da inuwar da ke ƙasan kusurwar hagu sun fito waje. Kuna iya ci gaba ta hanyar cire lambobi 10 na farko:

Yadda tsarin JPEG ke aiki

20 000:

Yadda tsarin JPEG ke aiki

40 000:

Yadda tsarin JPEG ke aiki

60 000:

Yadda tsarin JPEG ke aiki

Ana cire waɗannan cikakkun bayanai masu tsayi ta JPEG yayin matakin matsawa. Babu asara wajen canza launuka zuwa ma'auni na DCT. Asara yana faruwa a matakin samfurin, inda ake cire maɗaukaki ko ƙimar kusan-sifili. Lokacin da ka rage ingancin ceton JPEG, shirin yana ƙara ƙofa don adadin ƙimar da aka cire, wanda ke rage girman fayil ɗin, amma yana sa hoton ya fi pixelated. Shi ya sa hoton da ke sashin farko, wanda ya ninka sau 57, yayi kama da haka. Kowane shinge na 8x8 an wakilta shi da ƙarancin ƙididdiga na DCT idan aka kwatanta da mafi girman sigar inganci.

Kuna iya ƙirƙirar sakamako mai sanyi kamar yawo a hankali na hotuna. Kuna iya nuna hoto mai duhu wanda ke ƙara zama dalla-dalla yayin da ake zazzage ƙididdiga masu yawa.

Anan, don nishaɗi kawai, shine abin da kuke samu ta amfani da lambobi 24 kawai:

Yadda tsarin JPEG ke aiki

Ko kuma kawai 5000:

Yadda tsarin JPEG ke aiki

Sosai blurry, amma ko ta yaya ake iya ganewa!

3. Gudu dogon rikodi, delta da Huffman

Ya zuwa yanzu, duk matakan matsawa sun yi asara. Mataki na ƙarshe, akasin haka, yana ci gaba ba tare da asara ba. Ba ya share bayanai, amma yana rage girman fayil ɗin sosai.

Ta yaya za ku iya damfara wani abu ba tare da zubar da bayanai ba? Ka yi tunanin yadda za mu kwatanta baƙar fata mai sauƙi 700 x 437.

JPEG yana amfani da lambobi 5000 don wannan, amma ana iya samun sakamako mafi kyau. Za ku iya tunanin wani tsari na ɓoyewa wanda zai kwatanta irin wannan hoton a cikin ƴan bytes kamar yadda zai yiwu?

Ƙarƙashin tsarin da zan iya fito da shi yana amfani da hudu: uku don wakiltar launi, kuma na huɗu don nuna adadin pixels na launi. Tunanin wakiltar maimaita dabi'u ta wannan hanyar da aka ƙulla ana kiran sa rikodin tsawon tsayin gudu. Ba shi da asara saboda za mu iya mayar da rufaffiyar bayanan zuwa ainihin sigar sa.

Fayil na JPEG tare da rectangle baki ya fi girma fiye da 4 bytes - ku tuna cewa a matakin DCT, ana amfani da matsawa zuwa 8x8 pixel blocks. Don haka, aƙalla, muna buƙatar haɗin haɗin DCT ɗaya ga kowane pixels 64. Muna buƙatar ɗaya saboda maimakon adana ƙimar ƙimar DCT guda ɗaya wanda ke biye da sifili 63, rikodin tsawon gudu yana ba mu damar adana lamba ɗaya kuma mu nuna cewa "duk sauran sifilai ne."

Sanya Delta dabara ce wacce kowace byte ta ƙunshi bambanci daga wasu ƙima, maimakon cikakkiyar ƙima. Don haka, gyara wasu bytes yana canza launin duk sauran pixels. Misali, maimakon adanawa

12 13 14 14 14 13 13 14

Za mu iya farawa da 12 sannan mu nuna kawai nawa muke buƙatar ƙarawa ko ragi don samun lamba ta gaba. Kuma wannan jeri a cikin codeing delta yana ɗaukar tsari:

12 1 1 0 - 0 1 0

Bayanan da aka canjawa bai yi ƙasa da ainihin bayanan ba, amma yana da sauƙin matsawa. Aiwatar da rikodin rikodi na delta kafin shigar da dogon gudu na iya taimakawa da yawa yayin da har yanzu ake zama matsi mara asara.

Delta codeing yana ɗaya daga cikin ƴan fasahohin da ake amfani da su a waje da tubalan 8x8. Daga cikin 64 DCT coefficients, ɗaya shine kawai aikin igiyar ruwa na dindindin (launi mai ƙarfi). Yana wakiltar matsakaicin haske na kowane toshe don abubuwan luma, ko matsakaicin shuɗi don abubuwan Cb, da sauransu. Ƙimar farko na kowane toshe DCT ana kiranta darajar DC, kuma kowace ƙimar DC an ɗora ta akan abubuwan da suka gabata. Saboda haka, canza haske na farkon toshe zai shafi duk tubalan.

Sirrin ƙarshe ya kasance: ta yaya canza maɗaukaki ɗaya ke lalata hoton gaba ɗaya? Ya zuwa yanzu, matakan matsawa ba su da irin waɗannan kaddarorin. Amsar tana cikin taken JPEG. Bytes 500 na farko sun ƙunshi metadata game da hoton - faɗi, tsayi, da sauransu, kuma ba mu yi aiki da su ba tukuna.

Ba tare da rubutun kai ba yana da wuya (ko da wahala sosai) a yanke JPEG. Zai zama kamar ina ƙoƙarin kwatanta muku hoton ne, kuma na fara ƙirƙira kalmomi don bayyana ra'ayi na. Wataƙila bayanin zai kasance mai takure sosai, tunda zan iya ƙirƙira kalmomi da ainihin ma'anar da nake son isarwa, amma ga kowa da kowa ba za su yi ma'ana ba.

Yana jin wauta, amma abin da ya faru ke nan. Kowane hoton JPEG yana matsawa tare da takamaiman lambobi. Ana adana ƙamus na lamba a cikin taken. Ana kiran wannan dabarar lambar Huffman kuma ana kiran ƙamus ɗin Huffman tebur. A cikin taken, tebur yana alama da bytes biyu - 255 sannan kuma 196. Kowane ɓangaren launi na iya samun nasa tebur.

Canje-canje zuwa tebur zai yi tasiri sosai ga kowane hoto. Kyakkyawan misali shine canza layin 15 zuwa 1.

Yadda tsarin JPEG ke aiki

Wannan yana faruwa ne saboda allunan sun fayyace yadda yakamata a karanta rago ɗaya ɗaya. Ya zuwa yanzu kawai mun yi aiki tare da lambobin binary a cikin nau'i na decimal. Amma wannan ya boye mana cewa idan kana son adana lamba 1 a cikin byte, zai yi kama da 00000001, tunda kowane byte dole ne ya kasance yana da bit takwas daidai, ko da daya ne kawai ake bukata.

Wannan mai yuwuwa babban ɓata sarari ne idan kuna da ƙananan lambobi masu yawa. Lambar Huffman wata dabara ce da ke ba mu damar sassauta wannan buƙatu cewa kowane lamba dole ne ya mamaye rago takwas. Wannan yana nufin cewa idan ka ga bytes biyu:

234 115

Sannan, dangane da teburin Huffman, waɗannan na iya zama lambobi uku. Don fitar da su, kuna buƙatar fara rarraba su cikin guda ɗaya:

11101010 01110011

Sa'an nan kuma mu dubi tebur don gano yadda za a hada su. Misali, wannan na iya zama rago shida na farko, (111010), ko 58 a cikin adadi na goma, sai kuma rago biyar (10011), ko 19, kuma a ƙarshe na ƙarshe huɗu (0011), ko 3.

Saboda haka, yana da matukar wahala a fahimci bytes a wannan mataki na matsawa. Bytes ba sa wakiltar abin da suke gani. Ba zan shiga cikin cikakkun bayanai game da aiki tare da tebur a cikin wannan labarin ba, amma kayan akan wannan batu akan layi ya ishe.

Dabarar mai ban sha'awa da za ku iya yi tare da wannan ilimin ita ce raba taken daga JPEG kuma ku adana shi daban. A gaskiya ma, ya bayyana cewa kawai za ku iya karanta fayil ɗin. Facebook yana yin haka ne don ƙara ƙarami.

Abin da kuma za a iya yi shi ne canza Huffman tebur kadan kadan. Ga wasu zai yi kama da hoton da ya karye. Kuma kawai za ku san hanyar sihiri don gyara shi.

Bari mu taƙaita: don haka menene ake buƙata don yanke JPEG? Wajibi:

  1. Cire tebur (s) na Huffman daga taken kuma yanke madaidaicin rago.
  2. Cire madaidaitan juzu'in juzu'i don kowane launi da kayan haske don kowane shingen 8x8, yin juzu'in gudu-gudu da canje-canjen rikodi na delta.
  3. Haɗa cosines dangane da ƙididdiga don samun ƙimar pixel ga kowane shingen 8x8.
  4. Ma'auni masu launi masu ma'auni idan an yi samfuri (wannan bayanin yana cikin taken).
  5. Mayar da sakamakon YCbCr ƙimar kowane pixel zuwa RGB.
  6. Nuna hoton akan allon!

Babban aiki don kawai kallon hoto tare da cat! Koyaya, abin da nake so game da shi shine yana nuna yadda fasahar JPEG ta ɗan adam ta kasance. Ya dogara ne akan nau'ikan tsinkayenmu, yana ba mu damar cimma matsawa mafi kyau fiye da fasahohin al'ada. Kuma yanzu da muka fahimci yadda JPEG ke aiki, za mu iya tunanin yadda za a iya canza waɗannan fasahohin zuwa wasu yankuna. Misali, rikodin rikodin delta a cikin bidiyo na iya samar da raguwa mai mahimmanci a girman fayil, tunda galibi ana samun gabaɗayan wuraren da ba sa canzawa daga firam zuwa firam (misali, bangon baya).

Lambar da aka yi amfani da ita a cikin labarin, yana buɗewa, kuma yana ƙunshe da umarni kan yadda ake maye gurbin hotuna da naku.

source: www.habr.com

Add a comment