Patch detection, tracking

Pro změření vzdálenosti 3D bodu X potřebujeme znát jeho projekce xi z více pozic kamery, tj. pro danou projekci x0 v obraze z počáteční pozice musíme být schopni nalézt v novém obraze z i-té pozice bod xi, který je projekcí stejného bodu X. Obraz samotného bodu nemá dostatek informace, abychom jej mohli opakovaně nalézt, proto pracujeme i s okolím bodu (patch) o ploše řádově stovek pixelů. Úlohu můžeme chápat jako:

Sledování předpokládá pouze omezený pohyb sledovaného patche mezi následujícími obrazy. Tento předpoklad můžeme splnit, protože scéna je statická a pohyb v obraze vzniká změnou pozice kamery, kterou máme pod kontrolou.

Sledování metodou KLT

Implementujte metodu sledování Kanade-Lucas(-Tomasi) (KLT) podle přednášky KLT. Odvození v přednášce je provedno pro obecnou transformaci W(x;p), kde x je pozice v předchozím obraze a p vektor parametrů transformace. Pak je uveden speciální případ, kdy uvažujeme pouze posunutí (translation) sledované oblasti. V naší úloze posunutí postačuje. Pro lepší orientaci v rovnicích si u každého vektorového/maticového členu uvědomte (případně připište) rozměr vektoru/matice.

Potřebný gradient obrazu získáte např. diskrétní konvolucí (funkce conv2) s maskou [1 0 -1] (platí pro gradient v ose x, pro gradient v ose y musí být maska transponovaná). Uvědomte si, jak se konvoluce chová na krajích obrazu – vyhněte se doplňování okrajů obrazu nulami, gradient na těchto okrajích bude špatně a chyba se promítne do celého výpočtu. Zkontrolujte gradient vizuálně – měly by být vidět hrany v odpovídajícím směru.

Odevzdávaná úloha

  1. Navrhněte postup pro označení měřeného bodu (kliknutí na pozici v obrazu kamery, umístění terčíku do daného bodu ...)
  2. Pořiďte si testovací data, nejdříve nejlépe syntetická (2D posunutí obrazu v počítači), poté skutečné obrazy z různých pozic kamery. [1b]
  3. Implementujte metodu pro detekci/sledování měřeného bodu v obraze (výběr jiné metody než KLT předem konzultujte na cvičení). [7b]
  4. Otestujte vaši implementaci pro blízký bod (<50cm) a vzdálený bod (>3m): v pravidelných rozestupech po celém rozsahu posunu AVbot-a nasnímejte obrazy, v prvním zadejte pozici měřeného bodu a nechte ho nalézt v dalších. [2b]

Není cílem mít perfektní sledování, stačí metoda, která bude za určitých splnitelných podmínek fungovat a tyto podmínky uvést.