MATLABの「ガウス」フィルターは、画像をガウスカーネルと畳み込みますか?また、パラメーターhsize(フィルターのサイズ)とシグマをどのように選択しますか?何に基づいていますか?
@ Jacob は、Matlabでガウスフィルターを使用する方法を既に示しているので、繰り返しません。
フィルターサイズは、各方向で約3 * sigmaに選択します(奇数の整数に丸めます)。したがって、フィルターはエッジでほぼゼロに減衰し、フィルター処理された画像に不連続性は生じません。
シグマの選択は、何をしたいかによって大きく異なります。ガウス平滑化はローパスフィルター処理です。つまり、画像の低周波部分(それほど変化しない部分)を維持しながら、高周波の詳細(ノイズだけでなくエッジ)を抑制します。つまり、フィルターは、フィルターよりも小さいものすべてをぼかします。
たとえば、小さな特徴の検出を強化するために画像のノイズを抑制したい場合、ガウスを特徴よりもわずかに小さくするシグマを選択することをお勧めします。
MATLAB R2015a以降では、この操作を実行する fspecial
という新しい関数があるため、imfilter
の後にimgaussfilt
を使用する必要はなくなりました(またはパフォーマンスの観点から推奨されます)ワンステップ、より効率的に。
基本的な構文:
B = imgaussfilt(A,sigma)
は、A
で指定された標準偏差の2次元ガウス平滑化カーネルを使用して、イメージsigma
をフィルター処理します。
指定されたガウス標準偏差(sigam
)のフィルターのサイズは自動的に選択されますが、手動で指定することもできます。
_B = imgaussfilt(A,sigma,'FilterSize',[3 3]);
_
デフォルトは2*ceil(2*sigma)+1
です。
imgaussfilter
の追加機能は、gpuArray
sを操作する機能、周波数または空間ドメインでのフィルタリング、高度な画像パディングオプションです。 IPPによく似ています...うーん。さらに、 _imgaussfilt3
_ と呼ばれる3Dバージョンがあります。