Zatim jsem jenom rychle prohlednul tabulky a obrazky. Zaujal me faktor kvality 1. Da se nastavit jeste nizsi? Jak se to projevi? Mozna ze prave na takhle nizkych faktorech by se dala demonstrovat pouzita transformace.
Kdyz se uci fourier, tak se taky obdelnik aproximuje nejdriv jednou sinusovkou, potom dvema, trema a padesati.
Kvalitu obrazku a kompresny pomer urcuje hlavne vyber tzv. kvantizacnej tabulky, ktorej podoba zavisi od zvolenej "kvality" (tych 'percent'). Pokial sa dobre pamatam, tak su dane referencne kvantizacne tabulky pre kvalitu napr. 50%, 75%, 100% a medzi nimi aplikacia interpoluje (tym padom v dvoch rozlicnych aplikaciach pri kvalite napr. 53% mozu kludne vyjst dva odlisne obrazky, aj ked si to volnym okom nevsimnete).
Cely trik s tou kvantizacnou tabulkou spociva v tom, ze po jej aplikovani vyjde v matici 8x8 kopa nul (obrazok sa koduje postupne po 8x8 stvorcekoch pri sekvencnom kodovani, najprv DCT, potom kvantizacia). Tym padom sa dobre komprimuje Huffmanom. Kvantizacia ma za dosledok "rozbitie" hran (vyssich frekvencii), kvoli tomu je vidiet rozlicne "artefakty" napr. okolo povodne ostreho pisma.
Sla by este nizsia kvalita nez 1 - vysledok by vyzeral tak, ze kazdy 8x8 stvorcek by bol vyplneny jednoliatou farbou (a kvantizacna matica by mala jednotku vlavo hore a vsade inde nuly). Ked si zoomnete ten posledny obrazok, vacsina tych stvorcekov uz takych je.
V podstate mate pravdu, az na to, ze pri malych faktorech kvality byvaji v kvantizacni tabulce naopak velke hodnoty (krome DC koeficientu), protoze se jimi deli blok 8x8 vznikly pomoci DCT. O na pokud vydelime napr. 10/112, dostaneme tu kyzenou nulu. Pri implementaci se opravdu mohou hodnoty z kvantizacni tabulky invertovat a misto deleni pouzivat nasobeni (ale takto standard o kvantizacnich tabulkach nemluvi, aby nedoslo k omylu).
Jak kde, vetsina GUI programu ma nejake soupatko, ktere nastavuje "integery" mezy 1-100%. Nektere programy ani to ne, pouze obsahuji volby "dobra kvalita", "horsi kvalita" atd. Ale nektere knihovny pro praci s JPEGem misto integeru opravdu akceptuji floaty, takze to mozne je.
Pod 1% pravdepodobne nema cenu jit, protoze vsechny vyssi frekvence v blocich 8x8 pixelu (tady trosku predbiham) budou odstraneny.
A protoze DCT se od FFT (rychle Fourierovy transformace) lisi v prubehu "harmonickych", neuvidime na vyslednem obrazku takove ty typicke vlny ("2D sinusovku"), ale pouze kosticky o rozmerech 8x8 pixelu prekryte v nekterych pripadech barevnymi kostickami 16x16 pixelu.