o imagine integrală este locul în care fiecare pixel reprezintă suma cumulativă a unui pixel de intrare corespunzător cu toți pixelii deasupra și stânga pixelului de intrare. Permite calcularea rapidă a sumelor peste subregiuni de imagine. Orice subset dreptunghiular al unei astfel de subregiuni poate fi evaluat în timp constant.
acest concept a fost introdus de Viola & Jones și este, de asemenea, cunoscut sub numele de tabelul zonei însumate. permite calcularea rapidă a caracteristicilor imaginii dreptunghiulare, deoarece acestea permit însumarea valorilor imaginii pe orice regiune a imaginii dreptunghiulare în timp constant, adică. complexitatea computațională a O(1) în loc de O (n).
o imagine integrală este definită ca
metoda SAT are
- complexitatea spațiului: O (M*N)
- complexitatea timpului pentru interogarea sumei intervalului: o (1)
- complexitatea timpului pentru a actualiza o valoare în matrice: O(M * N)
- calculează eficient Statisticile cum ar fi media, deviația standard, etc în orice fereastră dreptunghiulară
calcul imagine integrală
calcul rapid al zonei
Sum = dreapta jos + stânga sus — dreapta sus-stânga jos
utilizează
- statistică bazată pe regiune măsuri de ex. sume de suprafață, covarianță, matrice de co-apariție
- cartografiere textură
- detectarea feature — HAAR
- Prag adaptiv
- corespondență stereo
- conceptul de imagini integrale poate fi extins cu ușurință la domeniul continuu (folosind limite) și imagini multidimensionale.
- O(1) Bilateral cu filtre spațiale constante
Cod
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);
}
};