Main Content

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

imguidedfilter

イメージのガイド付きフィルター処理

説明

B = imguidedfilter(A,G) は、ガイド付きフィルターを使用して、バイナリ イメージ、グレースケール イメージ、または RGB イメージ A をフィルター処理します。フィルター処理はイメージ G によってガイドされます。

B = imguidedfilter(A) は、入力イメージ A を、自己ガイドの下でフィルター処理します。A 自体がガイド イメージとして使用されます。これは、イメージ A のエッジ保存平滑化に使用できます。

B = imguidedfilter(___,Name,Value) は、ガイド付きフィルター処理の特性を制御する名前と値のペアを使用して、イメージ A をフィルター処理します。

すべて折りたたむ

イメージを読み取って表示します。

A = imread('pout.tif');
imshow(A)

imguidedfilter を使用してイメージを平滑化します。次の構文では、imguidedfilter はイメージ自体をガイド イメージとして使用します。

Iguided = imguidedfilter(A);

比較のために、imgaussfilt で定義されたガウス フィルターを使用して元のイメージを平滑化します。フィルターの標準偏差を 2.5 に設定し、平滑化の度合いがガイド付きフィルターのものとほぼ一致するようにします。

Igaussian = imgaussfilt(A,2);

ガイド付きフィルター処理の結果とガウス フィルター処理の結果を表示します。ジャケットや顔など、フィルター処理された 2 つのイメージの平坦な領域に同程度の平滑化が行われていることを確認します。ただし、ガイド付きのフィルター処理されたイメージでは、格子の周りや白いシャツの襟のように、エッジの鮮鋭度がよりよく保たれます。

montage({Iguided,Igaussian})

入力引数

すべて折りたたむ

フィルター処理されるイメージ。バイナリ イメージ、グレースケール イメージ、または RGB イメージとして指定します。

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

フィルター処理の際にガイドとして使用するイメージ。イメージ A と同じサイズのバイナリ イメージ、グレースケール イメージ、または RGB イメージとして指定します。

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

名前と値のペアの引数

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

例: Ismooth = imguidedfilter(A,'NeighborhoodSize',[44]);

ガイド付きフィルター処理で使用する各ピクセルの周囲の四角形近傍のサイズ。正の整数または正の整数の 2 要素ベクトルとして指定します。スカラー値、たとえば Q を指定した場合、近傍はサイズ [Q Q] の正方形になります。イメージのサイズより大きい値を指定しないでください。

例: Ismooth = imguidedfilter(A,'NeighborhoodSize',[7 7]);

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

出力イメージ内の平滑化量。正の数値として指定します。小さい値を指定すると、分散が小さい近傍 (一様な領域) のみが平滑化され、分散が大きい近傍 (エッジ周辺など) は平滑化されません。大きい値を指定すると、比較的一様な近傍に加えて、分散が大きい近傍 (強いエッジなど) も平滑化されます。既定値から始めて、結果を確認し、既定値を上下に調整して目的の効果を達成してください。

ガイド イメージ G を指定する場合、degreeOfSmoothing の既定値は、G のデータ型によって異なり、0.01*diff(getrangefromclass(G)).^2 で計算されます。たとえば、既定の平滑化の度合いは、データ型 uint8 のイメージに対して 650.25 です。データ型が double のイメージで、ピクセル値が [0,1] の範囲であるイメージに対して既定値は 0.01 です。同様に、ガイド イメージを指定しない場合、既定値はイメージ A のデータ型によって異なります。

例: Ismooth = imguidedfilter(A,'DegreeOfSmoothing',650.25);

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

出力引数

すべて折りたたむ

フィルター処理されたイメージ。サイズとデータ型が A と同じ数値配列として返されます。

ヒント

  • パラメーター DegreeOfSmoothing は、与えられた近傍の分散に対するソフトしきい値を指定します。近傍の分散がしきい値より大幅に小さいピクセルでは、ある程度の平滑化を確認できます。近傍の分散がしきい値より大幅に大きいピクセルでは、平滑化はほとんど、またはまったく行われません。

  • 入力イメージ AG は、クラスが異なる場合があります。AG のいずれかが整数クラスまたは logical クラスである場合、imguidedfilter は、内部計算用に、それらを浮動小数点の精度に変換します。

  • 入力イメージ AG は、チャネル数が異なる場合があります。

    • ARGB イメージで、G がグレースケール イメージまたはバイナリ イメージである場合、imguidedfilter は、A のすべてのチャネルに対して個別に G をガイドとして使用します。

    • AG の両方が RGB イメージの場合、imguidedfilter は、G の各チャネルを、A の対応するチャネルのガイドとして使用します (平面ごとの動作)。

    • A がグレースケール イメージまたはバイナリ イメージで、G が RGB イメージの場合、imguidedfilter は、G の 3 つのチャネルすべてを、A をフィルター処理のガイド (色統計) として使用します。

参照

[1] Kaiming He, Jian Sun, Xiaoou Tang, Guided Image Filtering. IEEE Transactions on Pattern Analysis and Machine Intelligence, Volume 35, Issue 6, pp. 1397-1409, June 2013

R2014a で導入