2016-08-10 15 views
3

私はAccord.NETフレームワークを使用しています。フィルタバンクを並列に適用する

私はガボールフィルタが3つあり、それらを画像に並列に適用する必要があるとします。

以下は、パラレルフィルターバンクの正しい概念ですか?

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

もしそうでなければ、どのようにそれらを並行して動作させることができますか?

答えて

2

フィルタバンクは、信号のさまざまな成分に対して応答を得ることを目的とする、異なるパラメータを持つフィルタのセットの単なるセットです。

Gaborフィルタでは、変更するパラメータが向きになり、フィルタのそれぞれが選択された向きの画像内のフィーチャのレスポンスを返します。サイズN(N個の異なるフィルタ)のフィルタバンクに対して、画像に適用すると、N個の異なる画像が得られる。それぞれの画像は、特定のフィルタの結果である。

コードでは、最初のフィルタの出力が次のフィルタの入力になります。この場合、画像を並行してフィルタリングすることはできません。

ガボール・フィットラーの適用は、ガボール・カーネルとイメージの畳み込みに過ぎません。したがって、画像上に各Gaborフィルタを別々に適用する代わりに、Gaborフィルタをまとめて畳んで、画像全体に一度しか適用できない新しいフィルタを得ることができます。

+0

フィルタバンクを画像に適用して03画像を取得し、AND演算を適用してそれらをマージすると効果がありますか? – anonymous

+0

イメージをフィルタリングすると、バイナリ結果が得られないので、AND演算を実行できないと思います。あなたが私に助けてくれるかもしれないと教えてくれるなら、あなたが達成したいことが何であるかは分かりません。 –

+0

私は指向性バンドパスフィルタのバンクを作成しようとしています。そのGaborのソースコードは単なる例でした。 – anonymous

関連する問題