Internet

Ako funguje kompresia obrazu: Základy

Z nejakého dôvodu môžete do obrázku skutočne vložiť 2 milióny pixelov bez použitia 1,97 megabajtov priestoru. Našiel som sladkú tapetu s rozlíšením 1080p (ktorá má zhruba 2 milióny pixelov) a stiahol som si ju. Pri kontrole vlastností som si všimol niečo zvláštne: Na mojom pevnom disku zaberalo iba 230 KB miesta. Prečo? Pre niekoho, kto celkom nerozumie kompresii obrazu, sa to zdá ako kúzlo. Ale akonáhle sa s týmto predmetom zoznámite, pochopíte, ako sú niektoré obrázky väčšie ako ostatné napriek množstvu pixelov, ktoré zaberajú na vašej obrazovke. Času je málo, poďme sa teda rýchlo pozrieť na základné princípy kompresie obrazu.

Metódy, prístupy, algoritmy.

metóda kompresie obrazu

Je naivné si myslieť, že existuje iba jeden spôsob, ako komprimovať obrázok. Existujú rôzne metódy, každá s jedinečným prístupom k spoločnému problému, a každý prístup sa používa v rôznych algoritmoch na dosiahnutie podobného záveru. Každý algoritmus je reprezentovaný formátom súboru (PNG, JPG, GIF atď.). Teraz budeme hovoriť o metódach, ktoré sa spravidla používajú na kompresiu obrázkov, čo vysvetlí, prečo niektoré z nich zaberajú oveľa menej miesta.

Bezstratová kompresia

kompresia obrazu bezstratová

Keď premýšľate o slove „bezstratový“ v kontexte kompresie obrazu, pravdepodobne si myslíte o a metóda, ktorá sa zo všetkých síl snaží zachovať kvalitu pri zachovaní relatívne malého obrazu veľkosť. To je veľmi blízko k pravde. Ako metóda, bezstratová kompresia čo najviac minimalizuje skreslenie a zachováva jasnosť obrazu. To sa dosiahne vytvorením indexu všetkých pixelov a zoskupením pixelov rovnakej farby. Je to niečo podobné, ako funguje kompresia súborov, ibaže máme do činenia s menšími dátovými jednotkami.

DEFLATE patrí medzi najbežnejšie algoritmy pre tento druh práce. Je založený na dvoch ďalších algoritmoch (Huffman a LZ77, ak ste knihomoľ) a má veľmi osvedčený a spôsob zoskupovania údajov nachádzajúcich sa v obrázkoch. Namiesto toho, aby ste behali po dĺžke údajov a ukladali viac inštancií pixelu s rovnakou farbou do jedného údaja jednotka (známa ako kódovanie za behu), zachytí duplicitné reťazce nachádzajúce sa v celom kóde a nastaví „ukazovateľ“ pre každý duplikát. nájdené. Kdekoľvek, kde sa určitý dátový reťazec (pixely) často používa, nahradí všetky tieto pixely váženým symbolom, ktorý všetko ďalej komprimuje.

Všimnite si, že pri kódovaní za behu a DEFLATE nie je žiadny z pixelov skutočne spotrebovaný alebo nútený zmeniť farbu. Použitím tejto metódy vznikne čistý obraz, ktorý je identický so surovým originálom. Jediný rozdiel medzi týmito dvoma spočíva v tom, koľko miesta v skutočnosti zaberá váš pevný disk!

Stratová kompresia

kompresia obrazu-stratová

Ako naznačuje názov, pri stratovej kompresii obrázok stratí časť svojho obsahu. Keď sa vezmete príliš ďaleko, môže skutočne spôsobiť, že obrázok bude nerozpoznateľný. ale stratový neznamená to, že odstraňujete pixely. V skutočnosti sa na kompresiu obrázkov týmto spôsobom bežne používajú dva algoritmy: transformačné kódovanie a podvzorkovanie chroma. Prvý je bežnejší na obrázkoch a druhý vo videu.

Pri transformačnom kódovaní sa priemerujú farby obrázka pomocou špeciálneho matematického vzorca, ktorý sa nazýva diskrétna kosínusová transformácia. Pri nadmernom použití môže obrázok stratiť farbu a môže vytvárať artefakty (podivná pixelizácia v náhodných bodoch obrázku). Tento konkrétny algoritmus vyrovnáva svoju neohrabanosť so silnou výhodou: Môžete diktovať spravodlivo koľko kvalitu, ktorú chcete pri obrázku zachovať. Pri bezstratovej kompresii je najbližšie k holistickej manipulácii s kvalitou nastavenie počtu farieb, ktoré by každý obrázok mal mať.

Podvzorkovanie chroma má iný prístup. Namiesto priemerovania malých farebných blokov, ktoré môžu tiež ovplyvniť jas obrázka, sa starostlivo pokúša udržať jas rovnaký vo všetkých oblastiach. Toto oklame vaše oči, aby si okamžite nevšimli žiadny pokles kvality. Je to skutočne skvelé na kompresiu animácií, a preto sa používa viac vo video streamoch. To neznamená, že obrázky tiež nepoužívajú tento algoritmus.

Ale počkajte, je toho viac! Google tiež vyskúšal nový stratový algoritmus známy ako WebP. Namiesto priemerovania informácií o farbe predpovedá farbu pixelu pohľadom na fragmenty, ktoré ho obklopujú. Údaje, ktoré sú skutočne zapísané do výsledného komprimovaného obrázku, sú rozdielom medzi predpokladanou farbou a skutočnou farbou. Nakoniec bude veľa predpovedí presných, výsledkom bude nula. A namiesto vytlačenia celého radu núl ich všetky iba skomprimuje do jedného symbolu, ktorý ich predstavuje. Zlepšuje sa presnosť obrazu a zvyšuje sa kompresia zmenší veľkosť obrázka v priemere o 25 percent v porovnaní s inými stratovými algoritmami, podľa spoločnosti Google.

Je čas na otázky a diskusiu!

Ak ste vo svete obrazových súborov nováčik, pravdepodobne vám prinajmenšom trochu týchto informácií príde mätúce. Ak máte otázku, napíšte ju do komentárov a my sa ju pokúsime zodpovedať. V opačnom prípade môžete o tom diskutovať!

Zverejnenie informácií o pridružení: Make Tech Easier môže získavať provízie za produkty zakúpené prostredníctvom našich odkazov, čo podporuje prácu, ktorú robíme pre našich čitateľov.

insta viewer
Teachs.ru