6

n 次元のベクトル (1xn データセットで、画像データではありません) があり、それにガウス フィルターを適用したいと考えています。Image Processing Toolkit と他にいくつかあります (リストが必要かどうか尋ねてください)。

おそらく、関数のhsizeパラメーターを のようなものにすることができます。次のステップとしてベクターに適用するために使用できますか、それとも別のものを使用する必要がありますか?fspecial[1 n]imfilter

Matlab でガウス フィルターを 2 次元画像データに適用する方法については、かなりの数の例を見てきましたが、プラットフォームとしての Matlab にはまだ比較的慣れていないので、例は本当に良いでしょう。

注:私は現在、それを試して何が起こるかを確認する立場にありません(現在、Matlabがインストールされているマシンではありません)。それ以外の場合は、最初に試してfspecial、 とimfilter.

4

1 に答える 1

19

ガウス フィルターを自分で作成してみませんか? 式fspecial(またはガウスの他の定義)を見ることができます。

sigma = 5;
sz = 30;    % length of gaussFilter vector
x = linspace(-sz / 2, sz / 2, sz);
gaussFilter = exp(-x .^ 2 / (2 * sigma ^ 2));
gaussFilter = gaussFilter / sum (gaussFilter); % normalize

それを適用するには、次を使用できますfilter

y = rand(500,1);
yfilt = filter (gaussFilter,1, y);

フィルターにはレイテンシーがあることを忘れないでください。つまり、フィルター処理された信号は入力信号と比較してシフトされます。このフィルタは対称であるため、 のconv代わりに を使用してシフトされていない出力を取得し、次のオプションfilterを使用できます。same

yfilt = conv (y, gaussFilter, 'same');
于 2011-08-09T08:30:14.433 に答える