2016-08-10 4 views
3

Ich benutze Accord.NET Framework.Apply eine Filterbank parallel

Angenommen, ich habe drei Gabor-Filter, und ich muss sie parallel auf ein Bild anwenden.

Ist das folgende ein korrektes Konzept einer parallelen Filterbank?

Bitmap bmp = (Bitmap)Bitmap.FromFile(@"C:\Lenna.png"); 

GaborFilter gf1 = new GaborFilter(); 
gf1.GaborKernelSize = 3; 
gf1.Lambda = 4.0; 
gf1.Theta = 45.0;////////////////////Theta is 45 
gf1.Psi = 1.0; 
gf1.Sigma = 2.0; 
gf1.Gamma = 0.3; 

GaborFilter gf2 = new GaborFilter(); 
gf2.GaborKernelSize = 3; 
gf2.Lambda = 4.0; 
gf2.Theta = 90.0;/////////////////////Theta is 90 
gf2.Psi = 1.0; 
gf2.Sigma = 2.0; 
gf2.Gamma = 0.3; 

GaborFilter gf3 = new GaborFilter(); 
gf3.GaborKernelSize = 3; 
gf3.Lambda = 4.0; 
gf3.Theta = 135.0;////////////////////Theta is 135 
gf3.Psi = 1.0; 
gf3.Sigma = 2.0; 
gf3.Gamma = 0.3; 

bmp = gf1.Apply(bmp); 
bmp = gf2.Apply(bmp); 
bmp = gf3.Apply(bmp); 

MyWinForm f = new MyWinForm(); 
f.PictureBox = bmp; 
f.ShowDialog(); 

Wenn nicht, wie kann ich sie dann parallel arbeiten lassen?

Antwort

2

Eine Filterbank ist nur ein Satz von Filtern mit jeweils unterschiedlichen Parametern, der darauf abzielt, eine Antwort für verschiedene Komponenten des Signals zu erhalten.

In Ihrem Fall, Gabor Filter, die Parameter, die Sie ändern, ist die Ausrichtung, so dass jeder der Filter die Antwort der Features im Bild mit der ausgewählten Ausrichtung geben wird. Für eine Filterbank der Größe N (N verschiedene Filter) würden wir, wenn wir sie auf ein Bild anwenden, N verschiedene Bilder erhalten, von denen jedes das Ergebnis eines bestimmten Filters ist.

In Ihrem Code wenden Sie die Filter nacheinander an, wobei der Ausgang des ersten Filters der Eingang für den nächsten ist. In diesem Fall können Sie das Bild nicht parallel filtern.

Die Anwendung eines Gabor Fitlers ist nur eine Faltung eines Gabor-Kernels mit dem Bild. Daher können Sie die Gabor-Filter nicht nur einzeln auf das Bild anwenden, sondern auch zusammenfalten und erhalten einen neuen Filter, der einmal auf das gesamte Bild angewendet werden kann.

+0

Würde es funktionieren, wenn ich die Filterbank auf Bilder anwende, um 03 Bilder zu erhalten und sie dann durch AND-Operationen zusammenzuführen? – anonymous

+0

Wenn Sie das Bild filtern, erhalten Sie kein binäres Ergebnis, also glaube ich nicht, dass Sie UND-Operation machen können. Ich weiß nicht, was genau du erreichen willst, wenn du mir sagst, dass ich vielleicht helfen könnte. –

+0

Ich versuche nur, eine Bank von orientierten Bandpassfiltern zu erstellen. Dieser Gabor-Quellcode war nur ein Beispiel. – anonymous