JPEG. Kompressioun Algorithmus

Moien nach eng Kéier! Ech hunn dësen Artikel am Mee 2019 geschriwwen. Dëst ass eng Fortsetzung vun enger Serie vun Artikelen iwwer WAVE a JPEG, hei éischt. Dës Publikatioun enthält Informatiounen iwwer de Bildkodéierungs-Algorithmus an d'Format selwer als Ganzt.

Eng Prise Geschicht

E Esslöffel Wikipedia Artikel:

JPEG (Joint Photographic Experts Group) ass ee vun de populäre Raster Grafikformater déi benotzt gi fir Fotoen an ähnlech Biller ze späicheren.

Dëse Standard gouf vum Joint Photographic Experts Group zréck am Joer 1991 fir effizient Bildkompressioun entwéckelt.

Wéi ginn d'Biller vu Raw op JPEG?

E puer Leit mengen datt JPEG Biller réi Daten sinn kompriméiert mat der Huffman Method, awer dëst ass net wouer. Virun der Kontrollkompressioun reest Daten e laange Wee.

Als éischt gëtt de Faarfmodell vun RGB op YCbCr geännert. Et gëtt souguer e speziellen Algorithmus fir dëst - hei. Y gëtt net beréiert, well et fir d'Hellegkeet verantwortlech ass, a seng Ännerung wäert bemierkbar sinn.

Déi éischt Saach mat dem Bild ze maachen ass "dunnen" (Subsampling). Et ass einfach ze verstoen: eng 2x2 Array vu Pixel gëtt geholl, da ginn Cb a Cr geholl - d'Duerchschnëttswäerter vun jiddereng vun den YCbCr Komponenten vun dësen 4 Pixelen. Also, mir gewannen 6 Bytes, amplaz 4 Y, 4 Cb, 4 Cr krute mir 4 Y an déiselwecht Cb a Cr fir all eenzel (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 - 6 = 6). Op souguer 2x2 Skala kléngt lossy Kompressioun mat engem 2:1 Kompressiounsverhältnis zolidd. Dëst gëllt fir de ganze Bild. An esou - si hunn eng hallef Gréisst erofgefall. A mir kënnen dës Technik dank eiser Faarfperceptioun benotzen. Eng Persoun wäert einfach en Ënnerscheed an der Hellegkeet bemierken, awer net a Faarf, wann et iwwer e klenge Block vu Pixelen duerchschnëttlech ass. Ausdënnung kann och an enger Linn gemaach ginn, 4 Pixel horizontal a vertikal. Déi éischt Optioun gëtt méi dacks benotzt. Wann d'Bildqualitéit wichteg ass, da gëtt d'Dezimatioun guer net gemaach.
Eng visuell Illustratioun vu Verdënnung (Habr huet mir net erlaabt e Gif anzeginn) - https://i.ibb.co/Rg5Th9H/150953010617579181.gif

Den Haaptdeel vun der Virbereedung

PrEP

Elo kënnt den haardsten an déi néidegsten Deel. Dat ganzt Bild ass an 8x8 Blocken opgedeelt (Füllung gëtt benotzt wann d'Resolutioun net e Multiple vun der Blocksäit ass).

Elo gëlle fir all Block DCT (Discrete Cosine Transform). An dësem Deel gëtt alles onnéideg aus dem Bild geholl. Mat DCT musst Dir verstoen ob e bestëmmte Block (8 × 8) all monotonen Deel vum Bild beschreift: den Himmel, d'Mauer; oder et enthält komplex Struktur (Hoer, Symboler, etc.). Et ass logesch, datt 64 Pixel vun ähnlecher Faarf kann duerch just beschriwwe ginn 1, well d'Blockgréisst ass scho bekannt. Sou vill fir d'Kompressioun: 64 op 1.

DCT verwandelt de Block an e Spektrum, a wou d'Liesunge schaarf änneren, gëtt de Koeffizient positiv, a wat méi schaarf den Iwwergank, dest méi héich ass d'Ausgab. Wou de Koeffizient méi héich ass, weist d'Bild kloer Iwwergäng a Faarf an Hellegkeet, wou et méi niddereg ass - schwaach (glat) Ännerungen an de Wäerter vun den YCbCr Komponenten am Block.

Quantiséierung

Kompressiounsastellunge ginn hei schonn ugewannt. Jiddereng vun den Koeffizienten an jiddereng vun den 8x8 Matrixen ass duerch eng gewëssen Zuel gedeelt. Wann Dir d'Bildqualitéit net no all sengen Ännerungen reduzéiere wäert, da sollt den Divisor een sinn. Wann d'Erënnerung vun dëser Foto méi wichteg ass fir Iech, da wäert den Divisor méi wéi 1 sinn, an de Quotient gëtt ofgerënnt. Et stellt sech eraus, datt een no der Ofrundung dacks mat vill Nullen ophält.

Quantiséierung gëtt gemaach fir d'Méiglechkeet vun enger nach méi grousser Kompressioun ze kreéieren. Hei ass wéi et ausgesäit andeems Dir d'Beispill benotzt fir d'Grafik ze quantiséieren y = sin (x):

JPEG. Kompressioun Algorithmus

Kompressioun

Als éischt gi mir duerch d'Matrix an engem Zick-Zack Muster:

JPEG. Kompressioun Algorithmus

Mir kréien eng eendimensional Array mat Zuelen. Mir gesinn datt et vill Nullen dran ass, déi kënne geläscht ginn. Fir dëst ze maachen, amplaz vun enger Sequenz vu ville Nullen, gi mir 1 Null an duerno eng Nummer déi hir Zuel an der Sequenz uginn. Op dës Manéier kënnt Dir op 1/3 vun der Gréisst vun der ganzer Array zrécksetzen. An da kompriméiere mir dës Array einfach mat der Huffman Method a schreiwen se an d'Datei selwer.

Wou ass benotzt

Iwwerall. Wéi PNG gëtt JPEG a Kameraen, OSs (als Firmelogoen, Applikatiounsikonen, Miniaturbiller) an an alle méigleche Beräicher benotzt, wou Biller effizient gespäichert musse ginn.

Konklusioun

Am Moment ass d'Wëssen iwwer JPEG elo nëmme wäertvoll fir pädagogesch Zwecker, well et schonn iwwerall agebaut ass a vu grousse Gruppe vu Leit optiméiert ass, awer de Granit vun der Wëssenschaft ass nach ëmmer lecker.

Quellen vun Informatiounen

Artikel iwwer YCbCr op Wikipedia
Wikipedia Artikel iwwer JPEG
E bëssen iwwer PrEP aus dem Pikabu Post
Wikipedia Artikel iwwer PrEP

Source: will.com

Setzt e Commentaire