Mar a tha an cruth JPEG ag obair

Tha ìomhaighean JPEG uile-làthaireach nar beatha dhidseatach, ach air cùl a’ chleòc mothachaidh sin tha e a’ falach algorithms a bheir air falbh mion-fhiosrachadh nach fhaic sùil an duine. Is e an toradh an càileachd lèirsinneach as àirde anns a’ mheud faidhle as lugha - ach dè dìreach a tha e uile ag obair? Chì sinn dè dìreach nach eil ar sùilean a’ faicinn!

Mar a tha an cruth JPEG ag obair

Tha e furasta gabhail ris a’ chomas dealbh a chuir gu caraid agus gun a bhith draghail mu dè an inneal, am brabhsair no an siostam-obrachaidh a tha iad a’ cleachdadh - ach cha robh sin fìor an-còmhnaidh. Tràth anns na 1980n, b' urrainn do choimpiutairean ìomhaighean didseatach a stòradh agus a thaisbeanadh, ach bha mòran bheachdan farpaiseach mun dòigh as fheàrr air seo a dhèanamh. Cha b’ urrainn dhut dìreach dealbh a chuir bho aon choimpiutair gu coimpiutair eile agus an dòchas gun obraich e.

Gus an duilgheadas seo fhuasgladh, chaidh comataidh de dh’eòlaichean bho air feadh an t-saoghail a chur ri chèile ann an 1986 fon ainm “Co-bhuidheann de Eòlaichean Dealbhan” (Co-bhuidheann de Eòlaichean Dealbhan, JPEG), a chaidh a stèidheachadh mar phàirt de cho-obair na Buidhne Eadar-nàiseanta airson Inbhe (ISO) agus a’ Choimisean Electrotechnical Eadar-nàiseanta (IEC), dà bhuidheann inbhean eadar-nàiseanta le prìomh oifisean ann an Geneva (An Eilbheis).

Chruthaich buidheann de dhaoine ris an canar JPEG inbhe teannachaidh ìomhaigh didseatach JPEG ann an 1992. Is dòcha gu bheil duine sam bith a chleachd an eadar-lìn air coinneachadh ri ìomhaighean le còd JPEG. Is e seo an dòigh as cumanta air ìomhaighean a chòdachadh, a chuir agus a stòradh. Bho dhuilleagan lìn gu post-d gu na meadhanan sòisealta, bidh JPEG air a chleachdadh billeanan de thursan san latha - cha mhòr a h-uile uair a choimheadas sinn no a chuireas sinn dealbh air-loidhne. Às aonais JPEG, cha bhiodh an lìon cho soilleir, nas slaodaiche, agus is dòcha gum biodh nas lugha de dhealbhan cait ann!

Tha an artaigil seo mu dheidhinn mar as urrainn dhut ìomhaigh JPEG a chòdachadh. Ann am faclan eile, mu na tha a dhìth gus dàta teann a tha air a stòradh air coimpiutair a thionndadh gu ìomhaigh a nochdas air an sgrion. Is fhiach fios a bhith agad mu dheidhinn, chan ann a-mhàin air sgàth gu bheil e cudromach tuigse fhaighinn air an teicneòlas a bhios sinn a’ cleachdadh bho latha gu latha, ach cuideachd air sgàth le bhith a ’nochdadh na h-ìrean teannachaidh, bidh eòlas nas fheàrr againn air tuigse agus lèirsinn, a bharrachd air na mion-fhiosrachadh as motha a tha aig ar sùilean. mothachail air.

A bharrachd air an sin, tha e glè inntinneach cluich le ìomhaighean san dòigh seo.

Mar a tha an cruth JPEG ag obair

A’ coimhead taobh a-staigh JPEG

Air coimpiutair, tha a h-uile dad air a stòradh mar shreath de àireamhan binary. Mar as trice bidh na pìosan seo, neamhan agus feadhainn, air an cruinneachadh ann an ochdnar, a’ dèanamh suas bytes. Nuair a dh'fhosglas tu ìomhaigh JPEG air a 'choimpiutair agad, feumaidh rudeigin (brabhsair, siostam obrachaidh, ge bith dè) na bytes a dhì-chòdachadh, ag ath-nuadhachadh an ìomhaigh thùsail mar liosta de dhhathan a dh'fhaodar a thaisbeanadh.

Ma luchdaich thu sìos am pìos seo àlainn dealbh de chat agus fosgail e ann an deasaiche teacsa, chì thu dòrlach de charactaran measgaichte.

Mar a tha an cruth JPEG ag obair
An seo tha mi a’ cleachdadh Notepad ++ gus sgrùdadh a dhèanamh air susbaint an fhaidhle, oir bidh luchd-deasachaidh teacsa cumanta mar Notepad bho Windows a’ dol suas am binary às deidh dhaibh a shàbhaladh agus cha bhith e a’ freagairt air cruth JPEG.

Tha fosgladh ìomhaigh ann an deasaiche teacsa a’ cur dragh air do choimpiutair, dìreach mar a chuireas tu troimh-chèile an eanchainn agad nuair a shuathadh tu do shùilean agus a thòisicheas tu a’ faicinn spotan dathte!

Canar na spotan sin a chì thu phosphenes, agus chan eil iad mar thoradh air a bhith fosgailte do bhrosnachadh aotrom no hallucinations a ghineadh leis an inntinn. Bidh iad a’ tachairt leis gu bheil an eanchainn agad den bheachd gu bheil fiosrachadh mu sholas aig comharran dealain sam bith anns na nerves optic. Feumaidh an eanchainn a leithid de bharailean a dhèanamh, oir chan eil dòigh ann faighinn a-mach an e fuaim, lèirsinn no rudeigin eile a th’ anns a’ chomharra. Bidh a h-uile nerves anns a’ bhodhaig a ’toirt seachad na h-aon spionnadh dealain. Nuair a chuireas tu cuideam air do shùilean, bidh thu a’ cur comharran nach eil lèirsinneach, ach a’ gnìomhachadh gabhadan san t-sùil, a tha an eanchainn ag eadar-mhìneachadh - sa chùis seo, gu ceàrr - mar rud lèirsinneach. Chì thu gu litireil an cuideam!

Tha e èibhinn a bhith a’ smaoineachadh air cho coltach ‘s a tha coimpiutairean ris an eanchainn, ach tha e cuideachd na shamhla feumail, a’ sealltainn na tha brìgh dàta - ge bith an tèid a ghiùlan tron ​​​​chorp le nerves no air a stòradh ann an coimpiutair - an urra ri mar a tha e air a mhìneachadh. Tha a h-uile dàta binary air a dhèanamh suas de XNUMXs agus XNUMXs, co-phàirtean bunaiteach a tha comasach air fiosrachadh de sheòrsa sam bith a thoirt seachad. Bidh an coimpiutair agad gu tric a’ tomhas mar a mhìnicheas tu iad le bhith a’ cleachdadh sanasan leithid leudachadh fhaidhlichean. A-nis tha sinn ga dhèanamh gam mìneachadh mar theacsa, oir is e sin a tha an deasaiche teacsa a’ sùileachadh.

Gus tuigse fhaighinn air mar a chòdaicheas tu JPEG, feumaidh sinn na comharran tùsail fhaicinn iad fhèin - an dàta binary. Faodar seo a dhèanamh le deasaiche hex, no gu dìreach air adhart duilleag-lìn den artaigil thùsail! Tha ìomhaigh ann, ri taobh a tha anns an raon teacsa a h-uile bytes (ach a-mhàin an bann-cinn) air an taisbeanadh ann an cruth deicheach. Faodaidh tu an atharrachadh agus ath-chòdaichidh an sgriobt agus cruthaichidh tu ìomhaigh ùr air an itealan.

Mar a tha an cruth JPEG ag obair

Faodaidh tu tòrr ionnsachadh dìreach le bhith a’ cluich mun cuairt leis an deasaiche seo. Mar eisimpleir, an urrainn dhut innse dè an òrdugh anns a bheil na piogsail air an stòradh?

Anns an eisimpleir seo, is e an rud neònach nach eil atharrachadh cuid de na h-àireamhan a 'toirt buaidh air an ìomhaigh idir, agus, mar eisimpleir, ma chuireas tu an àireamh 17 an àite 0 anns a' chiad loidhne, bidh an dealbh air a mhilleadh gu tur!

Mar a tha an cruth JPEG ag obair

Bidh atharrachaidhean eile, leithid atharrachadh an 7 air loidhne 1988 gu 254, ag atharrachadh an dath, ach dìreach piogsail às deidh sin.

Mar a tha an cruth JPEG ag obair

Is dòcha gur e an rud as neònach gu bheil cuid de dh’ àireamhan ag atharrachadh chan ann a-mhàin air an dath, ach cuideachd air cumadh na h-ìomhaigh. Atharraich 70 air loidhne 12 gu 2 agus coimhead air an t-sreath gu h-àrd den ìomhaigh gus faicinn dè tha mi a’ ciallachadh.

Mar a tha an cruth JPEG ag obair

Agus ge bith dè an ìomhaigh JPEG a chleachdas tu, lorgaidh tu an-còmhnaidh na pàtrain tàileasg cryptic sin nuair a bhios tu a’ deasachadh bytes.

A’ cluich leis an neach-deasachaidh, tha e duilich faighinn a-mach ciamar a nì thu ath-chruthachadh air dealbh bho na bytes sin, leis gu bheil teannachadh JPEG air a dhèanamh suas de thrì teicneòlasan eadar-dhealaichte a tha air an cur an sàs ann an ìrean ann an ìrean. Nì sinn sgrùdadh air gach fear dhiubh fa leth gus faighinn a-mach an giùlan dìomhair a chì sinn.

Trì ìrean de dhlùthadh JPEG:

  1. Fo-shamhlachadh dath.
  2. Cruth-atharrachadh Cosin air leth agus Discretization.
  3. Còdachadh fad ruith, delta и fear-huff

Gus beachd a thoirt dhut air sgèile an teannachadh, thoir an aire gu bheil an ìomhaigh gu h-àrd a’ riochdachadh àireamhan 79, a tha timcheall air 819 KB. Nam biodh sinn ga stòradh gun teannachadh, bhiodh feum againn air trì àireamhan airson gach piogsail - airson na pàirtean dearg, uaine is gorm. Bhiodh seo a’ tighinn gu 79 àireamhan, no c. 917 Kb. Mar thoradh air teannachadh JPEG, tha am faidhle mu dheireadh air a dhol sìos còrr air 700 tursan!

Gu dearbh, faodar an ìomhaigh seo a dhlùthadh mòran a bharrachd. Gu h-ìosal tha dà ìomhaigh taobh ri taobh - chaidh an dealbh air an làimh dheis a dhlùthadh gu 16 KB, is e sin, 57 tursan nas lugha na an dreach neo-bhrùichte!

Mar a tha an cruth JPEG ag obair

Ma sheallas tu gu dlùth, chì thu nach eil na h-ìomhaighean sin co-ionann. Tha an dithis aca nan dealbhan le teannachadh JPEG, ach tha am fear ceart tòrr nas lugha ann an tomhas-lìonaidh. Tha e cuideachd a 'coimhead beagan nas miosa (seall air na ceàrnagan dath cùl-raoin). Mar sin, canar JPEG compression cally cuideachd; tron ​​phròiseas teannachaidh, bidh an ìomhaigh ag atharrachadh agus a’ call beagan mion-fhiosrachaidh.

1. Dath subsampling

Seo dealbh anns nach eil ach a’ chiad ìre de dhlùthadh air a chuir an sàs.

Mar a tha an cruth JPEG ag obair
(Tionndadh eadar-ghnìomhach ann an thùsail artaigilean). Le bhith a’ toirt air falbh aon àireamh a’ sgrios a h-uile dath. Ach, ma thèid dìreach sia àireamhan a thoirt air falbh, chan eil mòran buaidh aige air an ìomhaigh.

A-nis tha na h-àireamhan beagan nas fhasa a thuigsinn. Is e seo cha mhòr liosta shìmplidh de dhhathan, anns a bheil gach byte ag atharrachadh dìreach aon piogsail, ach aig an aon àm tha e mu thràth leth meud na h-ìomhaigh neo-bhrùichte (a bheireadh suas ri 300 KB anns a’ mheud lùghdaichte seo). An urrainn dhut tomhas carson?

Chì thu nach eil na h-àireamhan sin a’ riochdachadh na co-phàirtean àbhaisteach dearg, uaine is gorm, oir ma chuireas sinn neamhan an àite nan àireamhan gu lèir, gheibh sinn dealbh uaine (chan e fear geal).

Mar a tha an cruth JPEG ag obair

Tha seo air sgàth gu bheil na bytes sin a’ seasamh airson Y (soilleireachd),

Mar a tha an cruth JPEG ag obair

Cb (gorm coimeasach),

Mar a tha an cruth JPEG ag obair

agus dealbhan Cr (dearg coimeasach).

Mar a tha an cruth JPEG ag obair

Carson nach cleachd thu RGB? Às deidh na h-uile, is ann mar seo a bhios a ’mhòr-chuid de scrionaichean ùr-nodha ag obair. Faodaidh an monitor agad dath sam bith a thaisbeanadh, a’ toirt a-steach dearg, uaine is gorm aig diofar dhian airson gach piogsail. Gheibhear geal le bhith a’ tionndadh na trì air adhart aig làn shoilleireachd, agus tha dubh gan tionndadh dheth.

Mar a tha an cruth JPEG ag obair

Tha e cuideachd glè choltach ri mar a tha sùil an duine ag obair. Canar na gabhadairean dath nar sùilean “cònaichean", agus tha iad air an roinn ann an trì seòrsaichean, agus tha gach fear dhiubh nas mothachail air dathan dearg, no uaine, no gorm [tha cònaichean seòrsa S mothachail ann am violet-gorm (S bhon Bheurla. Short - short-wavelength spectrum), Seòrsa M - ann an uaine-buidhe (M bhon Bheurla. Meadhanach - tonn meadhanach), agus L-seòrsa - ann am buidhe-dearg (L bhon Bheurla. Long - tonn fada) pàirtean den speactram. Tha làthaireachd nan trì seòrsaichean cònaichean sin (agus slatan mothachail ann am pàirt uaine emerald den speactram) a’ toirt sealladh dath dha neach. / mu thuairmeas. eadar-theangachadh.]. Bataichean, an seòrsa eile de photoreceptor nar sùilean, comasach air atharrachaidhean ann an soilleireachd a lorg ach tha e tòrr nas mothachail air dath. Tha timcheall air 120 millean slat air ar sùilean agus dìreach 6 millean còn.

Mar sin, tha ar sùilean a 'mothachadh gu bheil atharrachaidhean ann an soilleireachd mòran nas fheàrr na atharrachaidhean ann an dath. Ma dhealaicheas tu an dath bhon shoilleireachd, faodaidh tu dath beag a thoirt air falbh, agus chan fhaic duine dad. Is e subsampling chroma am pròiseas a bhith a’ riochdachadh co-phàirtean dath ìomhaigh aig rùn nas ìsle na na co-phàirtean luminance. Anns an eisimpleir gu h-àrd, tha dìreach aon phàirt Y aig gach piogsail, agus tha dìreach aon phàirt Cb agus aon phàirt Cr aig gach buidheann fa leth de cheithir piogsail. Mar sin, tha ceithir tursan nas lugha de dh'fhiosrachadh dath anns an ìomhaigh na an tè thùsail.

Chan eil àite dath YCbCr air a chleachdadh a-mhàin ann an JPEGs. Chaidh a chruthachadh an toiseach ann an 1938 airson craolaidhean telebhisean. Chan eil Tbh dath aig a h-uile duine, agus mar sin le bhith a’ sgaradh dath agus soilleireachd leig leis a h-uile duine an aon chomharra fhaighinn, agus cha chleachd telebhiseanan gun dath ach am pàirt soilleireachd.

Mar sin, bidh toirt air falbh aon àireamh bhon neach-deasachaidh gu tur a’ sgrios a h-uile dath. Tha na pàirtean air an stòradh anns an fhoirm YYYY Cb Cr (gu fìrinneach, chan ann gu riatanach san òrdugh seo - tha an òrdugh stòraidh air a shònrachadh ann am bann-cinn an fhaidhle). Le bhith a’ toirt air falbh a’ chiad àireamh bidh a’ chiad luach Cb air fhaicinn mar Y, Cr mar Cb, agus san fharsaingeachd, gheibhear buaidh domino, ag atharrachadh a h-uile dath san dealbh.

Chan eil an sònrachadh JPEG ag iarraidh ort YCbCr a chleachdadh. Ach bidh a’ mhòr-chuid de fhaidhlichean ga chleachdadh leis gu bheil e a’ toirt seachad ìomhaighean de chàileachd nas fheàrr às deidh downsampling an taca ri RGB. Ach cha leig thu leas m’ fhacal a ghabhail air a shon. Faic dhut fhèin sa chlàr gu h-ìosal mar a bhiodh fo-samplachadh gach pàirt fa leth coltach ann an RGB agus YCbCr.

Mar a tha an cruth JPEG ag obair
(Tionndadh eadar-ghnìomhach ann an thùsail artaigilean).

Chan eil toirt air falbh gorm cho follaiseach ri dearg no uaine. Tha sin air sgàth na sia millean còn nad shùilean, tha timcheall air 64% mothachail air dearg, 32% gu uaine, agus 2% gu gorm.

Tha e nas fheàrr fo-shamhlachadh na co-phàirt Y (gu h-ìosal air an taobh chlì). Tha eadhon atharrachadh beag follaiseach.

Cha bhith tionndadh ìomhaigh bho RGB gu YCbCr a’ lughdachadh meud an fhaidhle, ach tha e ga dhèanamh nas fhasa mion-fhiosrachadh nach eil cho follaiseach a lorg a ghabhas toirt air falbh. Bidh teannachadh call a ‘tachairt anns an dàrna ìre. Tha e stèidhichte air a’ bheachd a bhith a’ taisbeanadh dàta ann an cruth nas teann.

2. Cruth-atharrachadh cosine air leth agus discretization

Tha an ìre teannachaidh seo, sa mhòr-chuid, a’ mìneachadh brìgh JPEG. Às deidh dhuinn na dathan a thionndadh gu YCbCr, tha na pàirtean air an teannachadh leotha fhèin, agus mar sin chan urrainn dhuinn ach fòcas a chuir air a’ phàirt Y bho seo a-mach.

Mar a tha an cruth JPEG ag obair
(Tionndadh eadar-ghnìomhach ann an thùsail artaigilean). Anns an dreach eadar-ghnìomhach, ma bhriogas tu air piogsail sgrolaich an deasaiche chun loidhne a tha ga riochdachadh. Feuch ri àireamhan a thoirt air falbh bhon deireadh no cuir beagan neamhan ri àireamh sònraichte.

Aig a 'chiad sealladh, tha e a' coimhead coltach ri fìor dhroch teannachadh. Tha 100 piogsail ann an ìomhaigh, agus bheir e 000 àireamhan airson an soilleireachd (Y-com-pàirtean) a chomharrachadh - tha sin nas miosa na bhith a’ teannachadh dad idir!

Ach, thoir an aire gu bheil a’ mhòr-chuid de na h-àireamhan sin neoni. A bharrachd air an sin, faodar na neamhan sin uile aig deireadh nan loidhnichean a thoirt air falbh gun a bhith ag atharrachadh an ìomhaigh. Tha mu 26 àireamh air fhàgail, a tha cha mhòr 000 tursan nas lugha!

Anns an ìre seo tha dìomhaireachd pàtrain tàileasg. Eu-coltach ri buaidhean eile a chunnaic sinn, chan e glitch a th’ ann an coltas nam pàtrain sin. Is iadsan bunaitean togail an ìomhaigh gu lèir. Anns gach loidhne den neach-deasachaidh tha dìreach 64 àireamhan, co-èifeachdan cruth-atharrachaidh cosine air leth (DCT) a rèir dè cho dian sa tha 64 pàtrain gun samhail.

Tha na pàtrain sin air an cruthachadh stèidhichte air cuilbheart cosine. Seo cò ris a tha cuid dhiubh coltach:

Mar a tha an cruth JPEG ag obair
8 a-mach à 64 n-àireamhan

Gu h-ìosal tha dealbh a’ sealltainn na 64 pàtrain uile.

Mar a tha an cruth JPEG ag obair
(Tionndadh eadar-ghnìomhach ann an thùsail artaigilean).

Tha na pàtrain sin gu sònraichte cudromach leis gu bheil iad nam bunait airson ìomhaighean 8x8. Mura h-eil thu eòlach air ailseabra sreathach, tha seo a’ ciallachadh gum faodar ìomhaigh 8x8 sam bith a dhèanamh bho na 64 pàtrain sin. Is e DCT am pròiseas airson ìomhaighean a roinn ann am blocaichean 8 × 8 agus gach bloc a thionndadh gu bhith na mheasgachadh de na co-èifeachdan 64 sin.

Tha e coltach gu bheil draoidheachd ann gum faod ìomhaigh sam bith a bhith air a dhèanamh suas de 64 pàtrain sònraichte. Ach, tha seo an aon rud ri bhith ag ràdh gum faodar àite sam bith air an Talamh a mhìneachadh le dà àireamh - domhan-leud agus domhan-leud [a 'sealltainn na leth-chruinne / approx. eadar-theangachadh.]. Bidh sinn tric a 'smaoineachadh air uachdar na Talmhainn mar dhà-thomhas, agus mar sin chan fheum sinn ach dà àireamh. Tha 8 tomhasan aig ìomhaigh 8x64, agus mar sin feumaidh sinn 64 àireamhan.

Chan eil e soilleir fhathast ciamar a tha seo gar cuideachadh a thaobh teannachadh. Ma tha feum againn air 64 àireamhan airson ìomhaigh 8x8 a riochdachadh, carson a bhiodh seo na b’ fheàrr na dìreach 64 co-phàirtean solais a stòradh? Bidh sinn a’ dèanamh seo airson an aon adhbhar a thionndaidh sinn trì àireamhan RGB gu trì àireamhan YCbCr: leigidh e leinn mion-fhiosrachadh a thoirt air falbh.

Tha e duilich faicinn dè dìreach am mion-fhiosrachadh a thathas a’ toirt air falbh aig an ìre seo oir tha JPEG a’ buntainn DCT ri blocaichean 8 × 8. Ach, chan eil duine a’ toirmeasg dhuinn a chuir an sàs san dealbh gu lèir. Seo cò ris a tha an DCT coltach airson a’ phàirt Y nuair a thèid a chur an sàs san dealbh gu lèir:

Mar a tha an cruth JPEG ag obair

Faodar còrr air 60 àireamh a thoirt air falbh bhon deireadh agus cha mhòr nach eil atharrachaidhean follaiseach san dealbh.

Mar a tha an cruth JPEG ag obair

Thoir an aire, ge-tà, ma chuireas sinn a-mach na ciad còig àireamhan, bidh an diofar follaiseach.

Mar a tha an cruth JPEG ag obair

Tha na h-àireamhan aig an toiseach a’ riochdachadh atharrachaidhean tricead ìosal san ìomhaigh, agus bidh ar sùilean gan togail as fheàrr. Tha àireamhan faisg air an deireadh a’ nochdadh atharrachaidhean tricead àrd a tha nas duilghe mothachadh. Gus “fhaicinn dè nach fhaic an t-sùil” is urrainn dhuinn na mion-fhiosrachadh àrd-tricead sin a sgaradh le bhith a’ toirt a-mach a’ chiad 5000 àireamh.

Mar a tha an cruth JPEG ag obair

Chì sinn a h-uile raon den ìomhaigh far a bheil an atharrachadh as motha a’ tachairt bho piogsail gu piogsail. Tha sùilean a’ chait, a whiskers, a’ phlaide terry agus na faileasan san oisean gu h-ìosal air an taobh chlì a’ seasamh a-mach. Faodaidh tu a dhol nas fhaide le bhith a’ toirt a-mach a’ chiad 10 àireamh:

Mar a tha an cruth JPEG ag obair

20:

Mar a tha an cruth JPEG ag obair

40:

Mar a tha an cruth JPEG ag obair

60:

Mar a tha an cruth JPEG ag obair

Tha am mion-fhiosrachadh àrd-tricead sin air a thoirt air falbh le JPEG aig ìre teannachaidh. Tha tionndadh dathan gu co-èifeachdan DCT gun chall. Tha call air a chruthachadh aig a 'cheum samplaidh, far a bheil luachan àrd-tricead no faisg air neoni air an toirt air falbh. Nuair a lùghdaicheas tu càileachd sàbhaladh JPEG, bidh am prògram ag àrdachadh an stairsnich airson an àireamh de luachan a thèid a thoirt air falbh, a lughdaicheas meud an fhaidhle, ach a nì an dealbh nas pixelated. Mar sin bha an ìomhaigh anns a 'chiad earrainn, a bha 57 tursan nas lugha, a' coimhead mar seo. Bha gach bloc 8 × 8 a’ riochdachadh àireamh mòran nas lugha de cho-èifeachdan DCT an taca ris an dreach càileachd nas àirde.

Faodaidh tu rudeigin a dhèanamh cho fionnar ri bhith a’ sruthadh ìomhaighean mean air mhean. Faodaidh tu dealbh neo-shoilleir a thaisbeanadh a bhios a’ fàs nas mionaidiche mar a thèid barrachd cho-èifeachdan a luchdachadh sìos.

An seo, dìreach airson spòrs, dè thachras nuair a bhios tu a’ cleachdadh dìreach 24 àireamhan:

Mar a tha an cruth JPEG ag obair

No dìreach 5000:

Mar a tha an cruth JPEG ag obair

Gu math neo-shoilleir ach aithnichte!

3. Còdadh fad ruith, delta agus Huffman

Gu ruige seo, tha a h-uile ìre de dhlùthadh air a bhith caillte. Tha an ìre mu dheireadh, air an làimh eile, a 'dol gun chall. Chan eil e a 'toirt air falbh fiosrachadh, ach gu mòr a' lùghdachadh meud an fhaidhle.

Ciamar as urrainn dhut rudeigin a dhlùthadh gun a bhith a 'toirt air falbh fiosrachadh? Smaoinich mar a bheireadh sinn cunntas air ceart-cheàrnach sìmplidh dubh 700 x 437.

Bidh JPEG a’ cleachdadh àireamhan 5000 airson seo, ach faodar toraidhean fada nas fheàrr a choileanadh. An smaoinich thu air sgeama còdaidh a tha a’ toirt cunntas air ìomhaigh mar sin ann an cho beag de bytes ’s a ghabhas?

Bidh an sgeama as lugha a b’ urrainn dhomh a chruthachadh a’ cleachdadh ceithir: trì airson an dath, agus an ceathramh fear airson cia mheud piogsail a tha aig an dath sin. Canar còdadh fad ruith ris a’ bheachd a bhith a’ riochdachadh luachan a-rithist ann an dòigh cho teann. Tha e gun chall oir is urrainn dhuinn an dàta còdaichte fhaighinn air ais anns a’ chruth thùsail aige.

Tha meud faidhle JPEG le ceart-cheàrnach dubh tòrr nas motha na 4 bytes - cuimhnich gu bheil teannachadh air a chuir an sàs aig ìre DCT air blocaichean de 8 × 8 piogsail. Mar sin, aig a’ char as lugha, feumaidh sinn aon cho-èifeachd DCT airson gach 64 piogsail. Feumaidh sinn fear oir an àite a bhith a’ stòradh aon cho-èifeachd DCT agus an uairsin 63 neamhan, tha còdachadh fad-ruith a’ leigeil leinn aon àireamh a stòradh agus a’ comharrachadh “tha a h-uile gin eile nan neamhan”.

Is e dòigh-obrach a th’ ann an còdachadh Delta far a bheil eadar-dhealachadh anns gach byte bho luach air choreigin seach luach iomlan. Mar sin, bidh deasachadh bytes sònraichte ag atharrachadh dath gach piogsail eile. Mar eisimpleir, an àite a bhith a 'stòradh

12 13 14 14 14 13 13 14

Dh’fhaodamaid tòiseachadh le 12 agus an uairsin dìreach sgrìobhadh sìos cia mheud a bu chòir a chur ris no a thoirt air falbh gus an ath àireamh fhaighinn. Agus tha an sreath seo ann an còdadh delta ann an cruth:

12 1 1 0 0 -1 0 1

Chan eil an dàta a chaidh a thionndadh nas lugha na an dàta tùsail, ach tha e nas fhasa a dhlùthadh. Le bhith a’ cleachdadh còdachadh delta mus tèid còdachadh fad-ruith a dhèanamh, cuidichidh sin mòran fhad ‘s a tha e fhathast na dhlùthadh gun chall.

Is e còdachadh Delta aon den bheagan dhòighean a thathas a’ cleachdadh taobh a-muigh blocaichean 8x8. De na co-èifeachdan 64 DCT, chan eil ann an aon dhiubh ach gnìomh tonn seasmhach (dath cruaidh). Tha e a’ riochdachadh soilleireachd cuibheasach gach bloca airson na co-phàirtean luminance, no an gormachd cuibheasach airson na pàirtean Cb, agus mar sin air adhart. Canar luach DC ris a’ chiad luach de gach bloc DCT, agus tha gach luach DC air a chòdachadh a thaobh an fheadhainn a bh’ ann roimhe. Mar sin, bheir atharrachadh soilleireachd a’ chiad bhloc buaidh air a h-uile bloc.

Tha an dìomhaireachd mu dheireadh fhathast: ciamar a tha atharrachadh an àireamh singilte gu tur a’ milleadh an dealbh gu lèir? Gu ruige seo, cha robh na feartan sin aig ìrean teannachaidh. Tha am freagairt ann am bann-cinn JPEG. Anns a 'chiad 500 bytes tha meata-dàta mun ìomhaigh - leud, àirde, msaa, agus gu ruige seo chan eil sinn air obrachadh leotha.

Às aonais bann-cinn, tha e cha mhòr do-dhèanta (uill, gu math duilich) JPEG a dhì-chòdachadh. Bidh e coltach gu bheil mi a’ feuchainn ri dealbh a mhìneachadh dhut, agus tha mi a’ tòiseachadh air faclan a chruthachadh airson mo bheachd a chuir an cèill. Is dòcha gum bi an tuairisgeul gu math pongail, oir is urrainn dhomh faclan a chruthachadh leis an dearbh bhrìgh a tha mi airson a thoirt seachad, ach airson a h-uile duine eile cha bhith iad a’ dèanamh ciall.

Tha e gòrach, ach sin mar a thachras e. Tha gach ìomhaigh JPEG air a dhlùthadh le còdan sònraichte dha. Tha faclair a’ chòd air a stòradh sa cheann-cinn. Canar “còd Huffman” ris an dòigh seo agus canar clàr Huffman ris an fhaclair. Anns a 'cheann, tha an clàr air a chomharrachadh le dà bytes - 255 agus an uairsin 196. Faodaidh a bhòrd fhèin a bhith aig gach pàirt dath.

Bheir atharrachaidhean clàr buaidh mhòr air ìomhaigh sam bith. Is e deagh eisimpleir a bhith ag atharrachadh 15 gu 1 air a’ 12mh loidhne.

Mar a tha an cruth JPEG ag obair

Tha seo air sgàth 's gu bheil na clàran a' sònrachadh mar a tha pìosan fa leth ri leughadh. Gu ruige seo, chan eil sinn air obrachadh ach le àireamhan dàna ann an cruth deicheach. Ach tha seo a 'falach bhuainn ma tha thu airson an àireamh 1 a stòradh ann am byte, bidh e coltach ri 00000001, oir feumaidh ochd pìosan a bhith aig gach byte, eadhon ged nach eil feum air ach aon dhiubh.

Dh’ fhaodadh seo a bhith na sgudal mòr air àite ma tha tòrr àireamhan beaga agad. Tha còd Huffman na dhòigh-obrach a leigeas leinn an riatanas seo a shocrachadh gum feum ochd pìosan a bhith aig gach àireamh. Tha seo a’ ciallachadh ma chì thu dà bytes:

234 115

An uairsin, a rèir clàr Huffman, faodaidh e a bhith trì àireamhan. Gus an toirt a-mach, feumaidh tu an toiseach an roinn ann am pìosan fa leth:

11101010 01110011

An uairsin tionndaidhidh sinn chun bhòrd gus tuigsinn mar a chuireas tu iad ann am buidhnean. Mar eisimpleir, dh’ fhaodadh gur e a’ chiad sia pìosan, (111010), no 58 ann an deicheach, air a leantainn le còig pìosan (10011), no 19, agus mu dheireadh na ceithir pìosan mu dheireadh (0011), no 3.

Mar sin, tha e gu math duilich na bytes a thuigsinn aig an ìre seo de dhlùthadh. Chan eil na bytes a’ riochdachadh na tha iad coltach. Cha tèid mi a-steach don fhiosrachadh mu bhith ag obair leis a’ chlàr san artaigil seo, ach de stuthan air a’ chuspair seo air-loidhne gu leòr.

Is e aon de na cleasan fionnar as urrainn dhut a dhèanamh leis an eòlas seo an bann-cinn a sgaradh bhon JPEG agus a stòradh air leth. Gu dearbh, tha e a 'tionndadh a-mach nach urrainn dhut ach am faidhle a leughadh. Bidh Facebook a’ dèanamh seo gus faidhlichean a lughdachadh tuilleadh.

Is e an rud eile a ghabhas dèanamh gus clàr Huffman atharrachadh gu ìre mhòr. Dha feadhainn eile, bidh e coltach ri dealbh millte. Agus is e a-mhàin gum bi fios agad air an roghainn draoidheachd airson a chàradh.

Gus geàrr-chunntas: mar sin dè a tha a dhìth gus JPEG a dhì-chòdachadh? Riatanach:

  1. Thoir a-mach clàr (ean) Huffman bhon cheann-cinn agus dì-chòdaich na pìosan.
  2. Thoir a-mach na co-èifeachdan cruth-atharrachaidh cosine air leth airson gach pàirt dath is soillseachadh airson gach bloc 8 × 8 le bhith ag atharrachadh gu neo-sheasmhach còdachadh fad ruith agus delta.
  3. Cuir còmhla cosines stèidhichte air co-èifeachdan gus luachan piogsail fhaighinn airson gach bloc 8 × 8.
  4. Sgèile co-phàirtean dath ma chaidh subsampling a dhèanamh (tha am fiosrachadh seo sa cheann).
  5. Tionndaidh na luachan YCbCr mar thoradh air sin airson gach piogsail gu RGB.
  6. Thoir an dealbh chun sgrion!

Obair chruaidh airson dìreach a bhith a’ coimhead dealbh le cat! Ach, is e an rud as toil leam mu dheidhinn gu bheil e a’ sealltainn mar a tha teicneòlas JPEG stèidhichte air daoine. Tha e stèidhichte air feartan ar beachd, a leigeas leinn teannachadh mòran nas fheàrr a choileanadh na teicneòlasan gnàthach. Agus a-nis, a 'tuigsinn mar a tha JPEG ag obair, faodaidh tu smaoineachadh mar a ghabhas na teicneòlasan sin a ghluasad gu raointean eile. Mar eisimpleir, faodaidh còdachadh delta ann am bhidio lùghdachadh mòr a thoirt air meud faidhle, oir gu tric bidh raointean slàn ann nach atharraich bho fhrèam gu frèam (mar eisimpleir, an cùl-raon).

Còd air a chleachdadh san artaigil, fosgailte, agus tha stiùireadh ann airson do chuid fhèin a chur an àite nan dealbhan.

Source: www.habr.com

Cuir beachd ann