JPEG. Algorîtmaya Compression

Dîsa silav! Min ev gotara ku di Gulana 2019-an de hatî nivîsandin dît. Ev berdewamiya rêze gotarên li ser WAVE û JPEG, li vir e yekem. Ev weşan dê di derheqê algorîtmaya kodkirina wêneyê û forma xwe de bi tevahî agahdarî bigire.

Pîrek ji dîrokê

Kûçikek gotara Wîkîpediya:

JPEG (Joint Photographic Experts Group) yek ji wan formatên grafikên raster ên populer e ku ji bo hilanîna wêne û wêneyên mîna wan tê bikar anîn.

Ev standard ji hêla Koma Pisporên Wênekêş ên Hevbeş ve di sala 1991-an de ji bo berhevkirina wêneya bikêrhatî hate pêşve xistin.

Wêneyên çawa ji xam diçin JPEG?

Hin kes difikirin ku wêneyên JPEG daneyên xav in ku bi karanîna rêbaza Huffman têne berhev kirin, lê ev ne rast e. Berî berhevkirina kontrolê, dane rêyek dirêj dimeşe.

Pêşîn, modela rengîn ji RGB berbi YCbCr ve tê guhertin. Ji bo vê yekê algorîtmayek taybetî jî heye - vir. Y nayê destwerdan, ji ber ku ew berpirsiyariya ronahiyê ye, û guhertina wê dê diyar be.

Yekem tiştê ku bi wêneyê re bikin ev e "tenik" (bin-nimûnekirin). Fêmkirina wê hêsan e: rêzek 2x2 pixel tê girtin, dûv re Cb û Cr têne girtin - nirxên navînî yên her yek ji pêkhateyên YCbCr yên van 4 pixelan. Wiha, me 6 byte qezenc kir, li şûna 4 Y, 4 Cb, 4 Cr me 4 Y û heman Cb û Cr ji bo her yek ji wan girt (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 - 6 = 6). Tewra di pîvana 2x2 de jî, kompresyona windayî ya bi rêjeyek 2:1 ya kompresyonê zexm xuya dike. Ev ji bo tevahiya wêneyê derbas dibe. Û bi vî awayî - ew nîv mezinahî daketin. Û em dikarin vê teknîkê bi saya têgihîştina rengê xwe bikar bînin. Ger ku ew li ser blokek piçûk a pîxelan were hesibandin, mirov bi hêsanî dê cûdahiyek di ronahiyê de, lê ne di reng de bibîne. Tenikkirin jî dikare bi rêzek, 4 pixelên horizontî û vertîkal jî were kirin. Vebijêrka yekem pir caran tê bikaranîn. Ger kalîteya wêneyê girîng e, wê hingê hilweşandin bi tevahî nayê kirin.
Nîşanek dîtbar a ziravbûnê (Habr nehişt ku ez gifek têxim) - https://i.ibb.co/Rg5Th9H/150953010617579181.gif

Beşa sereke ya amadekariyê

PrEP

Niha beşa herî zor û pêwîst tê. Tevahiya wêneyê di blokên 8x8 de tê dabeş kirin (heger çareserî ne pirjimarek aliyek blokê be dagirtin tê bikar anîn).

Niha li ser her blokek bicîh bikin DCT (Veguherîna Kozîna Veqetandî). Di vê beşê de her tiştê nepêwîst ji wêneyê tê derxistin. Bi karanîna DCT, hûn hewce ne ku fêm bikin ka blokek diyar (8×8) perçeyek yekreng a wêneyê diyar dike: ezman, dîwar; an jî avahiyek tevlihev heye (por, sembol, hwd.). Ev mentiqî ye ku 64 pixelên rengîn ên wekhev dikarin bi tenê 1-ê vebêjin, ji ber ku mezinahiya blokê jixwe tê zanîn. Ji bo berhevkirinê pir zêde: 64 ber 1.

DCT blokê vediguherîne spektrumê, û li cîhê ku xwendin bi tundî diguhezin, hevseng erênî dibe, û her ku derbasbûn tûjtir bibe, dê hilber jî bilindtir bibe. Li cîhê ku hevseng bilindtir e, wêne di reng û ronahiyê de veguheztinên zelal nîşan dide, li ku derê ew kêmtir e - guheztinên qels (heval) di nirxên pêkhateyên YCbCr de di blokê de.

Quantization

Mîhengên kompresyonê jixwe li vir têne sepandin. Di her matricên 8x8 de her jimarek bi hejmareke diyarkirî tê dabeş kirin. Ger hûn piştî hemî guheztinên wê qalîteya wêneyê kêm nekin, wê hingê dabeşker divê yek be. Ger bîranîna ku ji hêla vê wêneyê ve hatî dagir kirin ji we re girîngtir be, wê hingê dabeşker dê ji 1-ê mezintir be, û kêşker dê were dorpêkirin. Derket holê ku piştî dorpêçkirinê hûn bi gelemperî bi gelek sifiran diqedin.

Quantîzasyon tê kirin da ku îhtîmala çewisandina hê mezintir biafirîne. Li vir dixuye ku bi karanîna mînaka quantîzekirina grafîkê y = sin (x) dixuye:

JPEG. Algorîtmaya Compression

Compression

Pêşî em di matrixê de bi rengek zig-zag derbas dibin:

JPEG. Algorîtmaya Compression

Em rêzek yek-alî ya bi hejmaran digirin. Em dibînin ku gelek sifir tê de hene, dikarin bên rakirin. Ji bo vê yekê, li şûna rêzek ji gelek sifiran, em dikevin 1 sifirê û piştî wê jî hejmareke ku hejmara wan di rêzê de nîşan dide. Bi vî rengî hûn dikarin 1/3 mezinahiya tevahiya rêzê vegerînin. Û dûv re em bi hêsanî vê array bi karanîna rêbaza Huffman berhev dikin û wê di pelê bixwe de dinivîsin.

Li ku tê bikaranîn

Herder. Mîna PNG, JPEG di kamerayan, OS-yê de (wek logoyên pargîdanî, îkonên serîlêdanê, piçûkan) û li hemî deverên mimkun ên ku pêdivî ye ku wêne bi bandor werin hilanîn tê bikar anîn.

encamê

Heya nuha, zanîna di derbarê JPEG-ê de naha tenê ji bo mebestên perwerdehiyê bi qîmet e, ji ber ku ew berê li her deverê hatî çêkirin û ji hêla komên mezin ên mirovan ve hatî xweşbîn kirin, lê granît zanist hîn jî tamxweş e.

Çavkaniyên

Gotara derbarê YCbCr de li ser Wîkîpediya
Wikipedia gotara li ser JPEG
Piçek li ser PrEP ji posta Pikabu
Gotara Wikipedia li ser PrEP

Source: www.habr.com

Add a comment