Main Content

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

integralBoxFilter

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

説明

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

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

また、B = integralBoxFilter(___,"NormalizationFactor",normFactor) は、ボックス フィルターに適用される正規化係数を指定します。

すべて折りたたむ

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

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

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

既定では、正規化係数の値は、filterSize がスカラーの場合は 1/filterSize.^2filterSize がベクトルの場合は 1/prod(filterSize) です。既定の設定には平均値フィルターの効果があります。出力イメージのピクセルは、イメージの局所的な平均になります。

局所領域の和を求めるには、normFactor1 に設定します。このような状況でオーバーフローを回避するために入力イメージをデータ型 double に変換して倍精度イメージを使用することを検討してください。

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

出力引数

すべて折りたたむ

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

データ型: double

拡張機能

バージョン履歴

R2015b で導入