Cumu funziona u formatu JPEG

L'imaghjini JPEG sò omnipresenti in a nostra vita digitale, ma daretu à quellu mantellu di cuscenza si nasconde algoritmi chì eliminanu dettagli chì l'ochju umanu ùn pò micca vede. U risultatu hè a più alta qualità visuale in a dimensione di u schedariu più chjucu - ma cumu funziona esattamente tuttu? Videmu ciò chì esattamente i nostri ochji ùn vedenu !

Cumu funziona u formatu JPEG

Hè facilitu per piglià a capacità di mandà una foto à un amicu è ùn preoccupate micca di quale dispositivu, navigatore o sistema operatore anu utilizatu - ma ùn era micca sempre u casu. À l'iniziu di l'anni 1980, l'urdinatori puderanu almacenà è visualizà l'imaghjini digitale, ma ci era parechje idee cuncurrenti nantu à u megliu modu per fà questu. Ùn pudete micca solu mandà una maghjina da un computer à l'altru è sperendu chì hà travagliatu.

Per risolve stu prublema, in u 1986, un cumitatu di esperti di u mondu hè statu riunitu sottu u nome "Gruppu cumuna di esperti fotografichi” (Joint Photographic Experts Group, JPEG), fundatu cum'è parte di u travagliu cumuni di l'Organizazione Internaziunale per a Standardizazione (ISO) è a Cummissione Elettrotecnica Internaziunale (IEC), duie urganisazioni di standard internaziunali cù sede in Ginevra (Svizzera).

Un gruppu di persone chjamate JPEG hà criatu u standard di compressione di l'imaghjini digitale JPEG in u 1992. Qualchissia chì hà utilizatu Internet hà prubabilmente scontru l'imaghjini codificate JPEG. Questu hè u modu più cumuni per codificà, mandà è almacenà l'imaghjini. Da e pagine web à e-mail à e social media, JPEG hè utilizatu miliardi di volte à ghjornu - quasi ogni volta chì vedemu o mandemu una maghjina in linea. Senza JPEG, u web saria menu luminoso, più lento, è prubabilmente averà menu ritratti di gatti!

Questu articulu hè nantu à cumu decode una maghjina JPEG. In autri paroli, circa ciò chì hè necessariu di cunvertisce dati cumpressi cullucatu in un urdinatore in una maghjina chì appare nantu à u screnu. Hè vale a pena sapè, micca solu perchè hè impurtante per capiscenu a tecnulugia chì usemu ogni ghjornu, ma ancu perchè revelendu i livelli di cumpressione, sapemu megliu a percepzioni è a visione, è ancu ciò chì i dettagli sò più i nostri ochji. sensibule à.

Inoltre, hè assai interessante di ghjucà cù l'imaghjini in questu modu.

Cumu funziona u formatu JPEG

Fighjendu in un JPEG

In un urdinatore, tuttu hè guardatu cum'è una sequenza di numeri binari. Di solitu sti bits, zeri è uni, sò raggruppati in ottu, custituendu byte. Quandu avete apertu una maghjina JPEG in u vostru urdinatore, qualcosa (navigatore, sistema operatore, qualunque) hà da decodificà i bytes, restaurà l'imaghjini originali cum'è una lista di culori chì ponu esse affissati.

Sè vo scaricà stu cute foto di un gattu è apre in un editore di testu, vi vede una mansa di caratteri cunfusi.

Cumu funziona u formatu JPEG
Eccu aduprate Notepad ++ per inspeccionà u cuntenutu di u schedariu, perchè l'editori di testu cumuni cum'è Notepad da Windows sguassate u binariu dopu avè salvatu è ùn si mette micca in u formatu JPEG.

Apertura di una maghjina in un editore di testu hè cunfundendu u vostru urdinatore, cum'è si cunfundite u vostru cervellu quandu si strofina l'ochji è cuminciate à vede spots culuriti!

Questi spots chì vede sò cunnisciuti cum'è fosfeni, è ùn sò micca u risultatu di l'esposizione à un stimulus luminosu o allucinazioni generati da a mente. Accadunu perchè u vostru cervellu pensa chì qualsiasi signali elettrici in i nervi ottici portanu infurmazioni nantu à a luce. U cervu hà bisognu à fà tali supposizioni, perchè ùn ci hè manera di sapè s'ellu u signale hè un sonu, una visione, o qualcosa altru. Tutti i nervi in ​​u corpu trasmettenu esattamente i stessi impulsi elettrici. Quandu appiccicate a pressione à i vostri ochji, mandate signali chì ùn sò micca visuali, ma attivate i receptori in l'ochju, chì u vostru cervellu interpreta - in questu casu, incorrectamente - cum'è qualcosa visuale. Pudete vede literalmente a pressione!

Hè curiosu di pensà à quantu l'urdinatori simili sò à u cervellu, ma hè ancu una analogia utile, illustrandu quantu u significatu di e dati - sia purtatu à traversu u corpu da i nervi o almacenati in un computer - depende di cumu hè interpretatu. Tutti i dati binari sò cumposti da XNUMX è XNUMX, cumpunenti basi capaci di trasmette ogni tipu d'infurmazione. U vostru urdinatore spessu guessendu cumu interpretà elli utilizendu indizi cum'è l'estensione di file. Avà li facemu interpretà cum'è testu, perchè hè ciò chì l'editore di testu aspetta.

Per capiscenu cumu decode un JPEG, avemu bisognu di vede i signali originali stessi - i dati binari. Questu pò esse fattu cù un editore hex, o direttamente pagina web di l'articulu originale! Ci hè una maghjina, vicinu à quale in u campu di testu tutti i so bytes (eccettu l'intestazione) sò presentati in forma decimale. Pudete cambià è u script recoderà è pruducerà una nova maghjina nantu à a mosca.

Cumu funziona u formatu JPEG

Pudete amparà assai solu per ghjucà cù questu editore. Per esempiu, pudete dì in quale ordine sò almacenati i pixel?

In questu esempiu, a cosa strana hè chì cambià parechji numeri ùn affettanu micca in tuttu l'imaghjini, è, per esempiu, se rimpiazzate u numeru 17 cù 0 in a prima linea, allura a foto serà completamente arruvinata!

Cumu funziona u formatu JPEG

L'altri cambiamenti, cum'è cambià u 7 in linea 1988 à 254, cambianu u culore, ma solu i pixelli successivi.

Cumu funziona u formatu JPEG

Forsi u più stranu hè chì certi numeri cambianu micca solu u culore, ma ancu a forma di l'imaghjini. Cambia 70 in a linea 12 à 2 è fighjate à a fila superiore di l'imaghjini per vede ciò chì vogliu dì.

Cumu funziona u formatu JPEG

È ùn importa ciò chì l'imaghjini JPEG utilizate, truverete sempre quelli mudelli di scacchi criptichi quandu editate byte.

Ghjucà cù l'editore, hè difficiule di capisce cumu ricreà una foto da questi byte, postu chì a compressione JPEG hè custituita da trè tecnulugii diffirenti chì sò applicati sequenzialmente in livelli. Studiaremu ognuna di elli separatamente per scopre u misteriosu cumpurtamentu chì osservemu.

Trè livelli di compressione JPEG:

  1. Subsampling di culore.
  2. Trasformazione discreta di cosenu è Discretizazione.
  3. Run codificazione di lunghezza, delta и huffman

Per dà una idea di a scala di a cumpressione, nutate chì l'imaghjini sopra rapprisenta 79 819 numeri, chì hè circa 79 KB. Se l'avemu guardatu senza cumpressione, avemu bisognu di trè numeri per ogni pixel - per i cumpunenti rossi, verdi è blu. Questu ammontu à 917 numeri, o ca. 700 Kb. In u risultatu di a compressione JPEG, u schedariu finali hè diminuitu di più di 917 volte!

In fatti, sta maghjina pò esse cumpressa assai più. Quì sottu sò duie imagine fiancu à fiancu - a foto à a diritta hè stata cumpressa à 16 KB, vale à dì 57 volte menu cà a versione senza cumpressione!

Cumu funziona u formatu JPEG

Sè vo circate attentamente, vi vede chì sti imagine ùn sò idèntica. Tutti dui sò ritratti cù compressione JPEG, ma u dirittu hè assai più chjucu in voluminu. Sembra ancu un pocu peghju (fighjate i quadrati di culore di fondu). Dunque, JPEG hè ancu chjamatu cumpressione di perdita; durante u prucessu di cumpressione, l'imaghjini cambia è perde qualchi dettagli.

1. Subsampling di culore

Eccu una maghjina cù solu u primu livellu di cumpressione applicata.

Cumu funziona u formatu JPEG
(Versione interattiva in uriginale articuli). L'eliminazione di un numeru distrugge tutti i culori. In ogni casu, se esattamente sei numeri sò sguassati, ùn hà pocu o nisun effettu nantu à l'imaghjini.

Avà i numeri sò un pocu più faciuli di decifrare. Questu hè quasi una lista simplice di culori, ogni byte cambia esattamente un píxel, ma hè digià a mità di a dimensione di una maghjina micca cumpressa (chì piglià circa 300 KB in una dimensione cusì ridutta). Indovina perchè?

Pudete vede chì questi numeri ùn rapprisentanu micca i cumpunenti standard rossi, verdi è blu, perchè si rimpiazzamu tutti i numeri cù zeri, avemu una maghjina verde (micca bianca).

Cumu funziona u formatu JPEG

Questu hè perchè questi byte stanu per Y (luminosità),

Cumu funziona u formatu JPEG

Cb (blu relativo),

Cumu funziona u formatu JPEG

è Cr (rossu relative) ritratti.

Cumu funziona u formatu JPEG

Perchè ùn aduprà RGB? Dopu tuttu, questu hè cumu travaglia a maiò parte di i schermi muderni. U vostru monitoru pò visualizà qualsiasi culore, cumpresu rossu, verde è blu à intensità differenti per ogni pixel. U biancu hè ottenutu accendendu tutti i trè in piena luminosità, è u neru li spegne.

Cumu funziona u formatu JPEG

Hè ancu assai simili à cumu travaglia l'ochju umanu. I receptori di culore in i nostri ochji sò chjamati "coni", è sò spartuti in trè tippi, ognunu di li quali hè più sensittivi à i culori rossi, o verdi, o turchini [Coni di tipu S sò sensittivi in ​​viola-blu (S da l'inglese. Cortu - spettru di lunghezza d'onda corta), M-type - in verde-giallu (M da l'inglese. Medium - medium wave), è L-type - in yellow-red (L from English. Long - long-wave) parti di u spettru. A prisenza di sti trè tippi di coni (è bastone sensittivi in ​​a parti verde esmeralda di u spettru) dà una visione di culore di persona. / ca. trad.]. Bastoni, l'altru tipu di fotoreceptor in i nostri ochji, hè capaci di detectà cambiamenti in a luminosità, ma hè assai più sensible à u culore. I nostri ochji anu circa 120 milioni di bastoncini è solu 6 milioni di coni.

Dunque, i nostri ochji notanu cambiamenti in a luminosità assai megliu cà i cambiamenti di culore. Se separate u culore da a luminosità, pudete sguassate un pocu culore, è nimu hà da nutà nunda. Chroma subsampling hè u prucessu di rapprisintà i cumpunenti di culore di una maghjina à una risuluzione più bassa cà i cumpunenti di luminanza. In l'esempiu supra, ogni pixel hà esattamente un cumpunente Y, è ogni gruppu individuale di quattru pixel hà esattamente un cumpunente Cb è un Cr. Dunque, l'imaghjini cuntene quattru volte menu infurmazione di culore chì l'uriginale.

U spaziu di culore YCbCr ùn hè micca solu utilizatu in JPEG. Hè stata inventata in u 1938 per i televizii. Micca tutti anu una TV di culore, cusì separà u culore è a luminosità hà permessu à tutti di ottene u stessu signale, è i TV senza culore anu utilizatu solu u cumpunente di luminosità.

Dunque, sguassate un numeru da l'editore distrugge completamente tutti i culori. I cumpunenti sò guardati in a forma YYYY Cb Cr (in fatti, micca necessariamente in questu ordine - l'ordine di almacenamiento hè specificatu in l'intestazione di u schedariu). L'eliminazione di u primu numeru farà chì u primu valore di Cb sia interpretatu cum'è Y, Cr cum'è Cb, è in generale, un effettu domino serà ottenutu, cambiendu tutti i culori di a stampa.

A specificazione JPEG ùn hà micca bisognu di utilizà YCbCr. Ma in a maiò parte di i fugliali hè utilizatu perchè dà l'imaghjini di qualità megliu dopu a subsampling cumparatu cù RGB. Ma ùn avete micca bisognu di piglià a mo parolla. Vede per voi stessu in a tavula quì sottu cumu u subsampling ogni cumpunente individuale avissi da esse in RGB è YCbCr.

Cumu funziona u formatu JPEG
(Versione interattiva in uriginale articuli).

L'eliminazione di u blu ùn hè micca cusì notu cum'è rossu o verde. Hè per via di i sei milioni di coni in i vostri ochji, circa 64% sò sensittivi à u rossu, u 32% à u verde è u 2% à u blu.

U subsampling di u cumpunente Y (in fondu à manca) hè megliu vistu. Ancu un picculu cambiamentu hè notu.

A cunversione di una maghjina da RGB à YCbCr ùn riduce micca a dimensione di u schedariu, ma face più faciule per truvà dettagli menu notevuli chì ponu esse eliminati. A compressione di perdita si trova in a seconda tappa. Hè basatu annantu à l'idea di prisentà e dati in una forma più cumpressibile.

2. Trasformazione discreta di cosenu è discretizazione

Stu livellu di cumpressione, per a maiò parte, definisce l'essenza di JPEG. Dopu à cunvertisce i culori à YCbCr, i cumpunenti sò cumpressi individualmente, cusì pudemu cuncentrazione solu nantu à u cumpunente Y da avà, è quì hè ciò chì i bytes di u cumpunente Y s'assumiglia dopu à applicà stu livellu.

Cumu funziona u formatu JPEG
(Versione interattiva in uriginale articuli). In a versione interattiva, clicchendu nantu à un pixel scorri l'editore à a linea chì u rapprisenta. Pruvate à caccià i numeri da a fine o aghjunghje uni pochi zeri à un certu numaru.

À u primu sguardu, pare chì a compressione hè assai pessima. Ci hè 100 pixel in una maghjina, è ci vole 000 numeri per indicà a so luminosità (cumpunenti Y) - questu hè peghju chè ùn cumpressione nunda!

Tuttavia, nutate chì a maiò parte di sti numeri sò zero. Inoltre, tutti questi zeri à a fine di e linee ponu esse eliminati senza cambià l'imaghjini. Ci sò circa 26 000 numeri rimasti, chì hè quasi 4 volte menu !

Stu livellu cuntene u sicretu di mudelli di scacchi. A cuntrariu di l'altri effetti chì avemu vistu, l'apparizione di sti mudelli ùn hè micca un glitch. Sò i blocchi di custruzzione di tutta l'imaghjini. Ogni linea di l'editore cuntene esattamente 64 numeri, coefficienti di trasformazione di cosenu discrete (DCT) chì currispondenu à l'intensità di 64 mudelli unichi.

Questi mudelli sò furmati nantu à a trama cosenu. Eccu ciò chì parenu alcuni di elli:

Cumu funziona u formatu JPEG
8 di 64 probabilità

Quì sottu hè una maghjina chì mostra tutti i 64 mudelli.

Cumu funziona u formatu JPEG
(Versione interattiva in uriginale articuli).

Questi mudelli sò d'impurtanza particulari chì formanu a basa di l'imaghjini 8x8. Se ùn site micca familiarizatu cù l'algebra lineale, questu significa chì qualsiasi imagine 8x8 pò esse acquistata da questi 64 mudelli. DCT hè u prucessu di rompe l'imaghjini in blocchi 8x8 è cunvertisce ogni bloccu in una cumminazione di questi 64 coefficienti.

U fattu chì ogni imagine pò esse cumpostu di 64 mudelli specifichi pare magicu. In ogni casu, questu hè listessa per dì chì ogni locu in a Terra pò esse discrittu da dui numeri - latitudina è longitudine [indicà l'emisferii / approx. trad.]. Spessu pensemu à a superficia di a Terra cum'è bidimensionale, cusì avemu solu bisognu di dui numeri. Una maghjina 8x8 hà 64 dimensioni, cusì avemu bisognu di 64 numeri.

Ùn hè ancu chjaru cumu questu ci aiuta in termini di compressione. Se avemu bisognu di 64 numeri per rapprisintà una maghjina 8x8, perchè questu seria megliu cà solu di guardà 64 cumpunenti di luminanza? Facemu questu per u listessu mutivu chì avemu turnatu trè numeri RGB in trè numeri YCbCr: ci permette di sguassà i dettagli sottili.

Hè difficiuli di vede esattamente quali dettagli sò stati eliminati in questa fase perchè JPEG applica DCT à blocchi 8x8. Tuttavia, nimu ci pruibisce di applicà à tutta a stampa. Eccu ciò chì u DCT s'assumiglia per u cumpunente Y quandu hè appiicatu à tutta a stampa:

Cumu funziona u formatu JPEG

Più di 60 000 numeri ponu esse sguassati da a fine senza quasi cambiamenti notevuli in a foto.

Cumu funziona u formatu JPEG

Nota, però, chì s'è no zero i primi cinque numeri, a diffarenza serà evidenti.

Cumu funziona u formatu JPEG

I numeri à u principiu rapprisentanu cambiamenti di freccia bassa in l'imaghjini, è i nostri ochji piglianu u megliu. I numeri versu a fine indicanu cambiamenti d'alta frequenza chì sò più difficiuli di nutà. Per "vede ciò chì l'ochju ùn pò micca vede" pudemu isolà questi dettagli d'alta freccia sferendu i primi 5000 numeri.

Cumu funziona u formatu JPEG

Videmu tutti i spazii di l'imaghjini induve u più grande cambiamentu accade da pixel à pixel. L'ochji di u ghjattu, i so baffi, a manta di spugna è l'ombra in l'angulu in basso à manca spicca. Pudete andà più in là mettendu a zero i primi 10 000 numeri:

Cumu funziona u formatu JPEG

20 000:

Cumu funziona u formatu JPEG

40 000:

Cumu funziona u formatu JPEG

60 000:

Cumu funziona u formatu JPEG

Questi dettagli di alta frequenza sò eliminati da JPEG durante a fase di compressione. A cunversione di culori in coefficienti DCT hè senza perdita. I perditi sò furmati à u passu di campionamentu, induve i valori d'alta frequenza o vicinu à cero sò eliminati. Quandu diminuite a qualità di salvezza JPEG, u prugramma aumenta u sogliu per u numeru di valori da esse eliminati, chì riduce a dimensione di u schedariu, ma rende a stampa più pixelata. Allora l'imaghjini in a prima sezione, chì era 57 volte più chjuca, pareva cusì. Ogni bloccu 8x8 rapprisenta un numeru assai più chjucu di coefficienti DCT cumparatu cù a versione di qualità più alta.

Pudete fà qualcosa cusì cool cum'è l'imaghjini in streaming gradualmente. Pudete vede una stampa sfocata chì diventa più è più dettagliata cum'è più coefficienti sò scaricati.

Eccu, solu per divertimentu, ciò chì succede quandu si usanu solu 24 000 numeri:

Cumu funziona u formatu JPEG

O solu 5000:

Cumu funziona u formatu JPEG

Moltu sfocata ma ricunnoscibile!

3. Codificazione di lunghezze run, delta è Huffman

Finu a ora, tutte e tappe di cumpressione sò state perdite. L'ultima tappa, à u cuntrariu, và senza perdita. Ùn elimina micca l'infurmazioni, ma riduce significativamente a dimensione di u schedariu.

Cumu pudete cumpressà qualcosa senza scartà l'infurmazioni? Immaginate cumu discrivamu un semplice rettangulu neru 700 x 437.

JPEG usa 5000 numeri per questu, ma si ponu ottene risultati assai megliu. Pudete imaginà un schema di codificazione chì descrive una tale maghjina in u minimu byte pussibule?

U schema minimu chì puderia vene cun usi quattru: trè per u culore, è un quartu per quantu pixels chì u culore hà. L'idea di rapprisintà i valori ripetuti in una manera cusì cumpressa hè chjamata codificazione run-length. Hè lossless perchè pudemu ritruvà i dati codificati in a so forma uriginale.

A dimensione di un schedariu JPEG cù un rettangulu neru hè assai più grande di 4 bytes - ricordate chì à u livellu DCT, a compressione hè appiicata à blocchi di 8x8 pixels. Dunque, à u minimu, avemu bisognu di un coefficient DCT per ogni 64 pixel. Avemu bisognu di unu perchè invece di almacenà un coefficient DCT unicu seguitu da 63 zeri, a codificazione di run-length ci permette di guardà un unicu numeru è denote "tutti l'altri sò zeri".

A codificazione Delta hè una tecnica per quale ogni byte cuntene una diferenza da qualchì valore piuttostu cà un valore assolutu. Dunque, editendu certi byte cambia u culore di tutti l'altri pixel. Per esempiu, invece di almacenà

12 13 14 14 14 13 13 14

Pudemu principià cù 12 è dopu scrive quantu aghjunghje o sottrae per uttene u prossimu numeru. È sta sequenza in codificazione delta piglia a forma:

12 1 1 0 0 -1 0 1

I dati cunvertiti ùn hè micca più chjucu cà i dati originali, ma hè più faciule per cumpressione. L'applicazione di a codificazione delta prima di a codificazione di run-length pò aiutà assai mentre hè sempre cumpressione senza perdita.

A codificazione Delta hè una di e pochi tecniche aduprate fora di i blocchi 8x8. Di i 64 coefficienti DCT, unu hè solu una funzione d'onda constante (culore solidu). Rapprisenta a luminosità media di ogni blocu per i cumpunenti di luminanza, o a bluzza media per i cumpunenti Cb, è cusì. U primu valore di ogni blocu DCT hè chjamatu u valore DC, è ogni valore DC hè codificatu delta in quantu à i precedenti. Dunque, cambià a luminosità di u primu bloccu affettarà tutti i blocchi.

L'ultimu misteru resta: cumu cambià u numeru singulari sguassate cumplettamente a stampa sana? Finu a ora, i livelli di cumpressione ùn anu micca tali proprietà. A risposta si trova in l'intestazione JPEG. I primi 500 bytes cuntenenu metadata nantu à l'imaghjini - larghezza, altezza, etc., è finu à avà ùn avemu micca travagliatu cun elli.

Senza un header, hè quasi impussibile (bene, assai difficiule) di decode un JPEG. Sembra ch'e aghju pruvatu à discrive un ritrattu à voi, è cuminciu à inventà e parolle per trasmette a mo impressione. A descrizzione serà probabilmente assai cuncisa, postu chì possu inventà e parolle cù esattamente u significatu chì vogliu trasmette, ma per tutti l'altri ùn anu micca sensu.

Sembra stupidu, ma hè esattamente ciò chì succede. Ogni maghjina JPEG hè cumpressa cù codici specifichi. U dizziunariu di codice hè guardatu in l'intestazione. Sta tecnica hè chjamata "Huffman code" è u dizziunariu hè chjamatu Huffman table. In l'intestazione, a tavula hè marcata cù dui bytes - 255 è dopu 196. Ogni cumpunente di culore pò avè a so propria tabella.

I cambiamenti di a tavula affettanu drasticamente ogni imagine. Un bon esempiu hè di cambià da 15 à 1 nantu à a 12a linea.

Cumu funziona u formatu JPEG

Questu hè chì e tavule specificanu cumu i bits individuali sò da leghje. Finu à avà, avemu travagliatu solu cù numeri binari in forma decimale. Ma questu nasconde da noi u fattu chì se vulete almacenà u numeru 1 in un byte, allora s'assumiglia à 00000001, perchè ogni byte deve esse esattamente ottu bit, ancu s'ellu hè necessariu solu unu di elli.

Questu hè potenzalmentu un grande perdu di spaziu si avete assai picculi numeri. U codice Huffman hè una tecnica chì ci permette di rilassate stu requisitu chì ogni numeru deve occupà ottu bits. Questu significa chì si vede dui byte:

234 115

Allora, sicondu a tavola Huffman, pò esse trè numeri. Per estrarli, avete prima bisognu di sparte in pezzi individuali:

11101010 01110011

Allora vultemu à a tavula per capiscenu cumu si agrupanu. Per esempiu, puderia esse i primi sei bits, (111010), o 58 in decimali, seguitu da cinque bits (10011), o 19, è infine l'ultimi quattru bits (0011), o 3.

Per quessa, hè assai difficiuli di capiscenu i bytes in questa fase di cumpressione. I byte ùn rapprisentanu micca ciò chì parenu. Ùn andaraghju in i dettagli di u travagliu cù a tavula in questu articulu, ma materiali nantu à stu prublema in linea basta.

Unu di i trucchi fantastichi chì pudete fà cù questa cunniscenza hè di separà l'intestazione da u JPEG è almacenà per separatamente. In fatti, si trova chì solu pudete leghje u schedariu. Facebook face questu per riduce ancu i schedari.

Ciò chì si pò fà hè di cambià a tavola di Huffman un pocu. Per altri, parerà una stampa spoiled. È solu sapete l'opzione magica per riparà.

Per riassume: allora chì hè necessariu per decodificà un JPEG? Necessariu:

  1. Estrae a tavola Huffman (s) da l'intestazione è decodificà i bits.
  2. Estrae i coefficienti di trasformazione discreti di cosenu per ogni cumpunente di culore è di luminanza per ogni bloccu 8x8 trasfurmendu inversamente a codificazione di a lunghezza di corsa è a delta.
  3. Unisce i coseni basati nantu à i coefficienti per ottene i valori di pixel per ogni bloccu 8x8.
  4. Scale cumpunenti di culore si subsampling hè statu realizatu (questa infurmazione hè in l'intestazione).
  5. Cunvertite i valori YCbCr risultanti per ogni pixel in RGB.
  6. Portate l'imaghjini à u screnu!

Un travagliu seriu per vede solu una foto cù un gattu! Tuttavia, ciò chì mi piace hè chì mostra cumu a tecnulugia JPEG centrata in l'omu hè. Hè basatu annantu à e caratteristiche di a nostra percepzione, chì ci permette di ottene una cumpressione assai megliu cà e tecnulugia cunvinziunali. È avà, capiscenu cumu travaglia JPEG, pudete imaginà cumu queste tecnulugii ponu esse trasferiti à altri spazii. Per esempiu, a codificazione delta in u video pò esse risultatu in una riduzione significativa di a dimensione di u schedariu, postu chì ci sò spessu spazii interi chì ùn cambianu micca da un quadru à un quadru (per esempiu, u fondu).

Codice utilizatu in l'articulu, hè apertu, è cuntene struzzioni per rimpiazzà i ritratti cù u vostru propiu.

Source: www.habr.com

Add a comment