ドキュメンテーション

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

integralImage

積分イメージの計算

構文

J = integralImage(I)
J = integralImage(I,orientation)

説明

J = integralImage(I) は強度イメージ I から J (積分イメージ) を計算します。

J = integralImage(I,orientation) は、orientation で指定された方向の積分イメージを計算します。

すべて折りたたむ

シンプルなサンプル イメージを作成します。次の例では、1 行 3 列目 (値 1) から 2 行 4 列目 (値 14) に及ぶ 2 行 2 列の四角形の領域を合計します。このようなやさしい例では、領域内のピクセルの和を計算することは簡単です (1 + 7 + 8 + 14 = 30)。

I = magic(5)
I =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

サンプル イメージの積分イメージを作成します。積分イメージの各ピクセルの値は、上側にあるピクセルと左側にあるピクセルの和になります。integralImage はイメージの上側と左側にパディング行を追加しています。

J = integralImage(I)
J =

     0     0     0     0     0     0
     0    17    41    42    50    65
     0    40    69    77    99   130
     0    44    79   100   142   195
     0    54   101   141   204   260
     0    65   130   195   260   325

積分イメージ内の四角形の領域を合計します。この計算では合計する四角形の領域を拡張します。4 つのコーナーの座標は (startRow,startCol)、(startRow,endCol+1)、(endRow,startCol)、(endRow+1,endCol+1) です。

regionSum = (J(1,3) + J(3,5)) - (J(1,5) + J(3,3))
regionSum =

    30

サンプル イメージを作成します。

I = magic(5)
% Define rotated rectangular region as [x, y, width, height] where x, y
% denote the indices of the top corner of the rectangle. Width and height
% are along 45 degree lines from the top corner.
[x, y, w, h] = deal(3, 1, 3, 2);
I =

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

積分イメージを作成します。

J = integralImage(I, 'rotated');

積分イメージを使用して領域の和を計算します。

regionSum = J(y+w+h,x+w-h+1) + J(y,x+1) - J(y+h,x-h+1) - J(y+w,x+w+1);

入力引数

すべて折りたたむ

入力グレースケール イメージ。実数、非スパースの 2 次元行列として指定します。

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

イメージの方向。'upright' または 'rotated' に指定します。方向を 'rotated' に設定すると、integralImage は 45 度回転した四角形の和を計算する積分イメージを返します。すべてのイメージ境界でピクセルの和の計算を容易にするために、integralImage は出力の積分イメージを以下のようにパディングします。

積分イメージ説明
垂直の積分イメージ上側と左側にゼロ パディングする結果、size(J) = size(I)+1
回転した積分イメージ上側、左側、右側にゼロ パディングする結果、size(J) = size(I)+[1 2]

RGB イメージなど、入力イメージが 2 次元を超える場合 (ndims(I)>2)、関数 integralImage は高次元のすべての 2 次元平面に対する積分イメージを計算します。

データ型: char

出力引数

すべて折りたたむ

積分イメージ。double クラスの実数の非スパース行列として返されます。この関数は積分イメージの上側と左側をゼロ パディングするため、出力の積分イメージのサイズは入力イメージのサイズに 1 を加えたもの (size(J) = size(I)+1) になります。こうしたサイズ設定により、すべてのイメージ境界でピクセル和の計算が容易になります。積分イメージ J は、基本的に cumsum(cumsum(I,2)) の値をパディングしたものです。

詳細

すべて折りたたむ

積分イメージ

"積分イメージ" の各ピクセルは、上側および左側にあるピクセルの総和になります。積分イメージを使用すると、イメージの部分領域の総和を高速に計算できます。積分イメージの使用は Viola-Jones アルゴリズムによって一般に普及しました。積分イメージはピクセルの総和の計算を容易にし、近傍のサイズにかかわらず定数時間で実行できます。

参照

[1] Viola, Paul and Michael J. Jones, “Rapid Object Detection using a Boosted Cascade of Simple Features”, Proceedings of the 2001 IEEE Computer Society Conference on Computer Vision and Pattern Recognition, 2001. Volume: 1, pp.511–518.

R2015b で導入

この情報は役に立ちましたか?