Image intégrale

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

https://computersciencesource.files.wordpress.com/2011/05/sxyeq.png

https://computersciencesource.files.wordpress.com/2011/05/sxyeq.png

Équation pour calculer l’intégrale au pixel (x, y)

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

Technique de calcul

Calcul de surface rapide

Calcul de la surface pour la sous-région rectangulaire de l’image

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);
}
};

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.