Gáborovy filtry nebo spíš rychlé počítání Gausse Vladimír Ulman Centre for Biomedical Image Analysis th October, 7 FI MU, Brno Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 / 39
Gáborovy filtry zjednodušeně: lokální Fourierova transformace (FT) pro danou frekvenci snaží se detekovat zvolenou frekvenci na dané pozici frekvence, stejně jako v FT, popisuje velikost a směr běžně používáný tvar D konvolučního jádra je: G(x, θ, σ) = exp ( x 2 ) 2πσ 2σ 2 sin(2πθx) nebo tzv. sudý Gáborův filtr: G(x, θ, σ) = exp ( x 2 2πσ 2σ 2 ) cos(2πθx) Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 2 / 39
Gáborovy filtry pro 2D: G(x, y, θ, θ 2, σ) = 2πσ 2 exp ( x 2 + y 2 2σ 2 ) sin(2πθx) pro 3D: G(x, y, z, θ, θ 2, θ 3, σ) = ( 3 exp x 2 + y 2 + z 2 ) 2π σ 3 2σ 2 sin(2πθx) Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 3 / 39
Gáborovy filtry přesnější kopie FT pro 2D, vrací komplexní číslo: G(x, y, θ, φ, σ) = ( 2πσ 2 exp x 2 + y 2 ) 2σ 2 exp (j2πθ(x cos(φ) + y sin(φ))) kde θ je frekvence, φ je směr a σ je rozsah (scale) j je komplexní jednotka Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 4 / 39
konvoluce s GF, D f (x) je vstupní obrázek g(x) je výstupní obrázek konvoluce: K g(x) = f (x i) G(i, θ, σ) i= K Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 5 / 39
konvoluce s GF, D g(x) = g(x) = K i= K K i= K f (x) f (x i) exp ( i 2 ) 2πσ 2σ 2 exp (j2πθi) ) (i x)2 exp ( 2πσ 2σ 2 exp (j2πθ(i x)) Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 6 / 39
konvoluce s GF, D y(k) = x(k) [Ke (k2 /2σ 2) e j2πf k ] y(k) = ([x(k)e j2πf k ] Ke k/2σ2 )e j2πf k Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 7 / 39
dodělat definici Gáboru, co vlastně chceme počítat jak se dá rozložit konvoluce Gáboru že se to redukuju na konvoluci Gausem ta se dá udělat rychle definici IIR pro Gausse podle článku pokus o nějakou teorii, jak se na to došlo výsledky toho rychlého Gausse Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 8 / 39
rychlý Gauss tam: o(x) = Fi(x) + I o(x ) + (I o(x ) + I 2 o(x 2) + I 3 o(x 3)) /I a zpět: o(x) = Fo(x) + I o(x + ) + (I o(x + ) + I 2 o(x + 2) + I 3 o(x + 3)) /I Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 9 / 39
prostorová složitost pro FIR: pro D pracuje přímo nad výstupní pamětí pro 2D a 3D vyžaduje pomocný obrázek pomocný obrázek je o stejné velikosti jako vstupní/výstupní obrázek pro IIR: pracuje přímo nad výstupní pamětí, žádné pomocné obrázky FIR část obsahuje totiž pouze jeden nenulový koeficient šetření prostorem je výhoda Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 / 39
časová náročnost testováno pro D a 2D výpočty o různých σ nad stejným obrazem 2D: stejná σ pro x a y (isotropní), snažší odhad velikosti supportu filtru obraz byl 5x5 pixelů, float (celkem cca 96MB v paměti) počítač byl P4, 52MB DDR4MHz (dneska jsou rychlejší paměti a větší L2 cache) sledována průměrná doba z výpočtů variance byla vždy maximálně v řádu tisícin (o několik řádů menší než naměřené časy) příklad pro D σ =.:.693232s ±.296s příklad pro 2D σ =.:.74287s ±.375s Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 / 39
jak se měřilo #include <sys/time.h> struct timeval t,t2, tbase; gettimeofday(&tbase,null); float T,T2; gettimeofday(&t,null); ApplyIIRGauss<float>(in,iir res,sigma); gettimeofday(&t2,null); t.tv sec-=t base.tv sec; t2.tv sec-=t base.tv sec; T=(float)t.tv sec + ((float)t.tv usec /.f); T2=(float)t2.tv sec + ((float)t2.tv usec /.f); cout << it required << T2-T << endl; Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 2 / 39
FIR, časová náročnost doba výpočtu záleží na velikosti vstupního obrazu a velikosti σ σ určuje velikost filtru: roundup(3σ) 2 + support filtru v každé ose je potom cca 6σ (poměrně velký) filtr je definován pro každé σ časová náročnost roste s velikostí σ, nevýhoda poznámka: důsledkem roundup() je, že několik sousedních σ definuje stejně velký support, úspora při testování Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 3 / 39
FIR, support v závislosti na σ 45 4 Sigmas used in the dense tests Sigmas used in the coarse tests 35 3 25 5 5 2 3 4 5 6 Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 4 / 39
FIR, časy 5 D FIR, dense sampling 2D FIR, coarse sampling 4 3 2 2 3 4 5 6 Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 5 / 39
FIR, okraje nejrychlejší rutina pro počítání FIR filtrů je ApplyGauss () ta rozšiřuje obrázek nulami, okraje se teda dají předpočítat ofic. verze FIR filtrů rozšiřuje obrázek zrcadlovými okraji implementováno přes indexy, paměťové operace navíc 5 2D FIR, coarse sampling, zeroing 2D FIR, coarse sampling, mirroring 4 3 2 2 3 4 5 6 Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 6 / 39
IIR, časová náročnost doba výpočtu zálěží jenom na velikost vstupního obrazu prakticky se vstupní obraz násobí konstantou pro každý nový výsledek konvoluce je potřeba znát 3 výsledky předchozí konvoluce to vše nezávisle na velikosti σ filtr není definován pro σ <.5 to tolik nevadí, pro malé σ je lepší použít FIR variantu (je rychlejší, ale bere víc paměti) Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 7 / 39
IIR, remaindery odstraňování remainderů: #define REMOVE REMAINDER FORWARD(val)\ val=(val <.5)? : val; //removes nebo #define REMOVE REMAINDER FORWARD(val) //leaves #define REMOVE REMAINDER BACKWARD(val)\ val=(val <.5)? : val; //removes nebo #define REMOVE REMAINDER BACKWARD(val) //leaves Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 8 / 39
IIR, remaindery, porovnání přesnosti příklad IIR impulse response, impulse měl velikost, σ = 2. 25 IIR D impulse response 5 5-5 - -5 - -5 5 5 Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 9 / 39
IIR, remaindery, porovnání přesnosti porovnání levé půlky impulse response Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 / 39
IIR, remaindery, porovnání přesnosti porovnání pravé půlky impulse response Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 2 / 39
IIR, časy 7 6 D IIR, dense sampling, without remainders D IIR, coarse sampling, with remainders 2D IIR, coarse sampling, without remainders 2D IIR, coarse sampling, with remainders 5 4 3 2 2 3 4 5 6 Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 22 / 39
FIR a IIR, porovnání časové náročnosti, D počítáno pořád nad stejným velkým obrázkem rychlejší IIR varianta bez remainderů 3 D IIR, dense sampling, without remainders D FIR, dense sampling 2.5 2.5.5 2 3 4 5 6 Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 23 / 39
FIR a IIR, porovnání časové náročnosti, 2D počítáno pořád nad stejným velkým obrázkem rychlejší IIR varianta bez remainderů 5 2D IIR, coarse sampling, without remainders 2D FIR, coarse sampling 4 3 2 2 3 4 5 6 Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 24 / 39
FIR a IIR, porovnání časové náročnosti, 3D počítáno nad 3D obrázkem buňky, 276x286x6px (cca 32MB) rychlejší IIR varianta bez remainderů 3 3D IIR, coarse sampling, without remainders 3D FIR, coarse sampling, without remainders 2.5 2.5.5 2 3 4 5 6 Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 25 / 39
porovnání přesností, D porovnání IIR (bez remainderů) vs. FIR, σ =. 45 4 IIR D impulse response, Sigma=. FIR D impulse response, Sigma=. 35 2 IIR minus FIR of D impulse responses, Sigma=. 3 25 - -2-3 5-4 - -5 5 5 - -5 5 Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 26 / 39
porovnání přesností, D porovnání IIR (bez remainderů) vs. FIR, σ = 2. 3 IIR D impulse response, Sigma=2. FIR D impulse response, Sigma=2. 25 IIR minus FIR of D impulse responses, Sigma=2..5 5 -.5 - -5 - -5 5 5 5-5 - -5 5 5 Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 27 / 39
porovnání přesností, D porovnání IIR (bez remainderů) vs. FIR, σ = 3. IIR D impulse response, Sigma=3. FIR D impulse response, Sigma=3. 5 IIR minus FIR of D impulse responses, Sigma=3..5 -.5-5 - -5 - -5 5 5 - -5 - -5 5 5 Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 28 / 39
porovnání přesností, D porovnání IIR (bez remainderů) vs. FIR, σ = 4. 4 IIR D impulse response, Sigma=4. FIR D impulse response, Sigma=4. 2 8.5 IIR minus FIR of D impulse responses, Sigma=4. 6 -.5 4 - - - 2-2 - - Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 29 / 39
porovnání přesností, 2D porovnání IIR (bez remainderů) vs. FIR, σ =. 4 IIR 2D impulse response, Sigma=. FIR 2D impulse response, Sigma=. 2 IIR minus FIR of 2D impulse responses, Sigma=..5 8 -.5 6 - -.5 4 2-2 - -5 5 - -5 5 - -5 5 - -5 5 Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 3 / 39
porovnání přesností, 2D porovnání IIR (bez remainderů) vs. FIR, σ = 2. IIR 2D impulse response, Sigma=2. FIR 2D impulse response, Sigma=2. 4.5 4 3.5 3 2.5 2.5.5-5 - -5 IIR minus FIR of 2D impulse responses, Sigma=2..2.5..5 -.5 -. -.5 -.2 -.25 -.3-5 - -5 5 5-5 - -5 5 5 5 5-5 - -5 5 5 Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 3 / 39
porovnání přesností, 2D porovnání IIR (bez remainderů) vs. FIR, σ = 2.9 2.5 IIR 2D impulse response, Sigma=2.9 FIR 2D impulse response, Sigma=2.9 2.5.5..5 IIR minus FIR of 2D impulse responses, Sigma=2.9.5 -.5 -. - -5- -5 5 5 - -5 - -5 5 5 - -5- -5 5 5 - -5 - -5 5 5 Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 32 / 39
porovnání přesností, 2D porovnání IIR (bez remainderů) vs. FIR, σ = 4. IIR 2D impulse response, Sigma=4. FIR 2D impulse response, Sigma=4..9.8.7.6.5.4.3.2. IIR minus FIR of 2D impulse responses, Sigma=4..2. -. -.2 -.3 -.4 -.5 - - - - - - - - Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 33 / 39
porovnání přesností, 3D real příklad porovnání IIR (bez remainderů) vs. FIR, σ =.4 IIR 3D, Sigma=.4 FIR 3D, Sigma=.4 5 4.5 4 3.5 3 2.5 2.5.5 4 - -4 4.4.2.8.6.4.2 4 IIR minus FIR of 3D impulse response, Sigma=.4-4 - - -4 4-4 - Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 34 / 39
porovnání přesností, 3D real příklad porovnání IIR (bez remainderů) vs. FIR, σ = 3.2 IIR 3D, Sigma=3.2 FIR 3D, Sigma=3.2 25 IIR minus FIR of 3D impulse response, Sigma=3.2 - -2-3 5-4 -5-6 -7-8 -9 4 - -4 4 - -4 5 4 - -4 4 - -4 Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 35 / 39
porovnání přesností, 2D real příklad porovnání IIR (bez remainderů) vs. FIR, σ =. IIR 2D impulse response, Sigma=. FIR 2D impulse response, Sigma=. 8 6 4 8 6 4 IIR minus FIR of 2D impulse responses, Sigma=. 2.5.5 -.5 - -.5-2 -2.5-3 -4-4 -4-4 -4-4 -4-4 Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 36 / 39
porovnání přesností, 2D real příklad porovnání IIR (bez remainderů) vs. FIR, σ = 3. IIR 2D impulse response, Sigma=3. FIR 2D impulse response, Sigma=3. 8 6 4 8 6 4 IIR minus FIR of 2D impulse responses, Sigma=3..5.5 -.5 - -.5-2 -2.5-3 -4-4 -4-4 -4-4 -4-4 Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 37 / 39
porovnání přesností, 2D real příklad porovnání IIR (bez remainderů) vs. FIR, σ = 5. IIR 2D impulse response, Sigma=5. FIR 2D impulse response, Sigma=5. 6 4 8 6 4 IIR minus FIR of 2D impulse responses, Sigma=5. 2 - -2-3 -4-5 -4-4 -4-4 -4-4 -4-4 Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 38 / 39
co s tím? je jasné, že výsledky FIR se liší od IIR co je ale lepší, oboje je totiž aproximace... ve 3D je tam možná nějaká chyba v implementaci v D a 2D se výsledky tolik opticky nelišily ani na IR ani na reálných datech čísla, absolutně: v 2D rozdíl až 5, ve 3D rozdíl až 8 čísla, relativně: v 2D rozdíl až 3%, ve 3D rozdíl až 3% fakt: IIR rychlejší pro σ > fakt: IIR podobnější FIR pro σ > výsledky z IIR kopírují tvar výsledků z FIR možná půjde najít nějaká korekce (třeba přepočet σ) pak asi IIR může nahradit FIR pro větší σ Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 39 / 39
co dál? momentálně jsem dokončil implementaci rychlého Gausse to je v podstatě základ počítání Gáborových filtrů (GF) podobná studie se musí udělat na chování GF (třeba se ty rozdíly nějak zkousnou... ) základní GF, 4D konvoluční jádro klasicky naivně konvolvováno základní benchmark, ten je třeba překonat separované GF, základní GF rozložený na kompomenty urychlení výpočtu separovaný aproximovaný GF, předchozí GF s rozloženými aproximovanými komponentami další urychlení výpočtu Vladimír Ulman (CBIA, FI MU) Gáborovy filtry th October, 7 4 / 39