Sut mae fformat JPEG yn gweithio

Mae delweddau JPEG yn hollbresennol yn ein bywydau digidol, ond y tu ôl i'r argaen ymwybyddiaeth hon mae algorithmau sy'n dileu manylion nad ydynt yn ganfyddadwy i'r llygad dynol. Y canlyniad yw'r ansawdd gweledol uchaf yn y maint ffeil lleiaf - ond sut yn union mae'r cyfan yn gweithio? Gawn ni weld beth yn union nad yw ein llygaid yn ei weld!

Sut mae fformat JPEG yn gweithio

Mae'n hawdd cymryd yn ganiataol y gallu i anfon llun at ffrind a pheidio â phoeni am ba ddyfais, porwr neu system weithredu maen nhw'n ei ddefnyddio - ond nid oedd hynny'n wir bob amser. Erbyn dechrau'r 1980au, roedd cyfrifiaduron yn gallu storio ac arddangos delweddau digidol, ond roedd llawer o syniadau'n cystadlu am y ffordd orau o wneud hyn. Ni allech anfon delwedd o un cyfrifiadur i'r llall yn unig a gobeithio y byddai'n gweithio.

I ddatrys y broblem hon, ym 1986, ymgynullwyd pwyllgor o arbenigwyr o bob rhan o'r byd o'r enw "Cyd-grŵp o Arbenigwyr Ffotograffiaeth» (Grŵp Arbenigwyr Ffotograffig ar y Cyd, JPEG), a sefydlwyd fel ymdrech ar y cyd rhwng y Sefydliad Rhyngwladol ar gyfer Safoni (ISO) a'r Comisiwn Electrotechnegol Rhyngwladol (IEC), dau sefydliad safonau rhyngwladol sydd â'u pencadlys yn Genefa, y Swistir.

Creodd grŵp o bobl o'r enw JPEG safon cywasgu delwedd ddigidol JPEG ym 1992. Mae'n debyg bod unrhyw un sydd wedi defnyddio'r Rhyngrwyd wedi dod ar draws delweddau wedi'u hamgodio JPEG. Dyma'r ffordd fwyaf cyffredin o amgodio, anfon a storio delweddau. O dudalennau gwe i e-bost i gyfryngau cymdeithasol, mae JPEG yn cael ei ddefnyddio biliynau o weithiau'r dydd - bron bob tro rydyn ni'n edrych ar ddelwedd ar-lein neu'n ei hanfon. Heb JPEG, byddai'r we yn llai lliwgar, yn arafach, ac mae'n debyg bod ganddi lai o luniau cathod!

Mae'r erthygl hon yn ymwneud â sut i ddadgodio delwedd JPEG. Mewn geiriau eraill, yr hyn sydd ei angen i drosi data cywasgedig sydd wedi'i storio ar gyfrifiadur yn ddelwedd sy'n ymddangos ar y sgrin. Mae hyn yn werth ei wybod, nid yn unig oherwydd ei bod yn bwysig deall y dechnoleg a ddefnyddiwn bob dydd, ond hefyd oherwydd trwy ddatgloi lefelau cywasgu, rydym yn dysgu mwy am ganfyddiad a gweledigaeth, a pha fanylion y mae ein llygaid yn fwyaf sensitif iddynt.

Yn ogystal, mae chwarae gyda delweddau yn y modd hwn yn ddiddorol iawn.

Sut mae fformat JPEG yn gweithio

Edrych y tu mewn i JPEG

Ar gyfrifiadur, mae popeth yn cael ei storio fel dilyniant o rifau deuaidd. Yn nodweddiadol, mae'r darnau hyn, sero a rhai, yn cael eu grwpio mewn grwpiau o wyth i wneud beit. Pan fyddwch chi'n agor delwedd JPEG ar gyfrifiadur, rhaid i rywbeth (porwr, system weithredu, rhywbeth arall) ddadgodio'r bytes, gan adfer y ddelwedd wreiddiol fel rhestr o liwiau y gellir eu harddangos.

Os ydych chi'n lawrlwytho'r melys hwn llun o gath a'i agor mewn golygydd testun, fe welwch griw o gymeriadau anghydlynol.

Sut mae fformat JPEG yn gweithio
Yma rwy'n defnyddio Notepad ++ i archwilio cynnwys y ffeil, gan y bydd golygyddion testun rheolaidd fel Notepad ar Windows yn llygru'r ffeil ddeuaidd ar ôl ei chadw ac ni fydd yn bodloni'r fformat JPEG mwyach.

Mae agor delwedd mewn prosesydd geiriau yn drysu'r cyfrifiadur, yn union fel rydych chi'n drysu'ch ymennydd pan fyddwch chi'n rhwbio'ch llygaid ac yn dechrau gweld smotiau o liw!

Gelwir y mannau hyn a welwch ffosffenau, ac nid ydynt yn ganlyniad ysgogiad ysgafn neu rithweledigaeth a gynhyrchir gan y meddwl. Maent yn digwydd oherwydd bod eich ymennydd yn meddwl bod unrhyw signalau trydanol yn y nerfau optig yn cyfleu gwybodaeth am olau. Mae angen i'r ymennydd wneud y rhagdybiaethau hyn oherwydd nid oes unrhyw ffordd i wybod a yw signal yn sain, yn weledigaeth, neu'n rhywbeth arall. Mae pob nerf yn y corff yn trosglwyddo'r un ysgogiadau trydanol yn union. Trwy roi pwysau ar eich llygaid, rydych chi'n anfon signalau nad ydynt yn weledol, ond yn actifadu derbynyddion y llygad, y mae eich ymennydd yn eu dehongli - yn yr achos hwn, yn anghywir - fel rhywbeth gweledol. Yn llythrennol, gallwch chi weld y pwysau!

Mae'n ddoniol meddwl pa mor debyg yw cyfrifiaduron i'r ymennydd, ond mae hefyd yn gyfatebiaeth ddefnyddiol i ddangos faint mae ystyr data—boed yn cael ei gludo drwy'r corff gan nerfau neu'n cael ei storio ar gyfrifiadur—yn dibynnu ar sut mae'n cael ei ddehongli. Mae'r holl ddata deuaidd yn cynnwys 0s ac 1s, y cydrannau sylfaenol sy'n gallu cyfleu gwybodaeth o unrhyw fath. Mae eich cyfrifiadur yn aml yn darganfod sut i'w dehongli trwy ddefnyddio cliwiau fel estyniadau ffeiliau. Nawr rydyn ni'n ei orfodi i'w dehongli fel testun, oherwydd dyna mae'r golygydd testun yn ei ddisgwyl.

Er mwyn deall sut i ddadgodio JPEG, mae angen i ni weld y signalau gwreiddiol eu hunain - y data deuaidd. Gellir gwneud hyn gan ddefnyddio golygydd hecsadegol, neu'n uniongyrchol ymlaen tudalen we erthygl wreiddiol! Mae delwedd, ac wrth ymyl y maes testun mae ei holl bytes (ac eithrio'r pennawd), wedi'i chyflwyno ar ffurf degol. Gallwch eu newid, a bydd y sgript yn ail-amgodio a chynhyrchu delwedd newydd ar y hedfan.

Sut mae fformat JPEG yn gweithio

Gallwch chi ddysgu llawer dim ond trwy chwarae gyda'r golygydd hwn. Er enghraifft, a allwch chi ddweud ym mha drefn y mae'r picsel yn cael ei storio?

Y peth rhyfedd am yr enghraifft hon yw nad yw newid rhai rhifau yn effeithio ar y ddelwedd o gwbl, ond, er enghraifft, os byddwch chi'n disodli'r rhif 17 gyda 0 yn y llinell gyntaf, bydd y llun yn cael ei ddifetha'n llwyr!

Sut mae fformat JPEG yn gweithio

Mae newidiadau eraill, megis amnewid y 7 ar-lein 1988 gyda'r rhif 254, yn newid y lliw, ond dim ond y picseli dilynol.

Sut mae fformat JPEG yn gweithio

Efallai mai'r peth rhyfeddaf yw bod rhai niferoedd yn newid nid yn unig y lliw, ond hefyd siâp y ddelwedd. Newidiwch y 70 yn llinell 12 i 2 ac edrychwch ar res uchaf y ddelwedd i weld beth ydw i'n ei olygu.

Sut mae fformat JPEG yn gweithio

Ac ni waeth pa ddelwedd JPEG a ddefnyddiwch, fe welwch y patrymau gwyddbwyll dirgel hyn bob amser wrth olygu'r bytes.

Wrth chwarae gyda'r golygydd, mae'n anodd deall sut mae llun yn cael ei ail-greu o'r bytes hyn, gan fod cywasgu JPEG yn cynnwys tair technoleg wahanol, wedi'u cymhwyso'n ddilyniannol mewn lefelau. Byddwn yn astudio pob un ar wahân i ddatgelu'r ymddygiad dirgel rydyn ni'n ei weld.

Tair lefel o gywasgu JPEG:

  1. Is-samplu lliw.
  2. Trawsnewid cosin arwahanol a samplu.
  3. Amgodio hyd rhedeg, delta и Huffman

I roi syniad i chi o faint y cywasgu, sylwch fod y ddelwedd uchod yn cynrychioli 79 o rifau, neu tua 819 KB. Pe baem yn ei storio heb gywasgu, byddai angen tri rhif ar bob picsel - ar gyfer y cydrannau coch, gwyrdd a glas. Byddai hyn yn cyfateb i 79 o rifau, neu tua. 917 KB. O ganlyniad i gywasgu JPEG, gostyngwyd y ffeil derfynol fwy na 700 gwaith!

Mewn gwirionedd, gellir cywasgu'r ddelwedd hon yn llawer mwy. Isod mae dwy ddelwedd ochr yn ochr - mae'r llun ar y dde wedi'i gywasgu i 16 KB, hynny yw, 57 gwaith yn llai na'r fersiwn anghywasgedig!

Sut mae fformat JPEG yn gweithio

Os edrychwch yn ofalus, fe welwch nad yw'r delweddau hyn yn union yr un fath. Mae'r ddau ohonyn nhw'n ddelweddau gyda chywasgiad JPEG, ond mae'r un iawn yn llawer llai o ran cyfaint. Mae hefyd yn edrych ychydig yn waeth (edrychwch ar y sgwariau lliw cefndir). Dyna pam y gelwir JPEG hefyd yn gywasgiad lossy; Yn ystod y broses gywasgu, mae'r ddelwedd yn newid ac yn colli rhai manylion.

1. is-samplu lliw

Dyma ddelwedd gyda dim ond y lefel gyntaf o gywasgu wedi'i chymhwyso.

Sut mae fformat JPEG yn gweithio
(Fersiwn rhyngweithiol - i mewn gwreiddiol erthyglau). Mae tynnu un rhif yn dinistrio pob lliw. Fodd bynnag, os caiff chwe rhif yn union eu dileu, ni chaiff fawr ddim effaith ar y ddelwedd.

Nawr mae'r niferoedd ychydig yn haws i'w dehongli. Mae hon bron yn rhestr syml o liwiau, lle mae pob beit yn newid un picsel yn union, ond ar yr un pryd mae eisoes yn hanner maint y ddelwedd anghywasgedig (a fyddai'n cymryd tua 300 KB yn y maint llai hwn). Allwch chi ddyfalu pam?

Gallwch weld nad yw'r niferoedd hyn yn cynrychioli'r cydrannau coch, gwyrdd a glas safonol, oherwydd os byddwn yn disodli'r holl rifau â sero, byddwn yn cael delwedd werdd (yn hytrach na gwyn).

Sut mae fformat JPEG yn gweithio

Mae hyn oherwydd bod y beit hyn yn sefyll am Y (disgleirdeb),

Sut mae fformat JPEG yn gweithio

Cb (glasness cymharol),

Sut mae fformat JPEG yn gweithio

a lluniau Cr (cochni cymharol).

Sut mae fformat JPEG yn gweithio

Beth am ddefnyddio RGB? Wedi'r cyfan, dyma sut mae'r rhan fwyaf o sgriniau modern yn gweithio. Gall eich monitor arddangos unrhyw liw, gan gynnwys coch, gwyrdd a glas, gyda dwyster gwahanol ar gyfer pob picsel. Ceir gwyn trwy droi y tri ymlaen yn llawn disgleirdeb, a du trwy eu diffodd.

Sut mae fformat JPEG yn gweithio

Mae hyn hefyd yn debyg iawn i sut mae'r llygad dynol yn gweithio. Gelwir y derbynyddion lliw yn ein llygaid yn "conau“, ac fe'u rhennir yn dri math, pob un ohonynt yn fwy sensitif i liwiau coch, gwyrdd neu las [mae conau math S yn sensitif yn y fioled-glas (S o'r sbectrwm Saesneg Byr - tonnau byr), M -type - yn y melyn-wyrdd (M o'r Saesneg Cyfrwng - canolig-don), a L-type - yn y melyn-goch (L o'r Saesneg Long - long-ton) rhannau o'r sbectrwm. Mae presenoldeb y tri math hyn o gonau (a gwiail, sy'n sensitif yn rhan werdd emrallt y sbectrwm) yn rhoi golwg lliw i berson. / tua. traws.]. Ffyn, math arall o photoreceptor yn ein llygaid, yn gallu canfod newidiadau mewn disgleirdeb, ond yn llawer mwy sensitif i liw. Mae gan ein llygaid tua 120 miliwn o wialen a dim ond 6 miliwn o gonau.

Dyna pam mae ein llygaid yn llawer gwell am ganfod newidiadau mewn disgleirdeb na newidiadau mewn lliw. Os ydych chi'n gwahanu lliw a disgleirdeb, gallwch chi gael gwared ar ychydig o liw ac ni fydd neb yn sylwi ar unrhyw beth. Is-samplu croma yw'r broses o gynrychioli cydrannau lliw delwedd ar gydraniad is na'r cydrannau goleuder. Yn yr enghraifft uchod, mae gan bob picsel un gydran Y yn union, ac mae gan bob grŵp unigol o bedwar picsel un gydran Cb ac un Cr yn union. Felly, mae'r ddelwedd yn cynnwys pedair gwaith yn llai o wybodaeth lliw na'r gwreiddiol.

Defnyddir gofod lliw YCbCr nid yn unig yn JPEG. Fe'i dyfeisiwyd yn wreiddiol yn 1938 ar gyfer rhaglenni teledu. Nid oes gan bawb deledu lliw, felly roedd gwahanu lliw a disgleirdeb yn caniatáu i bawb gael yr un signal, ac roedd setiau teledu heb liw yn defnyddio'r elfen disgleirdeb yn unig.

Felly mae tynnu un rhif o'r golygydd yn difetha'r holl liwiau yn llwyr. Mae'r cydrannau'n cael eu storio yn y ffurflen YYYY Cb Cr (mewn gwirionedd, nid o reidrwydd yn y drefn honno - mae'r gorchymyn storio wedi'i nodi ym mhennyn y ffeil). Bydd tynnu'r rhif cyntaf yn achosi i werth cyntaf Cb gael ei weld fel Y, Cr fel Cb, ac yn gyffredinol bydd gennych effaith domino sy'n newid holl liwiau'r llun.

Nid yw manyleb JPEG yn eich gorfodi i ddefnyddio YCbCr. Ond mae'r rhan fwyaf o ffeiliau yn ei ddefnyddio oherwydd ei fod yn cynhyrchu delweddau i lawr yn well na RGB. Ond does dim rhaid i chi gymryd fy ngair i amdano. Gweler drosoch eich hun yn y tabl isod sut olwg fydd ar is-samplu pob cydran unigol yn RGB ac YCbCr.

Sut mae fformat JPEG yn gweithio
(Fersiwn rhyngweithiol - i mewn gwreiddiol erthyglau).

Nid yw tynnu glas mor amlwg â choch neu wyrdd. Mae hynny oherwydd y chwe miliwn o gonau yn eich llygaid, mae tua 64% yn sensitif i goch, 32% i wyrdd a 2% i las.

Mae'n well gweld is-samplu cydran Y (gwaelod chwith). Mae hyd yn oed newid bach yn amlwg.

Nid yw trosi delwedd o RGB i YCbCr yn lleihau maint ffeil, ond mae'n ei gwneud hi'n haws dod o hyd i fanylion llai gweladwy y gellir eu tynnu. Mae cywasgu colledus yn digwydd yn yr ail gam. Mae'n seiliedig ar y syniad o gyflwyno data mewn ffurf fwy cywasgadwy.

2. Trawsnewid cosin arwahanol a samplu

Mae'r lefel hon o gywasgu, ar y cyfan, yn ymwneud â JPEG. Ar ôl trosi'r lliwiau i YCbCr, mae'r cydrannau'n cael eu cywasgu'n unigol, felly gallwn ganolbwyntio wedyn ar y gydran Y yn unig. A dyma sut olwg sydd ar beit cydran Y ar ôl cymhwyso'r haen hon.

Sut mae fformat JPEG yn gweithio
(Fersiwn rhyngweithiol - i mewn gwreiddiol erthyglau). Yn y fersiwn rhyngweithiol, mae clicio ar bicsel yn sgrolio'r golygydd i'r llinell sy'n ei gynrychioli. Ceisiwch dynnu rhifau o'r diwedd neu ychwanegu ychydig o sero at rif penodol.

Ar yr olwg gyntaf, mae'n edrych fel cywasgu gwael iawn. Mae yna 100 picsel mewn delwedd, ac mae'n cymryd 000 o rifau i gynrychioli eu disgleirdeb (Y-components) - mae hynny'n waeth na chywasgu dim byd o gwbl!

Fodd bynnag, sylwch mai sero yw'r rhan fwyaf o'r niferoedd hyn. Ar ben hynny, gellir dileu'r holl seroau hynny ar ddiwedd llinellau heb newid y ddelwedd. Mae tua 26 o rifau ar ôl, ac mae hyn bron i 000 gwaith yn llai!

Mae'r lefel hon yn cynnwys cyfrinach patrymau gwyddbwyll. Yn wahanol i effeithiau eraill yr ydym wedi'u gweld, nid yw ymddangosiad y patrymau hyn yn glitch. Dyma flociau adeiladu'r ddelwedd gyfan. Mae pob llinell o'r golygydd yn cynnwys union 64 rhif, cyfernodau trawsnewid cosin arwahanol (DCT) sy'n cyfateb i ddwyster 64 o batrymau unigryw.

Mae'r patrymau hyn yn cael eu ffurfio yn seiliedig ar y plot cosin. Dyma sut olwg sydd ar rai ohonyn nhw:

Sut mae fformat JPEG yn gweithio
8 allan o 64 ods

Isod mae delwedd yn dangos pob un o'r 64 patrwm.

Sut mae fformat JPEG yn gweithio
(Fersiwn rhyngweithiol - i mewn gwreiddiol erthyglau).

Mae'r patrymau hyn yn arbennig o bwysig oherwydd eu bod yn sail i'r delweddau 8x8. Os ydych chi'n anghyfarwydd ag algebra llinol, mae hyn yn golygu y gellir gwneud unrhyw ddelwedd 8x8 o'r 64 patrwm hyn. DCT yw'r broses o rannu delweddau yn flociau 8x8 a throsi pob bloc yn gyfuniad o'r 64 cyfernod hyn.

Mae'n ymddangos fel hud y gall unrhyw ddelwedd gynnwys 64 o batrymau penodol. Fodd bynnag, mae hyn yr un peth â dweud y gellir disgrifio unrhyw le ar y Ddaear gan ddau rif - lledred a hydred [yn nodi hemisfferau / tua. traws.]. Rydym yn aml yn meddwl am arwyneb y Ddaear fel dau ddimensiwn, felly dim ond dau rif sydd eu hangen arnom. Mae gan ddelwedd 8x8 64 dimensiwn, felly mae angen 64 rhif arnom.

Nid yw'n glir eto sut mae hyn yn ein helpu ni o ran cywasgu. Os oes angen 64 rhif arnom i gynrychioli delwedd 8x8, pam y byddai hyn yn well na storio 64 o gydrannau disgleirdeb yn unig? Rydym yn gwneud hyn am yr un rheswm y gwnaethom droi tri rhif RGB yn dri rhif YCbCr: mae'n caniatáu inni gael gwared ar fanylion cynnil.

Mae'n anodd gweld yn union pa fanylion sy'n cael eu dileu ar hyn o bryd oherwydd bod JPEG yn cymhwyso DCT i flociau 8x8. Fodd bynnag, nid oes neb yn ein gwahardd i'w gymhwyso i'r darlun cyfan. Dyma sut olwg sydd ar DCT ar gyfer y gydran Y sy'n berthnasol i'r darlun cyfan:

Sut mae fformat JPEG yn gweithio

Gellir tynnu mwy na 60 o rifau o'r diwedd heb fawr ddim newidiadau amlwg i'r llun.

Sut mae fformat JPEG yn gweithio

Fodd bynnag, sylwch, os byddwn yn sero'r pum rhif cyntaf, bydd y gwahaniaeth yn amlwg.

Sut mae fformat JPEG yn gweithio

Mae'r niferoedd ar y dechrau yn cynrychioli newidiadau amledd isel yn y ddelwedd, y mae ein llygaid yn eu codi orau. Mae'r niferoedd tua'r diwedd yn dangos newidiadau yn yr amleddau uchel sy'n fwy anodd sylwi arnynt. I “weld yr hyn na all y llygad ei weld,” gallwn ynysu’r manylion amledd uchel hyn trwy sero allan y 5000 rhif cyntaf.

Sut mae fformat JPEG yn gweithio

Rydyn ni'n gweld pob rhan o'r ddelwedd lle mae'r newid mwyaf yn digwydd o bicsel i bicseli. Mae llygaid y gath, ei wisgers, y flanced terry a'r cysgodion yn y gornel chwith isaf yn sefyll allan. Gallwch fynd ymhellach trwy sero allan y 10 rhif cyntaf:

Sut mae fformat JPEG yn gweithio

20 000:

Sut mae fformat JPEG yn gweithio

40 000:

Sut mae fformat JPEG yn gweithio

60 000:

Sut mae fformat JPEG yn gweithio

Mae'r manylion amledd uchel hyn yn cael eu tynnu gan JPEG yn ystod y cam cywasgu. Nid oes unrhyw golled mewn trosi lliwiau i gyfernodau DCT. Mae colled yn digwydd yn y cam samplu, lle mae gwerthoedd amledd uchel neu bron-sero yn cael eu dileu. Pan fyddwch yn gostwng ansawdd arbed JPEG, mae'r rhaglen yn cynyddu'r trothwy ar gyfer nifer y gwerthoedd a dynnwyd, sy'n lleihau maint y ffeil, ond yn gwneud y llun yn fwy picsel. Dyna pam roedd y ddelwedd yn yr adran gyntaf, a oedd 57 gwaith yn llai, yn edrych fel hyn. Cynrychiolwyd pob bloc 8x8 gan lawer llai o gyfernodau DCT o gymharu â'r fersiwn ansawdd uwch.

Gallwch chi greu effaith mor cŵl â ffrydio delweddau yn raddol. Gallwch arddangos llun aneglur sy'n dod yn fwy a mwy manwl wrth i fwy a mwy o gyfernodau gael eu llwytho i lawr.

Yma, dim ond er hwyl, yw'r hyn a gewch gan ddefnyddio dim ond 24 o rifau:

Sut mae fformat JPEG yn gweithio

Neu dim ond 5000:

Sut mae fformat JPEG yn gweithio

Niwlog iawn, ond rhywsut yn adnabyddadwy!

3. rhedeg hyd amgodio, delta a Huffman

Hyd yn hyn, mae pob cam o gywasgu wedi bod yn golledus. Mae'r cam olaf, i'r gwrthwyneb, yn mynd rhagddo heb golledion. Nid yw'n dileu gwybodaeth, ond mae'n lleihau maint y ffeil yn sylweddol.

Sut allwch chi gywasgu rhywbeth heb daflu gwybodaeth i ffwrdd? Dychmygwch sut y byddem yn disgrifio petryal du syml 700 x 437.

Mae JPEG yn defnyddio 5000 o rifau ar gyfer hyn, ond gellir cyflawni canlyniadau llawer gwell. A allwch chi ddychmygu cynllun amgodio a fyddai'n disgrifio delwedd o'r fath mewn cyn lleied o beitau â phosibl?

Mae'r cynllun lleiaf posibl y gallwn ei lunio yn defnyddio pedwar: tri i gynrychioli lliw, a pedwerydd i nodi faint o bicseli sydd gan y lliw hwnnw. Gelwir y syniad o gynrychioli gwerthoedd ailadroddus yn y ffordd grynodedig hon yn amgodio hyd rhediad. Mae'n ddi-golled oherwydd gallwn adfer y data wedi'i amgodio i'w ffurf wreiddiol.

Mae ffeil JPEG gyda phetryal du yn llawer mwy na 4 beit - cofiwch fod cywasgiad yn cael ei roi ar flociau picsel 8x8 ar y lefel DCT. Felly, o leiaf, mae angen un cyfernod DCT arnom ar gyfer pob 64 picsel. Mae angen un arnom oherwydd yn lle storio un cyfernod DCT wedi'i ddilyn gan 63 sero, mae amgodio hyd rhediad yn caniatáu inni storio un rhif a nodi bod "pob un arall yn sero."

Mae amgodio Delta yn dechneg lle mae pob beit yn cynnwys gwahaniaeth o ryw werth, yn hytrach na gwerth absoliwt. Felly, mae golygu beitiau penodol yn newid lliw pob picsel arall. Er enghraifft, yn lle storio

12 13 14 14 14 13 13 14

Gallem ddechrau gyda 12 ac yna nodi'n syml faint y mae angen i ni ei adio neu ei dynnu i gael y rhif nesaf. Ac mae'r dilyniant hwn mewn codio delta ar ffurf:

12 1 1 0 0 -1 0 1

Nid yw'r data wedi'i drawsnewid yn llai na'r data gwreiddiol, ond mae'n haws ei gywasgu. Gall cymhwyso amgodio delta cyn amgodio hyd rhediad helpu llawer tra'n dal i fod yn gywasgiad di-golled.

Mae codio Delta yn un o'r ychydig dechnegau a ddefnyddir y tu allan i flociau 8x8. O'r 64 cyfernod DCT, mae un yn syml yn swyddogaeth tonnau cyson (lliw solet). Mae'n cynrychioli disgleirdeb cyfartalog pob bloc ar gyfer y cydrannau luma, neu'r glasder cyfartalog ar gyfer y cydrannau Cb, ac ati. Gelwir gwerth cyntaf pob bloc DCT yn werth DC, ac mae pob gwerth DC wedi'i amgodio delta mewn perthynas â'r rhai blaenorol. Felly, bydd newid disgleirdeb y bloc cyntaf yn effeithio ar bob bloc.

Erys y dirgelwch olaf: sut mae newid yr unigol yn difetha'r darlun cyfan yn llwyr? Hyd yn hyn, nid yw lefelau cywasgu wedi cael eiddo o'r fath. Mae'r ateb ym mhennawd JPEG. Mae'r 500 beit cyntaf yn cynnwys metadata am y ddelwedd - lled, uchder, ac ati, ac nid ydym wedi gweithio gyda nhw eto.

Heb bennawd mae bron yn amhosibl (neu'n anodd iawn) dadgodio JPEG. Bydd yn edrych fel pe bawn yn ceisio disgrifio’r llun i chi, ac yr wyf yn dechrau dyfeisio geiriau er mwyn cyfleu fy argraff. Mae'n debyg y bydd y disgrifiad yn eithaf cryno, oherwydd gallaf ddyfeisio geiriau gyda'r union ystyr yr wyf am ei gyfleu, ond i bawb arall ni fyddant yn gwneud synnwyr.

Mae'n swnio'n dwp, ond dyna'n union beth sy'n digwydd. Mae pob delwedd JPEG wedi'i chywasgu â chodau sy'n benodol iddo. Mae'r geiriadur cod yn cael ei storio yn y pennyn. Gelwir y dechneg hon yn god Huffman a gelwir yr eirfa yn dabl Huffman. Yn y pennawd, mae'r tabl wedi'i farcio â dau beit - 255 ac yna 196. Gall pob cydran lliw gael ei dabl ei hun.

Bydd newidiadau i dablau yn effeithio'n sylweddol ar unrhyw ddelwedd. Enghraifft dda yw newid y 15fed llinell i 1.

Sut mae fformat JPEG yn gweithio

Mae hyn yn digwydd oherwydd bod y tablau yn nodi sut y dylid darllen darnau unigol. Hyd yn hyn dim ond gyda rhifau deuaidd ar ffurf ddegol yr ydym wedi gweithio. Ond mae hyn yn cuddio oddi wrthym y ffaith, os ydych chi am storio'r rhif 1 mewn beit, bydd yn edrych fel 00000001, gan fod yn rhaid i bob beit gael wyth did yn union, hyd yn oed os mai dim ond un ohonynt sydd ei angen.

Gallai hyn fod yn wastraff mawr o le os oes gennych chi lawer o niferoedd bach. Mae cod Huffman yn dechneg sy'n ein galluogi i lacio'r gofyniad hwn bod yn rhaid i bob rhif feddiannu wyth did. Mae hyn yn golygu os gwelwch ddau beit:

234 115

Yna, yn dibynnu ar y tabl Huffman, gallai'r rhain fod yn dri rhif. Er mwyn eu tynnu, mae angen i chi eu torri i lawr yn ddarnau unigol yn gyntaf:

11101010 01110011

Yna edrychwn ar y bwrdd i ddarganfod sut i'w grwpio. Er enghraifft, gallai hyn fod y chwe did cyntaf, (111010), neu 58 mewn degol, ac yna pum did (10011), neu 19, ac yn olaf y pedwar did olaf (0011), neu 3.

Felly, mae'n anodd iawn deall y bytes ar y cam hwn o gywasgu. Nid yw beit yn cynrychioli'r hyn maen nhw'n ymddangos. Nid af i fanylion am weithio gyda'r tabl yn yr erthygl hon, ond deunyddiau ar y mater hwn ar-lein digon.

Un tric diddorol y gallwch chi ei wneud gyda'r wybodaeth hon yw gwahanu'r pennawd o'r JPEG a'i storio ar wahân. Yn wir, mae'n troi allan mai dim ond chi all ddarllen y ffeil. Mae Facebook yn gwneud hyn i wneud ffeiliau hyd yn oed yn llai.

Beth arall y gellir ei wneud yw newid bwrdd Huffman gryn dipyn. I eraill bydd yn edrych fel llun wedi torri. A dim ond chi fydd yn gwybod y ffordd hudolus i'w drwsio.

Gadewch i ni grynhoi: felly beth sydd ei angen i ddadgodio JPEG? Angenrheidiol:

  1. Tynnwch y tabl(iau) Huffman o'r pennawd a dadgodio'r darnau.
  2. Tynnwch y cyfernodau trawsnewid cosin arwahanol ar gyfer pob cydran lliw a goleuder ar gyfer pob bloc 8x8, gan berfformio hyd rhediad gwrthdro a thrawsnewid amgodio delta.
  3. Cyfuno cosinau yn seiliedig ar gyfernodau i gael gwerthoedd picsel ar gyfer pob bloc 8x8.
  4. Graddio cydrannau lliw os gwnaed is-samplu (mae'r wybodaeth hon yn y pennawd).
  5. Trosi'r gwerthoedd YCbCr canlyniadol ar gyfer pob picsel i RGB.
  6. Dangoswch y llun ar y sgrin!

Gwaith difrifol ar gyfer gwylio llun gyda chath yn unig! Fodd bynnag, yr hyn yr wyf yn ei hoffi amdano yw ei fod yn dangos pa mor ddynol-ganolog yw technoleg JPEG. Mae'n seiliedig ar hynodion ein canfyddiad, sy'n ein galluogi i gyflawni cywasgu llawer gwell na thechnolegau confensiynol. A nawr ein bod yn deall sut mae JPEG yn gweithio, gallwn ddychmygu sut y gellir trosglwyddo'r technolegau hyn i feysydd eraill. Er enghraifft, gall amgodio delta mewn fideo arwain at ostyngiad sylweddol ym maint y ffeil, gan fod ardaloedd cyfan yn aml nad ydynt yn newid o ffrâm i ffrâm (er enghraifft, y cefndir).

Cod a ddefnyddir yn yr erthygl, yn agored, ac yn cynnwys cyfarwyddiadau ar sut i ddisodli'r lluniau gyda'ch un chi.

Ffynhonnell: hab.com

Ychwanegu sylw