Integraalikuva

Integraalikuva on, jossa jokainen pikseli edustaa vastaavan tulopikselin kumulatiivista summaa, jossa kaikki pikselit ovat tulopikselin ylä-ja vasemmalla puolella. Sen avulla voidaan laskea nopeasti summat kuvan osa-alueiden yli. Mikä tahansa tällaisen osa-alueen suorakulmainen osajoukko voidaan arvioida vakioajassa.

tämän käsitteen esitteli Viola & Jones, ja se tunnetaan myös nimellä Summed Area Table. mahdollistaa nopean laskennan suorakulmainen kuva ominaisuuksia, koska ne mahdollistavat yhteenlasku kuva-arvot yli suorakulmion kuva-alueella vakioajassa so. laskennallinen monimutkaisuus O (1) sijasta O(n).

Integraalikuva määritellään seuraavasti

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

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

yhtälö integraalin laskemiseksi pikselissä (x, y)

SAT-menetelmällä on

  • Avaruuskompleksisuus: O (M*N)
  • aika kompleksisuus Vaihteluvälisummakyselylle: O (1)
  • aika kompleksisuus matriisin arvon päivittämiseksi: O (M*N)
  • laskee tehokkaasti tilastotiedot kuten keskiarvon, keskihajonnan jne. missä tahansa suorakulmaisessa ikkunassa

Integraalikuvan laskenta

laskentatekniikka

nopea Aluelaskenta

Kuvan suorakaiteen muotoisen ala-alueen pinta-alalaskenta

Sum = Alaoikea + ylävasemmas – yläoikea-alavasemmisto

käyttää

  • aluepohjaista tilastointia mittarit esim. pinta-alan summat, kovarianssi, koekuvausmatriisi
  • Tekstuurikartoitus
  • ominaisuushaarien havaitseminen
  • Adaptiivinen kynnys
  • stereokuvaukset
  • integraalikuvien käsite voidaan helposti laajentaa jatkuvaan verkkotunnukseen (rajoja käyttäen) ja moniulotteisiin kuviin.
  • O (1) kahdenvälinen Vakiotilallisten suodattimien kanssa

koodi

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

Vastaa

Sähköpostiosoitettasi ei julkaista.