5

非対称ガウス フィルターカーネルを使用して、MATLAB を使用して画像を滑らかにしたいと考えています。これは、垂直方向と水平方向で同じ滑らかさを必要としないためです (ガウス モードのサイズと標準偏差が異なります)。しかし、この仕事をするためのシステム関数が見つかりません。機能fspecial()はこれをサポートしていないようです。

では、このフィルターをどのように実装できますか?

どうもありがとう。

4

4 に答える 4

7

水平フィルタリングと垂直フィルタリングを別々に適用できます。

v = fspecial( 'gaussian', [11 1], 5 ); % vertical filter
h = fspecial( 'gaussian', [1 5], 2 ); % horizontal
img = imfilter( imfilter( img, h, 'symmetric' ), v, 'symmetric' );

さらに、外積を使用して2つのフィルターを「構成」できます

f = v * h; % this is NOT a dot product - this returns a matrix!
img = imfilter( img, f, 'symmetric' );

PS
方向性フィルタリングを探している場合は、検討することをお勧めしますfspecial('motion'...)

于 2013-03-06T07:11:53.433 に答える
5

fspecialたとえば、ひねりを加えて使用できます。

 H= fspecial('gaussian',15,2) ;
 H2=imresize(H,[1.5*size(H,1) size(H,2)]);
 Img=conv2(Img,H2,'same');

フィルターを使用imresizeすると、ガウスの x 軸と y 軸の非対称性を制御できます。imtransform同様に、スキュー ストレッチなどを想像できる 任意のタイプの画像変換 (「 」を参照) を使用できます。

于 2013-03-06T04:32:41.843 に答える
3

ボックス フィルターを複数回適用することで、ガウス フィルターを近似できます。ガウスは分離可能であるため、これを両方の次元で別々に行うことができます。1 次元のボックス フィルターは、ピクセルの線形セグメントの単純な平均です。私はmatlabについて何も知りませんが、これができると思います。matlab が長方形フィルターを実行できる場合は、それを分離する必要さえありません。

ガウス近似の詳細については、http://nghiaho.com/?p=1159を参照してください。

于 2013-03-06T04:15:40.067 に答える