JPEG. Algorithm cywasgu

Helo eto! Cefais yr erthygl hon wedi'i hysgrifennu yn ôl ym mis Mai 2019. Mae hwn yn barhad o gyfres o erthyglau am WAVE a JPEG, yma yn gyntaf. Bydd y cyhoeddiad hwn yn cynnwys gwybodaeth am yr algorithm amgodio delweddau a'r fformat ei hun yn ei gyfanrwydd.

Pinsiad o hanes

Llwy fwrdd o erthygl Wicipedia:

Mae JPEG (Cyd-grŵp Arbenigwyr Ffotograffig) yn un o'r fformatau graffeg raster poblogaidd a ddefnyddir ar gyfer storio ffotograffau a delweddau tebyg.

Datblygwyd y safon hon gan y Cyd-grŵp Arbenigwyr Ffotograffaidd yn ôl yn 1991 ar gyfer cywasgu delweddau effeithlon.

Sut mae delweddau'n mynd o amrwd i JPEG?

Mae rhai pobl yn meddwl bod delweddau JPEG yn ddata amrwd wedi'u cywasgu gan ddefnyddio dull Huffman, ond nid yw hyn yn wir. Cyn cywasgu rheolaeth, mae data'n teithio'n bell.

Yn gyntaf, mae'r model lliw yn cael ei newid o RGB i YCbCr. Mae hyd yn oed algorithm arbennig ar gyfer hyn - yma. Nid yw Y yn cael ei gyffwrdd, gan ei fod yn gyfrifol am ddisgleirdeb, a bydd ei newid yn amlwg.

Y peth cyntaf i'w wneud gyda'r ddelwedd yw "teneuo" (is-samplu). Mae'n hawdd ei ddeall: cymerir amrywiaeth 2x2 o bicseli, yna cymerir Cb a Cr - gwerthoedd cyfartalog pob un o gydrannau YCbCr y 4 picsel hyn. Felly, enillon ni 6 beit, yn lle 4 Y, 4 Cb, 4 Cr cawsom 4 Y a'r un Cb a Cr ar gyfer pob un ohonynt (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 - 6 = 6). Ar raddfa hyd yn oed 2x2, mae cywasgu coll gyda chymhareb cywasgu 2:1 yn swnio'n solet. Mae hyn yn berthnasol i'r ddelwedd gyfan. Ac felly - fe wnaethon nhw ollwng hanner maint. A gallwn ddefnyddio'r dechneg hon diolch i'n canfyddiad lliw. Bydd person yn sylwi'n hawdd ar wahaniaeth mewn disgleirdeb, ond nid mewn lliw, os caiff ei gyfartaleddu dros floc bach o bicseli. Gellir teneuo hefyd mewn llinell, 4 picsel yn llorweddol ac yn fertigol. Defnyddir yr opsiwn cyntaf yn amlach. Os yw ansawdd delwedd yn bwysig, yna ni chyflawnir dirywiad o gwbl.
Darlun gweledol o deneuo (ni adawodd Habr i mi fewnosod gif) - https://i.ibb.co/Rg5Th9H/150953010617579181.gif

Prif ran y paratoad

PrEP

Nawr daw'r rhan anoddaf a mwyaf angenrheidiol. Rhennir y ddelwedd gyfan yn flociau 8x8 (defnyddir llenwi os nad yw'r cydraniad yn lluosrif o ochr y bloc).

Nawr gwnewch gais i bob bloc DCT (Trawsnewid Cosin Arwahanol). Yn y rhan hon, mae popeth diangen yn cael ei dynnu allan o'r llun. Gan ddefnyddio DCT, mae angen i chi ddeall a yw bloc penodol (8×8) yn disgrifio unrhyw ran undonog o'r ddelwedd: yr awyr, y wal; neu mae'n cynnwys strwythur cymhleth (gwallt, symbolau, ac ati). Mae'n rhesymegol y gellir disgrifio 64 picsel o liw tebyg gan 1 yn unig, oherwydd mae maint y bloc eisoes yn hysbys. Cymaint ar gyfer y cywasgu: 64 i 1.

Mae DCT yn troi'r bloc yn sbectrwm, a lle mae'r darlleniadau'n newid yn sydyn, mae'r cyfernod yn dod yn bositif, a'r mwyaf craff yw'r trawsnewidiad, yr uchaf fydd yr allbwn. Pan fo'r cyfernod yn uwch, mae'r llun yn dangos trawsnewidiadau clir mewn lliw a disgleirdeb, lle mae'n is - newidiadau gwan (llyfn) yng ngwerthoedd y cydrannau YCbCr yn y bloc.

Meintioli

Mae gosodiadau cywasgu eisoes wedi'u cymhwyso yma. Rhennir pob un o'r cyfernodau ym mhob un o'r matricsau 8x8 â nifer penodol. Os na fyddwch yn lleihau ansawdd y ddelwedd ar ôl ei holl addasiadau, yna dylai'r rhannwr fod yn un. Os yw'r cof a feddiannir gan y llun hwn yn bwysicach i chi, yna bydd y rhannydd yn fwy nag 1, a bydd y cyniferydd yn cael ei dalgrynnu. Mae'n ymddangos, ar ôl talgrynnu, y byddwch yn aml yn cael llawer o sero.

Gwneir meintioli i greu'r posibilrwydd o gywasgu hyd yn oed yn fwy. Dyma sut mae'n edrych gan ddefnyddio'r enghraifft o feintioli'r graff y = sin(x):

JPEG. Algorithm cywasgu

Cywasgiad

Yn gyntaf rydym yn mynd trwy'r matrics mewn patrwm igam ogam:

JPEG. Algorithm cywasgu

Rydym yn cael arae un-dimensiwn gyda rhifau. Rydym yn gweld bod llawer o sero ynddo, gellir eu dileu. I wneud hyn, yn lle dilyniant o seroau lawer, rydyn ni'n nodi 1 sero ac ar ei ôl rhif yn nodi eu rhif yn y dilyniant. Fel hyn gallwch chi ailosod i 1/3 maint yr arae gyfan. Ac yna rydym yn syml yn cywasgu'r amrywiaeth hon gan ddefnyddio dull Huffman a'i ysgrifennu yn y ffeil ei hun.

Lle defnyddiwyd

Ym mhobman. Fel PNG, defnyddir JPEG mewn camerâu, OSs (fel logos cwmni, eiconau cymhwysiad, mân-luniau) ac ym mhob maes posibl lle mae angen storio delweddau'n effeithlon.

Allbwn

Ar hyn o bryd, mae gwybodaeth am JPEG bellach yn werthfawr at ddibenion addysgol yn unig, oherwydd ei fod eisoes wedi'i adeiladu ym mhobman ac wedi'i optimeiddio gan grwpiau mawr o bobl, ond mae gwenithfaen gwyddoniaeth yn dal yn flasus.

Ffynonellau

Erthygl am YCbCr ar Wicipedia....
Erthygl Wicipedia ar JPEG
Ychydig am PrEP o'r post Pikabu
Erthygl Wicipedia ar PrEP

Ffynhonnell: hab.com

Ychwanegu sylw