Automatický odhad homografie metodou RANSAC

V této úloze se vrátíme k odhadu homografie z první úlohy, ale korespondence místo ručního označení nalezneme KLT trackerem spuštěnou na více bodech (řádově desítky) prvního obrazu. V nalezených korespondencích budou chybné páry, tzv. outliery. Protože odhad homografie metodou nejmenších čtverců funguje spolehlivě pouze na datech bez outlierů, obalíme ho metodu RANSAC z přednášky pro nalezení řešení podporovaného největší podmnožinou korespondencí.

Postup

Stáhněte si obrazy sejmuté AVbotem během posunu AVbot-translation-sequence.zip, jméno obrazu odpovídá pozici v milimetrech. Nejdříve začněte s dvojicí obrazů, mezi nimiž je malý posun (<=10mm). Pokud vám přestanou fungovat funkce rgb2gray(), im2double(), použijte pro převod obrazu na šedotónový jednoduché průměrování přes kanály: im=mean(double(im)/255,3).

  1. zvolení n sledovaných bodů x1 v prvím obraze
  2. nalezení pozice x2 v druhém obraze KLT trackerem pro všechny body x1
  3. RANSACem odhadněte homografii, v každé iteraci k:
    1. vyberte čtveřici Sk z množiny U korespondujícíh párů x1x2, můžete použít první čtyři indexy z permutace randperm()
    2. spočítejte z nich homografii Ak vaší funkcí calcA() (Ak odpovídá parametrům modelu θk z přednášky)
    3. transformujte všechny body x1 transformací Ak a najděte support-set, tj. množinu bodů v toleranci tol od korespondujících bodů x2
    4. pamatujte si homografii A* s dosud největším support-setem (jeho velikost odpovídá ceně Ck z přednášky)
    5. RANSAC ukončete pokud k > K, kde K je adaptivně snižovaný (vždy při nalezení nového největšího support-setu) počet iterací potřebný k vybrání čtveřice bez outlierů s pravděpodobností P, viz vzorec z přednášky
  4. pro kontrolu transformujte funkcí imtransform() první obraz nejlepší homografií A* a zobrazte na něm posuny bodů funcí quiver()
vstupní dvojice obrazů 320×240px sejmutá AVbot-em z pozic [0mm,0st] a [20mm,0st]
posun na 35 bodech nalezený KLT trackerem s patchem 45×45px, výběr support-setu (červené vektory) RANSACem s tolerancí 0.5px

všimněte si, že většina korespondencí byla nalezena špatně, přesto RANSAC našel správný support-set
homografie aplikovaná na první obraz, srovnání s použitím RANSACu a bez něj (LSE na všech bodech)

modré vektory ukazují směr posunu

Odevzdávaná úloha

  1. Implementujte sledování více bodů rovnoměrně rozložených po obraze. [3b]
  2. Zobrazte posuny bodů. [1b]
  3. Implementujte robustní odhad homografie metodou RANSAC. [3b]
  4. Ukončujte RANSAC při dosažení požadované pravděpodobnosti nalezení nekontaminovaného odhadu, viz Postup (3.5). [1b]
  5. Otestujte svůj odhad homografie: zobrazte první obraz transformovaný touto homografií, zobrazte na něm posuny bodů (teď už vypočtené z homografie, ne zjištěné sledováním). Do jaké velikosti baseline odhad funguje? [1b]
  6. Pokuste se změnou vhodného parametru zvýšit možnou velikost baseline. [1b]