我使用的是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();
如果没有,那么,我怎样才能使它们并行工作?
答案 0 :(得分:2)
滤波器组只是一组滤波器,每个滤波器具有不同的参数,旨在获得信号的不同分量的响应。
在您的情况下,Gabor过滤器,您更改的参数是方向,因此每个过滤器将给出图像中具有所选方向的要素的响应。对于大小为N(N个不同滤波器)的滤波器组,如果我们将其应用于图像,我们将获得N个不同的图像,每个图像是特定滤波器的结果。
在您的代码中,您依次应用过滤器,第一个过滤器的输出是下一个过滤器的输入。在这种情况下,您无法并行过滤图像。
应用Gabor fitler只是Gabor内核与图像的卷积。因此,不要单独在图像上应用每个Gabor滤镜,而是可以将Gabor滤镜合并在一起并获得一个新的滤镜,而不是可以在整个图像上应用一次。