ドキュメンテーション

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

imgaussfilt3

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

構文

B = imgaussfilt3(A)
B = imgaussfilt3(A,sigma)
B = imgaussfilt3(___,Name,Value,...)
gpuarrayB= imgaussfilt3(gpuarrayA,___)

説明

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

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

B = imgaussfilt3(___,Name,Value,...) は、フィルター処理の特性を制御する名前と値のペアと 3 次元ガウス平滑化カーネルを使用して、3 次元イメージ A をフィルター処理します。

gpuarrayB= imgaussfilt3(gpuarrayA,___) は、GPU でフィルター処理を実行します。入力イメージは gpuArray でなければなりません。関数は gpuArray を返します。この構文では Parallel Computing Toolbox™ が必要です。

すべて折りたたむ

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 次元、実数の非スパース配列として指定します。

例: volSmooth = imgaussfilt3(vol,2);

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

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

例: volSmooth = imgaussfilt3(vol, 2);

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

GPU の入力イメージ。gpuArray として指定します。

例: gpuarrayA = gpuArray(imread('cameraman.tif')); gpuarrayB = imgaussfilt3(gpuarrayA);

名前/値のペアの引数

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

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

すべて折りたたむ

ガウス フィルターのサイズ。実数、奇数、正の整数のスカラーまたは 3 要素ベクトルとして指定します。スカラー Q を指定した場合、imgaussfilt3 はサイズ [Q Q Q] の 3 次ガウス フィルターを使用します。

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

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

フィルター処理前のイメージに使用されるパディングのタイプ。次のいずれかの値または数値スカラーとして指定します。スカラーを指定した場合、imgaussfilt3 はイメージの境界の外側にある入力イメージ ピクセルにその値を使用します。

パディング タイプ説明
‘circular’

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

‘replicate’

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

‘symmetric’

配列自体の鏡像で配列をパディングします。

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

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

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

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

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

データ型: char

出力引数

すべて折りたたむ

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

フィルター処理されたイメージ。gpuArray として返されます。

ヒント

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

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

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

R2015a で導入

この情報は役に立ちましたか?