Gabor filtr ...

D

darelet

Guest
Ahoj všichni,
Jsem nový tohoto fóra, a na zpracování obrazu také.Já jsem pracoval na filtr Gabor, a přečetl předchozí závity na stejné z tohoto fóra také.Můj problém je trochu unikátní i když, když jsem se snažil se provádí můj 2D Gabor podle zdrojů na internetu, nejsou výsledky přesně stejný pro filtrovaného obrazu, a ještě horší pro image Gabor sám.Pracoval jsem sám na mé individuální limity neúspěšně, a nevidím žádnou zjevnou tím v mém provedení.Prosím pomoc ...
Zde je můj kód (I'll post potřebné díly pouze pro čitelnost)

Kód:

gx_r = new float [y_filterWidth * x_filterWidth]; gx_i = new float [y_filterWidth * x_filterWidth];for (int y =- y_filterHalfWidth; y <= y_filterHalfWidth, y ) (

for (int x =- x_filterHalfWidth; x <= x_filterHalfWidth; x ) (

float x1 = (x-x0) * cos (theta) (y-y0) * sin (theta),

Y1 = - (x-x0) * sin (theta) (y-y0) * cos (theta);

float exponenciální = exp (- ((x1 * x1) ((gamma * gama) * (y1 * Y1))) / (2 * (sigma_x * sigma_y)));

Gaussova = faktor * exponenciální;

gx_r [(y y_filterHalfWidth) * x_filterWidth (x x_filterHalfWidth)] =

Gaussova * cos (2 * pi * (x1/lambda) fáze);

gx_i [(y y_filterHalfWidth) * x_filterWidth (x x_filterHalfWidth)] =

Gaussova * sin (2 * pi * (x1/lambda) fáze);

)

)/ / Take pryč průměr

float mean_r = 0,0, mean_i = 0,0;

for (int f = 0; f <(y_filterWidth * x_filterWidth), f ) (

mean_r = gx_r [f]; mean_i = gx_i [f];

)

mean_r = mean_r / (y_filterWidth * x_filterWidth);

mean_i = mean_i / (y_filterWidth * x_filterWidth);

for (int f = 0; f <(y_filterWidth * x_filterWidth), f ) (

gx_r [f] -= mean_r; / / Odebrat DC zaujatost

gx_i [f] -= mean_i;

)
 

Welcome to EDABoard.com

Sponsor

Back
Top