Phase correlation

Fázová korelace je metoda registrace obrazu. K vyplňování děr není primárně určena, ale je možno ji k tomuto účelu využít. Nejprve je třeba pixely díry zahladit. K tomu slouží jednoduchá třída CircleIterator, která postupně v soustředných "kruzích" projde všechny pixely označené jako díry a ze známých pixelů v okolí vyplní pixel v obrázku. V masce ovšem pixel zůstane označen jako maskovaný. V další fázi je pro každý maskovaný pixel vytvořen obrázek sestávajícího z malého okolí tohoto pixelu (rozměry okolí odpovídají rozměrům kontextového okénka) a pomocí knihovny FFTW je spočteno jeho spektrum. To je spočteno i pro původní obrázek – se zahlazenými dírami.

Ze získaných spekter obou obrázku je spočteno tzv. cross power spectrum a je provedena korelace. Následně je získán určitý malý počet nejvyšších hodnot, které jsou vybrány za kandidáty na nejlepší shodu. Okolí těchto pixelů je pak porovnáváno s okolím hledaného pixelu a pixel s nejvyšší mírou shody je vybrán. Mezi kandidáty je zpravidla s nejvyšší hodnotou zastoupen i původní pixel v obrázku, který je ovšem z dalšího zpracování vyloučen (jinak by byl hledaný pixel nahrazen sám sebou).

Složitost takového postupu není prakticky závislá na velikosti kontextového okénka – počet provedených fourierových transformací je úměrný počtu pixelů díry a samotná FFT pak rozměrům obrázku. U nižších rozměrů kontextových okének proto hrubá sílá – základní Non Parametric Sampling – dosahuje lepších časů. Se zvětšující se velikostí okénka ovšem doba výpočtu podstatně vzrůstá (zejm. u vyšších rozlišení obrázků), zatímco u fázové korelace (v tabulce a v grafech označované jako FFT) zůstává prakticky stejná.

Provedl jsem měření na dvou obrázcích, první o rozlišení 200×200 px, druhý 400×276. Velikost kontextového okénka se měnila od 13 do 23 px. Výsledky uvádím v tabulkách a graficky. Obrázky byly před počítáním korelace převedeny na černobílé.

Obrázek o rozlišení 200×200 px

Velikost okna Doba výpočtu
NPS FFT
13 px 1 s 2 s
15 px 2 s 2 s
17 px 3 s 2 s
19 px 5 s 2 s
21 px 7 s 2 s
23 px 10 s 2 s


Obrázek 200×200 px, díra 10×10 px.

Velikost okna Doba výpočtu
NPS FFT
13 px 5 s 9 s
15 px 8 s 9 s
17 px 10 s 9 s
19 px 14 s 9 s
21 px 20 s 9 s
23 px 25 s 9 s


Obrázek 200×200 px, díra 20×20 px.

Velikost okna Doba výpočtu
NPS FFT
13 px 14 s 20 s
15 px 17 s 20 s
17 px 29 s 20 s
19 px 38 s 20 s
21 px 49 s 20 s
23 px 54 s 20 s


Obrázek 200×200 px, díra 30×30 px.

Obrázek o rozlišení 400×276 px

Velikost okna Doba výpočtu
NPS FFT
13 px 7 s 15 s
15 px 12 s 15 s
17 px 18 s 15 s
19 px 22 s 15 s
21 px 28 s 15 s
23 px 33 s 15 s


Obrázek 400×276 px, díra 10×10 px.

Velikost okna Doba výpočtu
NPS FFT
13 px 17 s 46 s
15 px 25 s 46 s
17 px 32 s 46 s
19 px 41 s 46 s
21 px 52 s 46 s
23 px 65 s 46 s


Obrázek 400×276 px, díra 20×20 px.

Velikost okna Doba výpočtu
NPS FFT
13 px 27 s 95 s
15 px 38 s 95 s
17 px 59 s 95 s
19 px 87 s 95 s
21 px 112 s 95 s
23 px 146 s 95 s


Obrázek 400×276 px, díra 30×30 px.

Zdá se tedy, že se vzrůstající velikostí obrázku a tedy i dobou výpočtu FFT, se hranice velikosti kontextového okénka, od které je rychlejší použít místo hrubé síly fázovou korelaci, posouvá směrem k vyšším hodnotám.

napsáno 2. 5. 2011 | 9142× okometováno | ↑ nahoru

Komentáře