Hlavní navigace

Názor k článku Grafika v UNIXu - bitmapové formáty TIFF a JPEG od Johnnie - Jen taková drobnost, dovolil bych si polemizovat s...

  • Článek je starý, nové názory již nelze přidávat.
  • 11. 1. 2002 0:40

    Johnnie (neregistrovaný)

    Jen taková drobnost, dovolil bych si polemizovat s tvrzením, že JPEG byl navržen bez použití patentovaných technologií, protože aritmetické kódování je (bohužel) patentováno a z tohoto důvodu spousta programů aritmetické kódování nepodporuje. Z tohoto důvodu je také aritmetické kódování pouze volitelné rozšíření.

    Dále bych rád upřesnil postup klasické JPEG komprese, protože o ní byl tuším zájem v příspevcích: jak již bylo řečeno nejprve jsou všechny pixely (v případě barevných obrázků) převedeny z RGB barevného modelu do barevného modelu YCbCr (jas + dva barevné kanály), dále je obrázek rozdělen do subbloků o 8x8 pixelech, přičemž obrázky o velikosti nedělitené osmi jsou na tuto velikost doplněny, a na každý takovýto subblok je aplikována DCT (diskrétní kosinová transformace), která až na případné zaokrouhlení _není_ ztrátová, tímto vznikne matice 8x8 koeficientů, přičemž koeficient vlevo nahoře s indexem 0,0 je nazýván AC a ostatní DC. Tyto koeficienty jsou dále kvantovány, tj. děleny koeficienty z tabulky (resp. tabulek, protože pro jasový kanál se používá jiná tabulka než pro barevné kanály), které se také ukládají do JPEG datového proudu a jsou později použity při dekompresi k rekonstrukci DCT koeficientů. Kvantované a zaokrouhlené koeficienty se nakonec kódují (většinou stylem zig-zag, což se bez obrázku těžko popisuje, ale pro přiblížení: 0,0 - 1,0 - 0,1 - 2,0 - 1,1 - 0,2 atd.) Huffmanovým, případě aritmetickým kódováním. Protože jsou AC členy mnohem důležitější nežli DC členy, jsou jejich kvantizační koeficienty menší, navíc jsou i kvůli vyššímu kompresnímu poměru kódovány zvlášť. Postup dekomprese je prakticky analogický, jen v opačném pořadí. Bohužel, kompletní specifikace je jako každý ISO dokument přístupná _výhradně_ v papírové podobě a za peníze.

    A ještě poznámka na závěr: videokomprese MPEG a JPEG mají velmi společného, tedy základ, i když MPEG je drobátek složitější :c)))

    Dodatek: a ještě než to odešlu, tak jsem si všiml, že se v článku mluví i o kompresním faktoru, takže pár slov i k němu: tento faktor ovlivňuje tabulku kvantizačních koeficientů a ke snížení velikosti výsledného JPEG datového proudu vlastně dochází díky tomu, že výsledné koeficienty jsou po vydělení a zaokrouhlení tak malé nebo podobné (většina těchto koeficientů je dokonce nulová), že se lépe komprimují - de facto jediné skutečně kompresní schéma, které JPEG obsahuje je Huffmanovo kódování nebo Q-kodér, protože samotná DCT k žádné kompresi nevede