Une image intégrale est où chaque pixel représente la somme cumulée d’un pixel d’entrée correspondant avec tous les pixels au-dessus et à gauche du pixel d’entrée. Il permet un calcul rapide des sommations sur les sous-régions d’image. Tout sous-ensemble rectangulaire de cette sous-région peut être évalué en temps constant.
Ce concept a été introduit par Viola & Jones et est également connu sous le nom de Table de surface additionnée. permet un calcul rapide des entités d’image rectangulaires car elles permettent la sommation des valeurs d’image sur n’importe quelle région d’image rectangle en temps constant, c’est-à-dire complexité de calcul de O(1) au lieu de O(n).
Une Image Intégrale est définie comme
La méthode SAT a
- Complexité spatiale: O(M * N)
- Complexité Temporelle pour la requête de Somme de plage: O(1)
- Complexité Temporelle pour mettre à jour une Valeur dans la Matrice: O (M *N)
- Calcule efficacement les statistiques telles que la moyenne, l’écart type, etc. dans n’importe quelle fenêtre rectangulaire
Calcul d’image intégrale
Calcul de surface rapide
Sum = En bas à droite + en haut à gauche — en haut à droite – en bas à gauche
Utilise
- statistiques basées sur la région mesures, par exemple, sommes d’aire, covariance, matrice de co-occurrence
- Mappage de texture
- détection de feature—HAAR
- seuil adaptatif
- correspondance stéréo
- Le concept d’images intégrales peut être facilement étendu au domaine continu (en utilisant des limites) et aux images multidimensionnelles.
- O (1) Bilatéral avec Filtres Spatiaux constants
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);
}
};