Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názory k článku
Programujeme JPEG: diskrétní kosinová transformace (DCT)

jx0
jx0 (neregistrovaný)
4. 1. 2007 0:54 Nový

vzorec pro 2D DCT II

celé vlákno
Jenom drobnost, formalita, jak jsou sumy ve vzorci pro 2D DCT, tak jedna suma je od 1 a druha od 0.
Pavel Tišnovský
Pavel Tišnovský (neregistrovaný)
4. 1. 2007 9:00 Nový

Re: vzorec pro 2D DCT II

celé vlákno
Diky za upozorneni, ten vzorec ma byt "ortogonalni", tj. obe sumy se stejnymi indexy (od nuly).
vm
vm (neregistrovaný)
4. 1. 2007 6:22 Nový

vlnkova transformace?

celé vlákno
Tou vlnkovou transformaci myslite transformaci waveletovou?
vm
vm (neregistrovaný)
4. 1. 2007 6:23 Nový

Re: vlnkova transformace?

celé vlákno
Omlouvam se, uz jsem to nasel o odstavec dal...
P_V
P_V (neregistrovaný)
4. 1. 2007 13:59 Nový

Re: vlnkova transformace?

celé vlákno
wavelet = vlnka
Culibrk
Culibrk (neregistrovaný)
4. 1. 2007 8:17 Nový

Pochvala

celé vlákno
Dost dobre vysvetleno, diky za clanek.
Dusan Halicky
4. 1. 2007 8:46 Nový

zig zag?

celé vlákno
V clankoch o JPEG som este stale nevidel obrazok cik-cak snimania jedneho bloku 8x8, prehliadol som to alebo to tu este nebolo? Alebo nas v skole zase ucili nejake bludy?
Pavel Tišnovský
Pavel Tišnovský (neregistrovaný)
4. 1. 2007 8:56 Nový

Re: zig zag?

celé vlákno
Ten obrazek bude uveden priste, ten cik-cak scan se provadi az po DCT.
Autor
Autor (neregistrovaný)
4. 1. 2007 9:45 Nový

Omluva

celé vlákno
Omlouvam se vsem ctenarum, ale v nadpisu je chyba spravne mel znit "Programujeme JPEG: diskretni Kozinova transformace (dKt)".
Dekuji za pozitivni ohlasy a jeste jednou se omlouvam.
uživatel si přál zůstat v anonymitě
4. 1. 2007 11:13 Nový

Re: Omluva

celé vlákno
Logaritme Logaritme, do roka a do dne tě zvu na boží sud? : )
P_V
P_V (neregistrovaný)
4. 1. 2007 11:58 Nový

16x8

celé vlákno
Digitální fotoaparáty mnohdy produkují bloky 16x8 pixelů. Umožňuje standard JPEG libovolné, nebo jen tyto rozměry bloků?
Pavel Peřina
4. 1. 2007 22:01 Nový

Re: 16x8

celé vlákno
Děje se tak kvůli podvzorkování barvonosných složek v horizontálním směru, jak je popsané v předchozím díle. Na zmínku o tom, že by mohl mít DCT blok po převzorkování (decimaci) jinou velikost než 8x8 jsem nenarazil. Zrovna tak jsem se moc spolehlivě nedočetl o tom, že je možné podzorkování jen ve vertikálním směru, což by ale vyloučilo možnost fotky bezztrátově otáčet (ještě zbývá změnit orientaci v EXIFu pro prohlížeče, které podporují automatické otáčení). Při podvzorkování na 1/4 by velikost bloku měla být pro barvonosné složky 32x32.
Posílám aspoň jeden odkaz:
http://www.impulseadventure.com/photo/chroma-subsampling.html
P_V
P_V (neregistrovaný)
5. 1. 2007 11:50 Nový

Re: 16x8

celé vlákno
Asi to bude Vámi zmiňovaný případ, ale nemám tu jak zjistit způsob podvzorkování. Vyříznul jsem pomocí jpegcrop z jedné fotky ukázku a ještě ji bezeztrátově otočil, otáčení tedy je možné.
Pavel Tisnovsky
Pavel Tisnovsky (neregistrovaný)
5. 1. 2007 14:41 Nový

Re: 16x8

celé vlákno
Barvonosne slozky je opravdu mozne zredukovat bud v pomeru 2:1:1 nebo 2:2:1, takze barevne bloky o velikosti 16x8 pixelu je mozne videt. Slozka Y (luminance) je vsak vzdy velikosti 8x8 hodnot a i barvove slozky ve vysledku davaji matice o stejne velikosti. Takze DCT i IDCT vzdy bezi nad bloky 8x8, i kdyz vstupem mohou byl pixely v bloku 8x8, 8x16, 16x16.
anonymus
anonymus (neregistrovaný)
5. 1. 2007 18:46 Nový

proc

celé vlákno
Je pekne, ze je v clanku popsana zrovna kosinova transformace. Ale uvital bych alespon jednu, ci dve vety, proc se uziva zrovna tato. Je snad vypocetne jednodussi, nez fourier, ci jine transformace?
miroušek aura:100
6. 1. 2007 1:41 Nový

Re: proc

celé vlákno
Ano je rychlejsi z toho prosteho duvodu, ze sinova a kosinova transformace jsou specialni pripad transformace fourierovy.

Bazove funkce (spojite) Fourierovy transformace jsou e^(-iwt). Po jednoduchem rozepsani dostaneme 2 vzorce s bazovymi funkcemi cos(wt) a i*sin(wt). V pripade, ze je funkce suda, vyjde integral se sinem jako bazovou funkci nulovy. Zbyde tedy jen integral s cosinem, pricemz 'to, co se integruje' je funkce suda (ve smyslu parametru t). To umoznuje integrovat jen os 0 do +INF. No..a funkci mame definovanou jen na intervalu (nemame nekonecny obrazek), takze od 0 do {alfa}. Pak uz staci jen spojity integral prevest na diskretni sumy a voila ... cosinova transformace :)

Btw. to, ze predpokladame, ze funkce je suda, si muzeme dovolit. Fourierovy transformace probihaji po celem intervalu (-INF, +INF). Mame-li data pro (0, {alfa}), musime si 'zbytek' funkce dodefinovat. A nic nam nebrani dodefinovat si ji jako sudou (preklopeni pres osu Y) a zbytek mimo interval (-{alfa}, {alfa}) jako nulovou. Pri zpetnem prevodu si vezmeme (prevedeme) opet jen 'nas' interval (0, {alfa}).

Stejne tak dobre by se mohla pouzit transformace sinova (funkci si dodefinujem jako lichou). Uz si nepamatuji, jestli byl jeste jiny duvod nez ten, 'ze se proste pouziva kosinova' ;)
Pavel Peřina
6. 1. 2007 13:55 Nový

Re: proc

celé vlákno
Když neuvažuji rychlou variantu (FFT,FDCT) pak jsou rychlé stejně, protože obě vyžadují výpočty stejného množství korelací se sinusoidami o různých frekvencích a počátečních fázích.
Rychlá fourierova transformace využívá pro délku signálu 2N toho, že se v rovnicích pro různé koeficienty vyskytují stejné výrazy, které lze počítat pro několik koefiecintů společně. Rychlá kosinová transformace většinou využívá k výpočtu FFT s tím, že se nějak poupraví vstup a výsledek. Pro 8 prvků bude asi použit přímo nějaký dobře optimalizovaný výpočet FDCT, ale náročnost by měla být podobná.
Pavel Tišnovský aura:98
8. 1. 2007 10:31 Nový

Re: proc

celé vlákno
Už jsem se o tom trošku zmiňoval v některé předchozí části. Za prvé se DCT dá spočítat dost rychle, ale to FFT taky (ale KLT už ne). Za druhé se u DCT mnohem více energie dostává do několika málo složek, takže výsledkem je matice s mnoha malými hodnotami (ideálně nulovými), které se dobře komprimují. Za třetí - a to je pravděpodobně nejdůležitější důvod - se díky výběru bázových funkcí dají s malou chybou transformovat (a poté zpětně transformovat) typické průběhy v obrázcích, například plynulé přechody barev. To u FFT nejde, protože ta předpokládá, že signál se periodicky opakuje a tak se na jeho konec snaží funkci "otočit" směrem nahoru nebo dolů (pokus je nejlepší dělat na pilovém signálu, kde je v případě FFT patrné zaoblení původně ostrého vrcholu).
fritzek
fritzek (neregistrovaný)
8. 1. 2007 15:07 Nový

Re: proc

celé vlákno
Diky za odpoved. Asi si to vyzkousim v Matlabu.
Karel Barel
Karel Barel (neregistrovaný)
9. 1. 2007 21:40 Nový

Re: proc

celé vlákno
Nedele machry, ze umis v matlalu, ty patlale :)))
Zasílat nově přidané příspěvky e-mailem