imagine integrală

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

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

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

ecuația pentru calcularea integralei la pixel (x, y)

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ă

tehnica de calcul

calcul rapid al zonei

calculul ariei pentru subregiunea dreptunghiulară a imaginii

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

Lasă un răspuns

Adresa ta de email nu va fi publicată.