integrale afbeelding

een integrale afbeelding is waarbij elke pixel de cumulatieve Som vertegenwoordigt van een overeenkomstige invoerpixel met alle pixels boven en links van de invoerpixel. Het maakt een snelle berekening van sommaties over beeldsubregio ‘ s mogelijk. Elke rechthoekige deelverzameling van een dergelijk deelgebied kan in constante tijd worden geëvalueerd.

dit concept werd geïntroduceerd door Viola & Jones en is ook bekend als ‘Summed Area Table’. Sta een snelle berekening van rechthoekige afbeeldingsfuncties toe, omdat ze de optelling van afbeeldingswaarden over elke rechthoekige afbeeldingsregio in constante tijd mogelijk maken, d.w.z. computationele complexiteit van O (1) in plaats van O (n).

Een Integraal Beeld wordt gedefinieerd als

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

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

de Vergelijking voor de berekening van de integraal op pixel (x,y)

De SAT-methode heeft

  • Ruimte Complexiteit: O(M*N)
  • Tijd Complexiteit voor Bereik Som Query: O(1)
  • Tijd Complexiteit voor het Bijwerken van een Waarde in de Matrix: O(M*N)
  • Efficiënt berekent de statistieken zoals gemiddelde, standaarddeviatie, etc in een rechthoekig venster

Integraal Beeld Berekening

Berekening techniek

Snelle Berekening

berekening voor rechthoekige sub-regio van de afbeelding

Sum = rechts Onderaan + links boven — boven-rechts — onder-links

Toepassingen

  • regio gebaseerde statistische metingen zoals oppervlaktesommen, covariantie, Co-occurrence matrix
  • Texture mapping
  • detectie van feature — haar
  • adaptieve drempel
  • stereo-correspondentie
  • het concept van integrale afbeeldingen kan gemakkelijk worden uitgebreid tot continue domeinen (met behulp van limieten) en multidimensionale afbeeldingen.
  • O(1) bilateraal met constante ruimtelijke Filters

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

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.