ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

imgaussfilt3

3 次元イメージの 3 次元ガウス フィルター処理

説明

B = imgaussfilt3(A) は、標準偏差 0.5 の 3 次元ガウス平滑化カーネルで 3 次元イメージ A をフィルター処理し、フィルター処理されたイメージを B に返します。

オプションで、フィルター処理を GPU を使用して実行できます (Parallel Computing Toolbox™ が必要)。詳細は、GPU での画像処理を参照

B = imgaussfilt3(A,sigma) は、sigma で指定された標準偏差の 3 次元ガウス平滑化カーネルで 3 次元イメージ A をフィルター処理します。

B = imgaussfilt3(___,Name,Value) は、フィルター処理の特性を制御する名前と値のペアの引数を使用します。

すべて折りたたむ

MRI データを読み込んで表示します。

vol = load('mri');
figure
montage(vol.D)
title('Original image volume')

3 次元ガウス フィルターを使用してイメージを平滑化します。

siz = vol.siz;
vol = squeeze(vol.D);   
sigma = 2;
 
volSmooth = imgaussfilt3(vol, sigma);
  
figure
montage(reshape(volSmooth,siz(1),siz(2),1,siz(3)))
title('Gaussian filtered image volume')

この例では、GPU で 3 次元ガウス平滑化演算を実行する方法を説明します。

フィルター処理する MRI データを読み込みます。

vol = load('mri');
figure, montage(vol.D), title('Original image volume')

ボリューム データを含む gpuArray を作成し、ガウス平滑化を実行します。

siz = vol.siz;
vol = gpuArray(squeeze(vol.D));   
sigma = 2; 

volSmooth = imgaussfilt3(vol, sigma);

平滑化したデータを GPUから収集し (関数 gather を使用)、すべての結果を表示して比較します。

figure, montage(reshape(gather(volSmooth),siz(1),siz(2),1,siz(3)))
title('Gaussian filtered image volume')

入力引数

すべて折りたたむ

フィルター処理するイメージ。3 次元数値配列として指定します。

GPU を使用してフィルター処理を実行するには、A を 3 次元数値配列を含む gpuArray として指定します。

データ型: single | double | int8 | uint8 | int16 | uint16 | int32 | uint32

ガウス分布の標準偏差。正の数値または正の数値の 3 要素ベクトルとして指定します。sigma がスカラーの場合、imgaussfilt3 は 3 次ガウス カーネルを使用します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例: volSmooth = imgaussfilt3(vol,sigma,'padding','circular');

ガウス フィルターのサイズ。正の奇数のスカラーまたは 3 要素ベクトルとして指定します。スカラーを指定した場合、imgaussfilt3 は 3 次フィルターを使用します。既定のフィルター サイズは 2*ceil(2*sigma)+1 です。

例: volSmooth = imgaussfilt3(vol,sigma,'FilterSize',5);

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

イメージ パディング。次のいずれかに指定します。

説明
数値スカラー定数値の要素によってイメージをパディングします。
'circular'

次元内で巡回的に要素を繰り返しパディングします。

'replicate'

配列の境界の要素を繰り返すことによってパディングします。

'symmetric'

イメージをそれ自体の鏡像でパディングします。

例: volSmooth = imgaussfilt3(vol,sigma,'padding','circular');

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string

フィルター処理を実行する領域。以下のいずれかの値に指定します。

フィルター領域説明
'auto'内部の経験則に基づいて空間領域または周波数領域で畳み込みを実行します。
'frequency'周波数領域で畳み込みを実行します。
'spatial'空間領域で畳み込みを実行します。

例: volSmooth = imgaussfilt3(vol,sigma,'FilterDomain','frequency');

データ型: char | string

出力引数

すべて折りたたむ

フィルター処理されたイメージ。クラスとサイズが入力イメージと同じ数値配列として返されます。

GPU を使用してイメージをフィルター処理する場合、B は数値配列を含む gpuArray として返されます。

ヒント

  • イメージ AInf または NaN が含まれている場合、imgaussfilt3 の周波数領域でのフィルター処理は定義されません。これは、'FilterDomain' パラメーターに 'frequency' を設定するか、'auto' を設定し、なおかつ imgaussfilt3 で周波数領域のフィルター処理を使用した場合に発生します。imfilter と同様の方法で出力での InfNaN の伝播を制限するために、'FilterDomain' パラメーターに 'spatial' を設定することを検討してください。

  • 'FilterDomain' パラメーターに 'auto' を設定すると、imgaussfilt3 は内部の経験則を使用して、空間領域と周波数領域のいずれのフィルター処理が高速かを判定します。この経験則はマシンに依存し、各種構成によって異なる場合があります。最適なパフォーマンスを得られるように、'spatial''frequency' の両方のオプションを試し、使用するイメージとカーネル サイズに最適なフィルター処理領域を決定します。

  • 'Padding' パラメーターを指定しない場合、imgaussfilt3 は既定の設定で 'replicate' パディングを使用します。これは imfilter で使用される既定の設定とは異なります。

拡張機能

R2015a で導入