Una imagen integral es donde cada píxel representa la suma acumulada de un píxel de entrada correspondiente con todos los píxeles arriba y a la izquierda del píxel de entrada. Permite el cálculo rápido de sumaciones sobre subregiones de imagen. Cualquier subconjunto rectangular de dicha subregión puede evaluarse en tiempo constante.
Este concepto fue introducido por Viola & Jones y también se conoce como Tabla de área Sumada. permitir el cálculo rápido de características de imagen rectangulares, ya que permiten la suma de valores de imagen sobre cualquier región de imagen rectangular en tiempo constante, p. ej. complejidad computacional de O(1) en lugar de O (n).
Una imagen integral se define como
El método SAT tiene
- Complejidad de espacio: O(M*N)
- Complejidad de tiempo para la Consulta de Suma de rango: O (1)
- Complejidad de tiempo para Actualizar un Valor en Matriz: O (M*N)
- Calcula eficientemente las estadísticas como media, desviación estándar, etc. en cualquier ventana rectangular
Cálculo de imagen integral
Cálculo rápido de área
Suma = Inferior derecha + superior izquierda-superior derecha-inferior izquierda
Usos
- estadística basada en regiones mide, por ejemplo, sumas de área, covarianza, matriz de co-ocurrencia
- Mapeo de texturas
- detección de HAAR de características
- umbral adaptativo
- correspondencia estéreo
- El concepto de imágenes integrales se puede extender fácilmente a imágenes de dominio continuo (utilizando límites) y multidimensionales.
- O (1) Bilateral con Filtros Espaciales Constantes
Código
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);
}
};