Teoretický rozbor jednoduchého dálkoměru

Obraz z kamery je 2D projekce 3D světa a každý bod x v obraze je projekcí skutečného bodu X ležícího kdekoliv na polopřímce (paprsku) vedoucí ze středu kamery C bodem x. Vzdálenost |CX| nelze z jednoho obrazu zjistit (pokud nemáme další informace o pozorované scéně). Pro změření vzdálenosti potřebujeme více obrazů z různých pozic. Pro zjednodušení nás zajímá pouze vodorovná vzdálenost.

AVbot má dva stupně volnosti. Posuvem d a otočením stolku θ můžete řídit relativní posun i otočení mezi jednotlivými pozicemi. Na robotu je přimontovaná kamera o neznámé ohniskové vzdálenosti f.
Předpoklad 1: osa pohybu robota a osa otáčení se protínají a střed kamery C leží v ose otáčení.

Na začátku se robot nachází v pozici [d0,θ0] a v zorném poli jeho kamery je bod X, známe obrazové souřadnice jeho projekce do kamery. Úkolem je změřit vodorovnou vzdálenost od kamery v počáteční pozici C0 k bodu X. Předpokládejte, že po pohybu robota do pozice [di,θi] budeme opět schopni nalézt projekci bodu X v obraze.

Nápověda

Uvažujte pouze v rovině, ne v prostoru – robot se pohybuje pouze v rovině a nás zajímá jen vodorovná vzdálenost. Vystačíte se standardní geometrií, teorii z robotiky nemusíte použít. Ke zmeřenému bodu v obrazu kamery potřebujeme umět přiřadit paprsek v prostoru. Souřadnice obrazového bodu v pixelech bez znalosti ohniskové vzdálenosti paprsek nedají, s vyjímkou jednoho bodu, kde paprsek nezávisí na ohniskové vzdálenosti. Nakreslete si popisovanou situaci, bude vám zřejmé, který bod to je. Nezapomeňte, že kamerou můžete otáčet a můžete tedy dostat měřený bod v obraze tam, kam potřebujete.

Odevzdávaná úloha

Upřesnění: Jde o teoretický rozbor, stačí napsat postup (formát txt/html/pdf). Předpokládejte, že metodu/funkci pro nalezení měřeného bodu v obraze máte k dispozici. S robotem zatím nijak pracovat nemusíte, ani nemusíte v popisu používat přesné příkazy pro jeho ovládání, stačí slovní popis.

Součástí řešení je náčrtek (můžete ho udělat na papíře a vyfotit nebo naskenovat) se zakreslenými pozicemi robota, vzdálenostmi a úhly. Zapište do něj označení, které použijite.

  1. [3b] Navrhněte postup pro změření vzdálenosti |C0X| za předpokladu, že známe počáteční otočení θ0 vzhledem k ose pohybu robota.
  2. [4b] Upravte postup pro případ, kdy θ0 je neznámé a známe pouze relativní otočení Δθi=θiθ0.
    (Stačí sestavit soustavu rovnic, která se bude řešit numericky, není nutné odvodit analytické řešení.) 
  3. [1b] Jaký je minimální počet posunutí pro postup (1) a (2)? 
  4. [1b] Vysvětlete, jak by postup zjednodušila znalost ohniskové vzdálenosti kamery f. 
  5. [1b] Vysvětlete, kde využíváte Předpoklad 1.