Forma JPEG çawa dixebite

Wêneyên JPEG di jiyana meya dîjîtal de berbelav in, lê li pişt vê xêzkirina hişmendiyê algorîtmayên ku hûrguliyên ku ji çavê mirov re nayên têgihîştin radikin hene. Encam di mezinahiya pelê ya herî piçûk de kalîteya dîtbarî ya herî bilind e - lê bi rastî ew hemî çawa dixebite? Ka em bibînin ka bi rastî çavên me çi nabînin!

Forma JPEG çawa dixebite

Hêsan e ku meriv jêhatîbûna şandina wêneyek ji hevalek xwe re û xem neke ku ew kîjan amûr, gerok an pergala xebitandinê bikar tînin - lê her gav ne wusa bû. Di destpêka salên 1980-an de, komputer dikaribû wêneyên dîjîtal hilîne û nîşan bide, lê gelek ramanên hevrikî li ser awayê çêtirîn kirina vê yekê hebûn. Hûn nekarin tenê wêneyek ji yek komputerek din bişînin û hêvî bikin ku ew ê bixebite.

Ji bo çareserkirina vê pirsgirêkê, di sala 1986an de komîteyek pisporên ji çar aliyê cîhanê bi navê "Koma Hevbeş ya Pisporên Wênegiriyê» (Joint Photographic Experts Group, JPEG), ku wekî hewildanek hevbeş di navbera Rêxistina Navneteweyî ya Standardkirinê (ISO) û Komîsyona Elektroteknîkî ya Navneteweyî (IEC), du rêxistinên standardên navneteweyî yên ku navenda wan li Cenevre, Swîsre ye, hate damezrandin.

Komek mirovên bi navê JPEG di sala 1992 de standarda berhevkirina wêneya dîjîtal JPEG afirandin. Kesê ku Înternetê bikar aniye belkî rastî wêneyên kodkirî yên JPEG hatiye. Ev awayê herî gelemperî ye ji bo kodkirin, şandin û hilanîna wêneyan. Ji rûpelên malperê bigire heya e-nameyê heya medyaya civakî, JPEG rojê bi mîlyaran carî tê bikar anîn - hema hema her gava ku em wêneyek serhêl dibînin an dişînin. Bê JPEG, tevn dê kêmtir rengîn, hêdîtir be, û dibe ku kêm wêneyên pisîkan hebin!

Ev gotar li ser meriv çawa wêneyek JPEG deşîfre dike. Bi gotinek din, ji bo veguheztina daneyên pêçandî yên ku li ser komputerê hatine hilanîn vediguhezînin wêneyek ku li ser ekranê xuya dike çi hewce ye. Ev hêjayî zanînê ye, ne tenê ji ber ku girîng e ku em teknolojiya ku em her roj bikar tînin têbigihîjin, lê di heman demê de ji ber ku bi vekirina astên kompresyonê re, em di derheqê têgihîştin û dîtinê de bêtir fêr dibin, û çi hûrguliyên çavên me yên herî hesas in.

Ji bilî vê, lîstina bi wêneyan bi vî rengî pir balkêş e.

Forma JPEG çawa dixebite

Li hundurê JPEG digerin

Li ser komputerê, her tişt wekî rêzek hejmarên binaryê têne tomar kirin. Bi gelemperî ev bit, sifir û yek, di komên heştan de têne kom kirin da ku byteyan pêk bînin. Dema ku hûn li ser komputerek wêneyek JPEG vedikin, tiştek (gerokek, pergalek xebitandinê, tiştek din) divê byteyan deşîfre bike, wêneya orîjînal wekî navnîşek rengên ku dikare were xuyang kirin vegerîne.

Ger hûn vê şîrîn dakêşin wêneyê pisîkê û wê di edîtorek nivîsê de vekin, hûn ê komek tîpên nehevgirtî bibînin.

Forma JPEG çawa dixebite
Li vir ez Notepad++ bikar tînim da ku naveroka pelê bikolim, ji ber ku edîtorên nivîsê yên birêkûpêk ên mîna Notepad-ê li ser Windows-ê piştî tomarkirinê pelê binaryê xera dikin û ew ê êdî formata JPEG-ê têr neke.

Vekirina wêneyekî di pêvajoyek peyvan de kompîturê tevlihev dike, mîna ku hûn mejiyê xwe tevlihev dikin dema ku hûn çavên xwe dihejînin û dest bi dîtina lekeyên rengîn dikin!

Van deqên ku hûn dibînin wekî wan têne zanîn fosfen, û ne encama teşwîqek sivik an halusînasyonek ku ji hêla hiş ve hatî çêkirin ne. Ew diqewimin ji ber ku mêjiyê we difikire ku her sînyalên elektrîkî di demarên optîk de agahdariya li ser ronahiyê radigihîne. Pêdivî ye ku mêjî van texmînan bike ji ber ku rê tune ku meriv bizane ka îşaretek dengek e, dîtinek e an tiştek din e. Hemî nervên di laş de tam heman impulsên elektrîkê vediguhezînin. Bi sepandina zextê li ser çavên xwe, hûn sînyalên ku ne dîtbar in, dişînin, lê receptorên çavan çalak dikin, ku mejiyê we - di vê rewşê de, xelet - wekî tiştek dîtbar şîrove dike. Hûn dikarin bi rastî zextê bibînin!

Kêfxweş e ku meriv bifikire ka komputer çiqas dişibihe mêjî, lê di heman demê de ev yek analojiyek bikêr e ku diyar bike ka wateya daneyan - çi di laş de ji hêla nervan ve têne hilanîn an jî li ser komputerê têne hilanîn - bi şirovekirina wê ve girêdayî ye. Hemî daneyên binary ji XNUMX û XNUMX-an pêk tê, hêmanên bingehîn ên ku dikarin agahdariya her cûre ragihînin. Komputera we bi gelemperî bi karanîna nîşaneyên wekî pêvekirina pelan çawa şîrove dike. Naha em neçar dikin ku wan wekî nivîsê şîrove bike, ji ber ku ev tiştê ku edîtorê nivîsê hêvî dike ev e.

Ji bo ku em fêm bikin ka meriv çawa JPEG-ê deşîfre dike, pêdivî ye ku em nîşanên orîjînal bixwe bibînin - daneyên binary. Ev dikare bi karanîna edîtorek hexadecimal, an rasterast li ser were kirin malpera gotara orjînal! Wêneyek heye, li kêleka wê di qada nivîsê de hemî bytên wê (ji bilî sernivîsê) bi forma dehiyê têne pêşkêş kirin. Hûn dikarin wan biguhezînin, û skrîpt dê ji nû ve kod bike û wêneyek nû li ser firînê çêbike.

Forma JPEG çawa dixebite

Hûn dikarin tenê bi lîstina bi vê edîtorê re gelek tiştan fêr bibin. Mînakî, hûn dikarin bibêjin ku pixel di kîjan rêzê de têne hilanîn?

Tiştê ecêb di vê nimûneyê de ev e ku guhertina hin hejmaran qet bandorê li wêneyê nake, lê, wek nimûne, heke hûn di rêza yekem de hejmara 17 bi 0 veguherînin, wêne dê bi tevahî xera bibe!

Forma JPEG çawa dixebite

Guhertinên din, wekî 7-a li ser rêza 1988-ê bi hejmara 254-ê veguherandin, reng diguhezîne, lê tenê pixelên paşîn.

Forma JPEG çawa dixebite

Dibe ku ya herî xerîb ev e ku hin hejmar ne tenê reng, lê di heman demê de şeklê wêneyê jî diguherînin. Di rêza 70-an de 12-ê biguhezînin û li rêza jorîn a wêneyê binihêrin da ku hûn mebesta min bibînin.

Forma JPEG çawa dixebite

Û tu çi wêneyê JPEG-ê ku hûn bikar tînin jî, hûn ê her gav van qalibên satrancê yên razdar dema ku bayteyan biguherînin bibînin.

Dema ku bi edîtorê re lîstin, dijwar e ku meriv fêm bike ka wêneyek çawa ji van byteyan ji nû ve tê çêkirin, ji ber ku berhevkirina JPEG ji sê teknolojiyên cihêreng pêk tê, ku bi rêzdarî di astê de têne sepandin. Em ê her yekê veqetandî bikolin da ku tevgera nepenî ya ku em dibînin derxin holê.

Sê astên berhevkirina JPEG:

  1. Nimûnekirina rengîn.
  2. Veguherîn û nimûneya kosînoya veqetandî.
  3. Kodkirina dirêjahiyê bixebite, delta и Huffman

Ji bo ku hûn di derheqê mezinahiya berhevkirinê de ramanek bidin we, bala xwe bidin ku wêneya li jor 79 hejmar, an jî bi qasî 819 KB temsîl dike. Ger me ew bê çewisandin hilanîn, dê her pixel sê jimar hewce bike - ji bo pêkhateyên sor, kesk û şîn. Ev dê bibe 79 hejmar, an jî bi qasî. 917 KB. Di encama berhevkirina JPEG de, pelê paşîn ji 700 carî zêdetir kêm bû!

Di rastiyê de, ev wêne dikare pir zêde were berhev kirin. Li jêr du wêne li kêleka hev hene - wêneyê rastê bi 16 KB hatiye pêçandin, yanî 57 carî ji guhertoya nekomperkirî piçûktir e!

Forma JPEG çawa dixebite

Ger hûn ji nêz ve lê binêrin, hûn ê bibînin ku ev wêne ne wek hev in. Her du jî wêneyên bi komkirina JPEG-ê ne, lê ya rast bi qebareyê pir piçûktir e. Ew di heman demê de hinekî xirabtir xuya dike (li çarçikên rengê paşîn binêre). Ji ber vê yekê JPEG jî jê re tê gotin kompresyona winda; Di dema pêvajoyê de, wêne diguhere û hin hûrguliyan winda dike.

1. Rengê binavê

Li vir wêneyek e ku tenê asta yekem a berhevkirinê tê sepandin.

Forma JPEG çawa dixebite
(Guhertoya înteraktîf - in eslî gotar). Rakirina yek jimarê hemû rengan hilweşîne. Lêbelê, heke bi rastî şeş hejmar werin rakirin, ew bi rastî bandorek li ser wêneyê nake.

Naha jimare hinekî hêsantir deşîfre ye. Ev hema hema navnîşek rengan a hêsan e, ku tê de her byte tam pixelek diguhezîne, lê di heman demê de ew jixwe nîvê mezinahiya wêneya nekomperkirî ye (ku di vê mezinahiya kêmbûyî de dê bi qasî 300 KB bigire). Hûn dikarin texmîn bikin çima?

Hûn dikarin bibînin ku ev hejmar hêmanên standard ên sor, kesk û şîn temsîl nakin, ji ber ku heke em hemî jimareyan bi sifiran biguhezînin, em ê wêneyek kesk (li şûna spî) bistînin.

Forma JPEG çawa dixebite

Ev ji ber ku ev bytes ji bo Y (ronahî) radiwestin,

Forma JPEG çawa dixebite

Cb (şînbûna têkildar),

Forma JPEG çawa dixebite

û wêneyên Cr (sorbûna têkildar).

Forma JPEG çawa dixebite

Çima RGB bikar neynin? Beriya her tiştî, pir ekranên nûjen bi vî rengî dixebitin. Monitora we dikare her reng, di nav de sor, kesk û şîn, bi tundiyên cihêreng ji bo her pixel nîşan bide. Spî bi vekirina her sêyan bi tevahî ronahiyek, û reş jî bi vemirandina wan tê bidestxistin.

Forma JPEG çawa dixebite

Ev jî pir dişibe çawa çavê mirovan dixebite. Receptorên rengîn ên di çavên me de têne gotin "cones", û li sê celeb têne dabeş kirin, ku her yek ji rengên sor, kesk, an şîn hesastir e [Konên tîpa S di rengê binefşî-şîn de hesas in (S ji îngîlîzî Kurt - spektora pêla kurt), M. -type - di kesk-zer (M ji English Navîn - pêla navîn), û L-tîp - di beşên zer-sor (L ji English Long - pêla dirêj) de. Hebûna van her sê cureyên konan (û daran, yên ku di beşa kesk a zimrûd a spektrumê de hesas in) dîtina rengîn dide mirov. / nêzîkî. werger.]. Kevok, celebek din a fotoreceptorê di çavên me de, karibe guheztinên ronahiyê bibîne, lê ji rengan re pir hesastir e. Nêzîkî 120 mîlyon rod û tenê 6 mîlyon konên çavên me hene.

Ji ber vê yekê çavên me di tespîtkirina guheztinên ronahiyê de ji guherînên reng çêtir çêtir in. Ger hûn reng ji ronahiyê veqetînin, hûn dikarin rengek piçûk jê bikin û kes guh nade tiştek. Kroma jêrsampling pêvajoyek e ku hêmanên rengîn ên wêneyek bi vebirrînek kêmtir ji pêkhateyên ronahiyê temsîl dike. Di mînaka li jor de, her pixel tam pêkhateyek Y heye, û her komek ferdî ya ji çar pixelan tam yek Cb û yek Cr heye. Ji ber vê yekê, wêne çar caran kêmtir agahdariya rengîn ji ya orjînal vedihewîne.

Cihê rengê YCbCr ne tenê di JPEG de tê bikar anîn. Ew bi eslê xwe di sala 1938 de ji bo bernameyên televîzyonê hate vedîtin. Ne her kes xwedî televîzyonek rengîn e, ji ber vê yekê veqetandina reng û ronahiyê hişt ku her kes heman sînyalê bistîne, û TVyên bê reng tenê tenê hêmana ronahiyê bikar tînin.

Ji ber vê yekê derxistina yek hejmarê ji edîtorê bi tevahî rengan xera dike. Hêman di forma YYYY Cb Cr de têne hilanîn (bi rastî, ne hewce ne bi wê rêzê - rêzika hilanînê di sernavê pelê de tête diyar kirin). Rakirina hejmara yekem dê bibe sedem ku nirxa yekem a Cb wekî Y, Cr wekî Cb were dîtin, û bi gelemperî hûn ê bandorek domînoyê hebe ku hemî rengên wêneyê diguhezîne.

Taybetmendiya JPEG we neçar nake ku hûn YCbCr bikar bînin. Lê pir pelan wê bikar tînin ji ber ku ew ji RGB wêneyên dakêşandî çêtir çêdike. Lê ne hewce ye ku hûn gotina min bigirin. Ji xwe re di tabloya jêrîn de binihêrin ka dê di RGB û YCbCr-ê de bine-nimûneyên her pêkhateyek çawa xuya bike.

Forma JPEG çawa dixebite
(Guhertoya înteraktîf - in eslî gotar).

Rakirina şîn bi qasî ya sor an kesk ne diyar e. Ji ber şeş mîlyon konên di çavên we de ye, ji sedî 64 ji sor, 32% ji kesk û 2% ji şîn re hesas in.

Kêmkirina hêmana Y (li jêr çepê) çêtirîn tê dîtin. Guhertinek piçûk jî xuya dike.

Veguheztina wêneyek ji RGB bo YCbCr mezinahiya pelê kêm nake, lê ew hêsantir dike ku hûrguliyên kêmtir xuya yên ku dikarin werin rakirin bibînin. Kompresyona winda di qonaxa duyemîn de pêk tê. Ew li ser bingeha ramana pêşkêşkirina daneyan bi rengek hûrtir e.

2. Veguherîn û nimûneya kosînoya veqetandî

Vê astê berhevkirinê, bi piranî, tiştê ku JPEG ye. Piştî guherandina rengan bo YCbCr, pêkhate bi ferdî têne pêçandin, ji ber vê yekê em dikarin bi tenê li ser pêkhateya Y-yê hûr bibin. Û li vir piştî sepandina vê qatê baytên pêkhateya Y çawa xuya dikin.

Forma JPEG çawa dixebite
(Guhertoya înteraktîf - in eslî gotar). Di guhertoya înteraktîf de, klîkkirina li ser pixelek edîtorê berbi rêza ku wê temsîl dike vedigere. Biceribînin ku hejmaran ji dawiyê derxînin an jî çend sifir li hejmarek diyarkirî zêde bikin.

Di nihêrîna pêşîn de, ew mîna pêlavek pir xirab xuya dike. Di wêneyekê de 100 pîxel hene, û 000 jimar lazim e ku ronahiya wan (pêkhatên Y-yê) temsîl bike - ev ji berhevkirina tiştek xirabtir e!

Lêbelê, bala xwe bidin ku piraniya van hejmaran sifir in. Wekî din, hemî wan sifirên li dawiya rêzan dikarin bêyî guheztina wêneyê werin rakirin. Nêzîkî 26 hejmar mane, û ev hema hema 000 carî kêmtir e!

Di vê astê de sira qalibên satrancê dihewîne. Berevajî bandorên din ên ku me dîtiye, xuyangiya van nimûneyan ne xeletiyek e. Ew blokên avakirina tevahiya wêneyê ne. Her rêzika edîtorê tam 64 jimar, hevberên veguheztina kosînusê yên veqetandî (DCT) yên ku bi tundiya 64 qalibên bêhempa re têkildar in, vedihewîne.

Ev şêweyên hanê li ser bingeha komploya kosînusê têne çêkirin. Li vir hinek ji wan çawa xuya dikin:

Forma JPEG çawa dixebite
8 ji 64 astengiyan

Li jêr wêneyek heye ku hemî 64 şêweyan nîşan dide.

Forma JPEG çawa dixebite
(Guhertoya înteraktîf - in eslî gotar).

Van şêweyan girîngiyek taybetî ne ji ber ku ew bingeha wêneyên 8x8 pêk tînin. Heke hûn bi cebraya xêzik nizanin, ev tê vê wateyê ku her wêneyek 8x8 dikare ji van 64 şêweyan were çêkirin. DCT pêvajoya dabeşkirina wêneyan li blokên 8x8 û veguhertina her blokê di nav van 64 hevberan de ye.

Weke sêrbaz xuya dike ku her wêne dikare ji 64 şêweyên taybetî pêk were. Lêbelê, ev heman tişt e ku meriv bêje ku her cîhek li ser Erdê dikare bi du jimaran were binav kirin - dirêjahî û dirêjahî [nîvsferan / nêzîkê nîşan dide. werger.]. Em gelek caran rûyê erdê wekî du-alî difikirin, ji ber vê yekê em tenê du hejmar hewce ne. Wêneyek 8x8 xwediyê 64 pîvanan e, ji ber vê yekê em hewceyê 64 hejmar in.

Hîn ne diyar e ka ev di warê berhevkirinê de çawa ji me re dibe alîkar. Ger ji me re 64 jimar hewce ne ku wêneyek 8x8 temsîl bikin, çima ev ê ji tenê hilanîna 64 hêmanên ronahiyê çêtir be? Em vê yekê dikin ji ber heman sedemê ku me sê hejmarên RGB veguherandin sê hejmarên YCbCr: ew dihêle ku em hûrguliyên nazik jê bikin.

Zehmet e ku meriv rast bibîne ka kîjan hûrgulî di vê qonaxê de tê rakirin ji ber ku JPEG DCT li blokên 8x8 bicîh tîne. Lêbelê, kes ji me re qedexe nake ku em wê li tevahî wêneyê bicîh bikin. Li vir e ku DCT ji bo pêkhateya Y ku li tevahî wêneyê hatî sepandin çawa xuya dike:

Forma JPEG çawa dixebite

Zêdetirî 60 hejmar dikarin ji dawiyê werin rakirin bêyî ku di wêneyê de guhertinên berbiçav tune.

Forma JPEG çawa dixebite

Lêbelê, bala xwe bidin ku heke em pênc hejmarên pêşîn sifir bikin, dê cûdahî diyar be.

Forma JPEG çawa dixebite

Hejmarên di destpêkê de guherînên frekansa kêm di wêneyê de, ku çavên me çêtirîn hildibijêrin, nîşan didin. Hejmarên ber bi dawiyê ve guheztinên di frekansên bilind de destnîşan dikin ku dîtina wan dijwartir e. Ji bo "dîtina tiştê ku çav nikare bibîne", em dikarin van hûrguliyên frekansa bilind bi sifirkirina 5000 hejmarên pêşîn veqetînin.

Forma JPEG çawa dixebite

Em hemî deverên wêneyê yên ku guherîna herî mezin ji pixel bo pixel pêk tê dibînin. Çavên pisîkê, pisîkên wî, betaniya terî û siyên li quncikê çepê yê jêrîn radibin. Hûn dikarin bi sifirkirina 10 hejmarên pêşîn pêşdetir biçin:

Forma JPEG çawa dixebite

20:

Forma JPEG çawa dixebite

40:

Forma JPEG çawa dixebite

60:

Forma JPEG çawa dixebite

Van hûrguliyên frekansa bilind di qonaxa berhevkirinê de ji hêla JPEG ve têne rakirin. Di veguheztina rengan de li hevberên DCT de windahî tune. Windabûn di qonaxa nimûneyê de çêdibe, li cihê ku nirxên frekansa bilind an nêzî sifir têne rakirin. Gava ku hûn qalîteya hilanînê JPEG kêm dikin, bername ji bo hejmara nirxan hatine rakirin bend zêde dike, ku mezinahiya pelê kêm dike, lê wêneyê pixeltir dike. Ji ber vê yekê wêneyê di beşa yekem de ku 57 carî piçûktir bû, bi vî rengî xuya bû. Her blokek 8x8 li gorî guhertoya kalîteya bilindtir bi rêjeyên DCT-ê pir kêmtir hate temsîl kirin.

Hûn dikarin wekî weşana gav bi gav wêneyan bandorek wusa xweş biafirînin. Hûn dikarin wêneyek nezelal nîşan bidin ku her ku her ku diçe bêtir û bêtir hevber têne dakêşandin berfirehtir dibe.

Li vir, tenê ji bo kêfê, tiştê ku hûn tenê 24 hejmar bikar tînin ev e:

Forma JPEG çawa dixebite

An jî tenê 5000:

Forma JPEG çawa dixebite

Pir nezelal e, lê bi rengekî tê naskirin!

3. Encoding dirêj, delta û Huffman bimeşîne

Heya nuha, hemî qonaxên kompresasyonê winda bûne. Berevajî vê, qonaxa paşîn bêyî windahiyan didome. Ew agahdarî jê nake, lê ew bi girîngî mezinahiya pelê kêm dike.

Meriv çawa dikare tiştek bêyî avêtina agahiyê tevlihev bike? Bifikirin ku em ê çawa çargoşeyek reş a hêsan 700 x 437 rave bikin.

JPEG ji bo vê yekê 5000 hejmaran bikar tîne, lê encamên pir çêtir dikarin werin bidestxistin. Ma hûn dikarin nexşeyek şîfrekirinê bifikirin ku wêneyek wusa di çend baytên ku gengaz de vedibêje?

Pîlana hindiktirîn a ku ez dikarim bibînim çaran bikar tîne: sê ji bo temsîlkirina rengan, û ya çaremîn jî destnîşan dike ku ew reng çend pixel hene. Fikra temsîlkirina nirxên dubarekirî bi vî rengî guncandî jê re kodkirina dirêj-dirêj tê gotin. Ew bê windahî ye ji ber ku em dikarin daneya kodkirî li forma wê ya orjînal vegerînin.

Pelek JPEG ya bi çargoşeya reş ji 4 baytan pir mezintir e - ji bîr mekin ku di asta DCT de, li blokên 8x8 pixel tê sepandin. Ji ber vê yekê, bi kêmanî, em ji bo her 64 pixelan yek hevrêzek DCT hewce ne. Pêdiviya me bi yek heye ji ber ku li şûna ku em yek hevahengek DCT-ê li dû 63 sifir hilînin, şîfrekirina dirêjahiya xebitandinê dihêle ku em yek hejmar hilînin û destnîşan bikin ku "hemû yên din sifir in."

Kodkirina Delta teknîkek e ku tê de her byte ji nirxek mutlaq, ji hin nirxek cûdahiyek vedihewîne. Ji ber vê yekê, sererastkirina hin byte rengê hemî pixelên din diguhezîne. Mînakî, li şûna hilanînê

12 13 14 14 14 13 13 14

Em dikarin bi 12-ê dest pê bikin û dûv re bi hêsanî destnîşan bikin ka em çiqas hewce ne ku em lê zêde bikin an jê bikin da ku jimara din bistînin. Û ev rêza di kodkirina delta de formê digire:

12 1 1 0 0 -1 0 1

Daneyên ku hatine veguheztin ji daneyên orîjînal ne piçûktir in, lê berhevkirina wê hêsantir e. Serlêdana şîfrekirina delta berî şîfrekirina dirêjahiya xebitandinê dikare gelek arîkar bike di heman demê de ku hîn jî kompresyonek bê windahî ye.

Kodkirina Delta yek ji wan çend teknîkan e ku li derveyî blokên 8x8 têne bikar anîn. Ji 64 hevrêzên DCT, yek bi tenê fonksiyonek pêlê domdar e (rengê hişk). Ew ronahiya navînî ya her blokê ji bo pêkhateyên luma, an şînahiya navînî ji bo pêkhateyên Cb, û hwd. Ji nirxa yekem a her bloka DCT re nirxa DC tê gotin, û her nirxa DC li gorî yên berê delta tê kod kirin. Ji ber vê yekê, guhartina ronahiya bloka yekem dê bandorê li hemî blokan bike.

Sira dawî dimîne: guheztina yekjimarî çawa tevahî wêneyê xera dike? Heya nuha, astên compression ne xwediyê taybetmendiyên wusa ne. Bersiv di sernavê JPEG de ye. 500 baytên pêşîn metadata li ser wêneyê dihewîne - firehî, bilindahî, hwd., û me hîn bi wan re nexebitî.

Bê sernav hema hema ne gengaz e (an jî pir dijwar) ku JPEG deşîfre bike. Wusa xuya dike ku ez hewl didim ku wêneyê ji we re vebêjim, û ez dest bi îcadkirina peyvan dikim da ku ez bandora xwe ragihînim. Danasîn dê belkî pir tevlihev be, ji ber ku ez dikarim peyvan bi tam wateya ku ez dixwazim vebêjim îcad bikim, lê ji bo her kesê din ew ê ne watedar bin.

Ew ehmeqî xuya dike, lê tiştê ku diqewime ev e. Her wêneyek JPEG bi kodên wê yên taybetî tê pêçandin. Ferhenga kodê di serî de tê hilanîn. Ji vê teknîkê re koda Huffman û ji ferhengê re jî tê gotin tabloya Huffman. Di serî de, tablo bi du byteyan tê nîşankirin - 255 û paşê 196. Her pêkhateyek rengîn dikare tabloya xwe hebe.

Guhertinên tabloyan dê bandorek radîkal li ser her wêneyê bike. Mînakek baş ev e ku meriv rêza 15-an bi 1-ê biguhezîne.

Forma JPEG çawa dixebite

Ev diqewime ji ber ku tablo diyar dike ka divê bit çawa bêne xwendin. Heya nuha me tenê bi jimareyên binaryê yên di forma dehiyê de xebitiye. Lê ev vê rastiyê vedişêre ku heke hûn bixwazin hejmara 1-ê di byteyekê de hilînin, ew ê wekî 00000001 xuya bike, ji ber ku her bit divê tam heşt bit hebe, her çend tenê yek ji wan hewce be.

Ger gelek hejmarên we yên piçûk hebin ev potansiyel xerakirina cîhê mezin e. Koda Huffman teknîkek e ku destûrê dide me ku em vê hewcedariyê rihet bikin ku divê her hejmar heşt bit dagir bike. Ev tê wê wateyê ku heke hûn du byte bibînin:

234 115

Dûv re, li gorî tabloya Huffman ve girêdayî ye, ev dikarin sê jimar bin. Ji bo derxistina wan, hûn hewce ne ku pêşî wan li bitsên kesane veqetînin:

11101010 01110011

Dûv re em li tabloyê dinêrin da ku fêr bibin ka meriv wan çawa kom dike. Mînakî, ev dibe şeş bitên pêşîn, (111010), an jî 58 bit, li pey pênc bit (10011), an 19, û di dawiyê de çar bit (0011), an 3.

Ji ber vê yekê, di vê qonaxê de compression de têgihîştina bytes pir dijwar e. Bytes tiştê ku ew xuya dikin temsîl nakin. Ez ê di vê gotarê de neçim hûrguliyên xebata bi tabloyê, lê materyalên li ser vê mijarê li ser înternetê bes e.

Tiştek balkêş a ku hûn dikarin bi vê zanînê bikin ev e ku hûn sernavê ji JPEG-ê veqetînin û wê ji hev veqetînin. Bi rastî, derket holê ku tenê hûn dikarin pelê bixwînin. Facebook vê yekê dike ku pelan hîn piçûktir bike.

Ya din ku dikare were kirin ev e ku meriv tabloya Huffman hinekî biguhezîne. Ji bo yên din ew ê mîna wêneyek şikestî xuya bike. Û tenê hûn ê riya efsûnî ya rastkirina wê bizanibin.

Ka em kurt bikin: Ji ber vê yekê ji bo deşîfrekirina JPEG çi hewce ye? Pêwist:

  1. Tabloya Huffman(ên) ji sernivîsê derxînin û bitan deşîfre bikin.
  2. Ji bo her blokek 8x8 hevberên veguheztina cosînîkî yên veqetandî ji bo her pêkhateyek reng û ronahiyê derxînin, veguherînên dirêjahiya berevajî û kodkirina deltayê pêk bînin.
  3. Ji bo her bloka 8x8 kosîneyan li ser bingeha hevberan berhev bikin.
  4. Ger bine-nimûne hate kirin pêkhateyên rengîn pîvandin (ev agahdarî di serî de ye).
  5. Nirxên YCbCr yên encam ji bo her pixelê bi RGB veguherînin.
  6. Wêne li ser ekranê nîşan bide!

Xebatek ciddî ji bo dîtina wêneyek bi pisîkê re tenê! Lêbelê, ya ku ez jê hez dikim ev e ku ew destnîşan dike ka teknolojiya JPEG-navendî ya mirovî çawa ye. Ew li ser taybetmendiyên têgihîştina me ve girêdayî ye, ku dihêle ku em ji teknolojiyên kevneşopî pir çêtir bigihîjin. Û naha ku em fam dikin ku JPEG çawa dixebite, em dikarin bifikirin ka ev teknolojiyên çawa dikarin li deverên din werin veguheztin. Mînakî, şîfrekirina delta ya di vîdyoyê de dikare di mezinahiya pelê de kêmbûnek girîng peyda bike, ji ber ku bi gelemperî deverên tevahî hene ku ji çarçoveyek çarçovê naguherin (mînak, paşxane).

Koda ku di gotarê de tê bikar anîn, vekirî ye, û rêwerzên li ser guheztina wêneyan bi yên xwe re vedihewîne.

Source: www.habr.com

Add a comment