Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

integralBoxFilter

積分イメージの 2 次元ボックス フィルター処理

説明

B = integralBoxFilter(A) は、3 x 3 ボックス フィルターを使用して積分イメージ A をフィルター処理します。フィルター処理されたイメージ B が返されます。

B = integralBoxFilter(A,filterSize) は、filterSize で指定されたサイズの 2 次元ボックス フィルターを使用して積分イメージ A をフィルター処理します。

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

すべて折りたたむ

イメージをワークスペースに読み取ります。

A = imread('cameraman.tif');

フィルター近傍の半径でイメージをパディングします。この例では 11 x 11 のフィルターを使用します。

filterSize = [11 11];
padSize = (filterSize-1)/2;
Apad = padarray(A, padSize, 'replicate','both');

パディングされた入力イメージの積分イメージを計算します。

intA = integralImage(Apad);

積分イメージをフィルター処理します。

B = integralBoxFilter(intA, filterSize);

元のイメージとフィルター処理されたイメージを表示します。

figure
imshow(A)
title('Original Image')

Figure contains an axes object. The axes object with title Original Image contains an object of type image.

figure
imshow(B,[])
title('Filtered Image')

Figure contains an axes object. The axes object with title Filtered Image contains an object of type image.

イメージをワークスペースに読み取ります。

 A = imread('cameraman.tif');

フィルター近傍の半径 ((11-1)/2 で計算) でイメージをパディングします。

padSize = [5 5]; 
Apad = padarray(A, padSize, 'replicate', 'both');

パディングされた入力の積分イメージを計算します。

intA = integralImage(Apad);

[11 1] の垂直フィルターを使用して積分イメージをフィルター処理します。

Bvert = integralBoxFilter(intA, [11 1]);

入力イメージのサイズを保持するために出力をトリミングして表示します。

Bvert = Bvert(:,6:end-5);

[1 11] の水平フィルターを使用して積分イメージをフィルター処理します。

Bhorz = integralBoxFilter(intA, [1 11]);

入力イメージのサイズを保持するために出力をトリミングします。

Bhorz = Bhorz(6:end-5,:);

元のイメージとフィルター処理されたイメージを表示します。

figure,
imshow(A)
title('Original Image')

Figure contains an axes object. The axes object with title Original Image contains an object of type image.

figure,
imshow(Bvert,[])
title('Filtered with Vertical Filter')

Figure contains an axes object. The axes object with title Filtered with Vertical Filter contains an object of type image.

figure,
imshow(Bhorz,[])
title('Filtered with Horizontal Filter')

Figure contains an axes object. The axes object with title Filtered with Horizontal Filter contains an object of type image.

入力引数

すべて折りたたむ

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

積分イメージは垂直でなければなりません。integralBoxFilter は回転した積分イメージをサポートしません。integralImage で返される積分イメージの最初の行と列はゼロ パディングされていると仮定します。

データ型: double

ボックス フィルターのサイズ。正の奇数の整数または正の奇数の整数の 2 要素ベクトルとして指定します。filterSize がスカラーの場合、integralBoxFilter は正方形ボックス フィルターを使用します。

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

名前と値の引数

例: B = integralBoxFilter(A,5,'NormalizationFactor',1);

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

ボックス フィルターに適用される正規化係数。数値スカラーとして指定します。

既定の設定の 'NormalizationFactor' には平均値フィルターの効果があります。出力イメージのピクセルは、イメージの局所的な平均になります。局所領域の和を求めるには、'NormalizationFactor'1 に設定します。このような状況でオーバーフローを回避するために入力イメージを double クラスに変換して倍精度イメージを使用することを検討してください。

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

出力引数

すべて折りたたむ

フィルター処理されたイメージ。数値配列として返されます。integralBoxFilter はパディングなしでフィルター処理が計算された部分のみを返します。

データ型: double

拡張機能

バージョン履歴

R2015b で導入