積分画像は、各ピクセルが入力ピクセルの上と左のすべてのピクセルと対応する入力ピクセルの累積合計を表す場合です。 それはイメージの部分領域上の総和の急速な計算を可能にする。 このような部分領域の任意の矩形部分集合は、一定時間で評価することができる。
この概念はViola&Jonesによって導入されたもので、総面積表としても知られています。 矩形画像特徴の高速計算を可能にするのは、一定時間内に任意の矩形画像領域にわたる画像値の合計を可能にするためです。 O(n)の代わりにO(1)の計算の複雑さ。
積分画像は次のように定義されます
SATメソッドには
- スペースの複雑さ:O(M*N)
- 範囲合計クエリの時間の複雑さ:O(1)
- 行列内の値を更新する時間の複雑さ:O(1)
- : O(M*N)
- は、任意の矩形ウィンドウ
積分画像計算で平均、標準偏差などの統計を効率的に計算します
高速面積計算
Sum=右下+左上-右上-左下
は
- 領域ベースの統計を使用します 面積和、共分散、共起行列
- テクスチャマッピング
- 特徴ハールの検出
- 適応しきい値
- ステレオ対応
- 積分画像の概念は、連続領域(限界を使用して)および多次元画像に容易に拡張することができる。
- O(1)Bilateral with Constant Spatial Filter
Code
class NumMatrix {
public:
vector<vector<int>> sat;
bool empty=true;
NumMatrix(vector<vector<int>> &img) {
int row = img.size();
if(row == 0) return;
int col = img.size();
if(col == 0) return;
empty = false;
sat = vector<vector<int>>(row + 1, vector<int>(col + 1));
for(int i = 1; i <= row; i++)
for(int j = 1; j <= col; j++)
sat = sat + sat - sat + img;
}
int sumRegion(int row1, int col1, int row2, int col2) {
return empty? 0 : sat - (sat + sat - sat);
}
};