并行应用滤波器组

Apply a filter bank in parallel

我正在使用 Accord.NET 框架。

假设我有三个 Gabor 滤波器,我需要将它们并行应用于图像。

以下是并行滤波器组的正确概念吗?

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

如果不能,那么如何让它们并行工作?

滤波器组只是一组滤波器,每个滤波器具有不同的参数,旨在获得对信号不同分量的响应。

在你的例子中,Gabor 过滤器,你改变的参数是方向,所以每个过滤器都会给出图像中具有所选方向的特征的响应。对于大小为 N 的滤波器组(N 个不同的滤波器),如果我们将其应用于图像,我们将得到 N 个不同的图像,每个图像都是特定滤波器的结果。

在您的代码中,您一个接一个地应用过滤器,第一个过滤器的输出是下一个过滤器的输入。在这种情况下,您无法并行过滤图像。

应用 Gabor fitler 只是 Gabor 核与图像的卷积。因此,无需在图像上单独应用每个 Gabor 滤波器,您只需将 Gabor 滤波器卷积在一起并获得一个新的滤波器,然后可以在整个图像上应用一次。