Imagen integral

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

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

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

Ecuación para calcular la integral en píxel (x,y)

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

Técnica de cálculo

Cálculo rápido de área

Cálculo de área para la subregión rectangular de la imagen

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada.