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
imshow(B,[])
title('Filtered 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,
imshow(Bvert,[])
title('Filtered with Vertical Filter')

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

入力引数

すべて折りたたむ

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

積分イメージは垂直でなければなりません。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 で導入