2015-05-09 11 views
5

Ich habe Gabor filter auf Bilder mit den folgenden Theta - {0,45,90,135} angewendet. aber die resultierenden Bilder waren genau die gleichen mit dem gleichen Orientierungswinkel!Different 'Theta' für Gabor Filter liefert Bilder ohne Orientierung

ich erwartet, dass die Ergebnisse der Anwendung Gabor-Filter mit theta = 90 wird in Ausrichtung als die mit theat = 45, aber nach der Verwendung von Gabor-Filter mit verschiedenen Theta unterschiedlich sein, erhalte ich Bilder ohne Unterschied in der Ausrichtung!

Ich benutze Gabor-Filter falsch? Weil ich erwarte, dass jedes Bild entsprechend dem im Gabor-Filter angegebenen Ausrichtungsengel unterschiedlich ausgerichtet ist.

Der Parameter I für Gabor-Filter wurden wie folgt eingestellt:

kernel size = Size(5,5); 
theta = {0,45,90,135} 
sigma = ,2 
type = CVType.CV_32F 
lambda = 100 
gamma = ,5 
psi = 5 

Code:

public static void main(String[] args) { 

    MatFactory matFactory = new MatFactory(); 
    FilePathUtils.addInputPath(path_Obj); 
    Mat bgrMat = matFactory.newMat(FilePathUtils.getInputFileFullPathList().get(0)); 
    Mat gsImg = SysUtils.rgbToGrayScaleMat(bgrMat); 
    double[] theta = new double[4]; 
    theta[0] = 0; 
    theta[1] = 45; 
    theta[2] = 90; 
    theta[3] = 135; 

    for (int i = 0; i < 4; i++) { 
     Mat gaborCoeff = Imgproc.getGaborKernel(new Size(3,3), 2, theta[i], 4.1, 54.1, 0, CvType.CV_32F); 
     Mat dest = new Mat(); 
     Imgproc.filter2D(gsImg, dest, CvType.CV_32F, gaborCoeff); 
     ImageUtils.showMat(dest, "theta = " + theta[i]); 
    } 

} 

image_0 Grad: enter image description here

image_45 Grad: enter image description here

image_90 Grad: enter image description here

image_135 Grad: enter image description here

Bild nach Gabor mit theta = 0,45,90,135, ohne Glättung Anwendung: enter image description here

+0

Kannst du uns den Code zeigen, den du geschrieben hast, der den Gabor-Filter auf deine Bilder anwendet? – rayryeng

+0

@rayryeng Entschuldigung für die späte Antwort, finden Sie den Code und die Ausgabe oben aktualisiert – user2121

+0

@ user2121 Bitte ändern Sie "Lambda" auf 10. Lassen Sie mich wissen, wenn Sie irgendwelche Änderungen erhalten. –

Antwort

0

Vielleicht ist das Problem hier:

Mat gaborCoeff = Imgproc.getGaborKernel(new Size(3,3), 2, theta[i], 4.1, 54.1, 0, CvType.CV_32F); 

Ich denke, es ist so etwas wie sein sollte:

Mat gaborCoeff = Imgproc.getGaborKernel(new Size(3,3), sigma, theta[i], lambda, psi, 0, CvType.CV_32F); 

Und ich bin mir nicht sicher über die Werte von Lambda und psi. Vielleicht sollten Sie versuchen, die resultierenden Bilder mit anderen Werten zu sehen.

Schließlich Gabor Ergebnis ist, was Sie image_0 Grad, image_45 Grad genannt. Auch wenn es keine signifikante Änderung zwischen ihnen gibt, würde ich die Parameter ändern