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;
)
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;
)