Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

imguidedfilter

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

説明

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

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

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

すべて折りたたむ

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

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

Figure contains an axes object. The axes object contains an object of type image.

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

Iguided = imguidedfilter(A);

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

Igaussian = imgaussfilt(A,2);

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

montage({Iguided,Igaussian})

Figure contains an axes object. The axes object contains an object of type image.

入力引数

すべて折りたたむ

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

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

ガイド イメージ。イメージ A と同じ高さと幅のバイナリ イメージ、グレースケール イメージ、または RGB イメージとして指定します。

ガイド イメージとして使用できるのは、対象の入力イメージ自体、別バージョンの入力イメージ、まったく異なるイメージのいずれかです。出力イメージは、ガイド イメージを局所的に線形変換したものになります。その際、この関数は、入力イメージと出力イメージの誤差が最小となるように、線形変換の重みを最適化します。さまざまなガイド イメージを使用したガイド付きイメージ フィルター処理の応用に関する詳細については、ガイド付きフィルターを使用したフラッシュあり/フラッシュなしのノイズ除去の実行およびエッジ保存型フィルター処理が行われたサーモグラフィ イメージのセグメント化を参照してください。

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

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: Ismooth = imguidedfilter(A,NeighborhoodSize=[4 4]); は、サイズが 4 行 4 列のピクセルの近傍を使用してガイド付きフィルター処理を実行します。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: Ismooth = imguidedfilter(A,"NeighborhoodSize",[4 4]);

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

例: 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 のデータ型によって異なります。

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

出力引数

すべて折りたたむ

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

ヒント

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

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

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

    • AG の両方が RGB イメージの場合、imguidedfilterA の各チャネルを個別に、G の対応するチャネルを使用してフィルター処理します。

    • A が RGB イメージで G がシングル チャネル イメージの場合、imguidedfilterA の各チャネルを個別に、同じガイド イメージ G を使用してフィルター処理します。

    • A がシングル チャネル イメージで G が RGB イメージの場合、imguidedfilterG の 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 で導入

すべて展開する