Stereo kamera kao senzor u robotici
Autor: Goran Popović
Percepcija okoline je u robotici vrlo bitna komponenta u autonomiji robota. Zadnjih godina su kamere postale jako popularne u robotici jer za relativno nisku cijenu omogućuju dobivanje puno informacija o okolini, što je vrlo privlačno u novije vrijeme kada je te informacije moguće obraditi u stvarnom vremenu. Jedan od optičkih senzora je stereo kamera. Stereo kamere su zapravo dvije obične kamere na stalnom razmaku koje snimaju istu scenu. Prednost takvih kamera u odnosu na standardne je mogućnost dobivanja informacije o dubini scene. Princip rada je dan sljedećom slikom:
Jedna točka u sceni se preslikava na različitim mjestima u slikama na dvije kamere, ovisno o udaljenosti te točke od stereo para. Tako da u slučaju da želimo izračunati dubinu scene koja se preslikala u piksel u_l na lijevoj slici, potrebno je samo naći piksel na desnoj slici u koji se preslikao isti dio scene. Zadatak pronalaženja odgovarajućeg piksela znatno olakšava epipolarno ograničenje. Naime, u slučaju da su slike ispravljene, odnosno da nemaju iskrivljenje zbog leće, za piksel na lijevoj slici će se odgovarajući piksel nalaziti na epipolarnom pravcu, odnosno za odgovarajući piksel nećemo morati pretraživati cijelu sliku već samo točno određen podskup piksela slike. Dodatno, ako su optičke osi kamera paralelne (što na gornjoj slici nije slučaj) epipolarni pravci će postati horizontalni, što u primjeru na donjoj slici znači da ćemo piksel koji odgovara vrhu kuće na lijevoj slici tražiti u istom retku na desnoj slici.
Znajući to, možemo na pojednostavljeni način tražiti odgovarajući piksel tako da na lijevoj slici uzmemo vrijednosti intenziteta slike oko željenog piksela i na desnoj slici na istoj liniji tražimo okolinu koja ima najsličnije vrijednosti. Odmak u horizontalnom smjeru između piksela na lijevoj i desnoj slici se naziva disparitet. Što je predmet bliži kameri, to će disparitet biti veći. Ako za svaki piksel izračunamo disparitet, dobivamo sliku dispariteta prikazanu na sljedećoj slici:
Metode za dobivanje dispariteta se dijele na globalne i lokalne. U lokalnim metodama ćemo, kako je već opisano, uzeti prozor piksela i uspoređivati vrijednosti intenziteta u okolini piksela lijeve slike dok ne nađemo najsličniju okolinu na desnoj slici. Lokalne metode su dobre zbog brzine računanja dispariteta, no također su podložne šumu te su često slike dispariteta dobivene tako pune skokova vrijednosti dispariteta koje ne postoje u sceni. S druge strane, globalne metode osim usporedbe intenziteta piksela također kažnjavaju nagle skokove u slici vrijednosti dispariteta i tako povećavaju robusnost na šum u intenzitetima piksela. Negativna strana globalnih metoda je veća složenost zbog pretpostavke o kontinuiranoj promjeni dispariteta. Metoda računanja dispariteta semi-global matching (SGM) pokušava zadržati dobre karakteristike globalnih metoda kao što je robusnost na šum, a s druge strane smanjiti složenost na način da se skokovi u disparitetu kažnjavaju duž nekoliko diskretnih smjerova na slici.
Tijekom doktorata radio sam na unaprjeđenju metode SGM kojim bi se dodatno smanjila složenost računanja dispariteta u slučaju kada se slike dispariteta računaju za sekvencu slika. Naime kod sekvence slika, novi par stereo slika uglavnom sadrži velik dio scene viđen na prethodnoj slici. Gledajući sve te parove slika odvojeno, odbacujemo izračunate vrijednosti dispariteta, umjesto da ih iskoristimo pri računanju dispariteta za novi stereo par.
Ideja je da iz prethodnog trenutka znamo da je kamera bila u položaju X_t-1 i snima scenu čiji smo disparitet D_t-1 već izračunali. Ako u ovom znamo transformaciju između novog položaja kamere X_t i starog položaja X_t-1, možemo procijeniti novu vrijednost slike dispariteta D_t.
Vrijednosti izračunate slike dispariteta D_t se u idućem koraku koriste kao početna točka za traženje novog dispariteta koji se očekuje unutar područja nesigurnosti od pretpostavljene vrijednosti.
Ideja je prikazana na sljedećim slikama koje predstavljaju moguće vrijednosti dispariteta za jednu liniju piksela na slici. Svaki stupac predstavlja područje dispariteta koje se pretražuje za određeni piksel. Kako SGM ne gleda svaki piksel odvojeno, računanje dispariteta se radi uzimajući u obzir širi kontekst, odnosno jedna linija piksela duž slike. Boja predstavlja sličnost okoline piksela na lijevoj i desnoj slici.
Standardna metoda SGM će za svaki piksel u nizu računati sličnost okoline u punom području pretrage koja je unaprijed zadana. S druge strane predloženi postupak, na desnoj slici, će predvidjeti vrijednost dispariteta, te će se sličnost okoline piksela na lijevoj i desnoj slici računati na suženom području. Tako je složenost postupka računanja dispariteta smanjena. Naravno, neki pikseli iz prethodnog stereo para se nisu pojavili u novom stereo paru i te vrijednosti dispariteta odbacujemo, a za piksele koji su se tek pojavili u novom stereo paru disparitet se računa na način kao u originalnoj metodi SGMa.
Ono što je još ostalo izostavljeno je način dobivanja transformacije između starog i novog položaja kamere. Ako je sve što imamo od senzora sama stereo kamera, transformacija se može dobiti vizualnom odometrijom. Vizualna odometrija je popularan način određivanja gibanja objekata pomoću kamere i dostupno je puno kodova koje rješavaju taj problem. Ukratko, vizualna odometrija je objašnjena kroz sljedeće slike:
Prva i druga slika su uzastopne slike snimljene iz gibajućeg auta. Treća slika predstavlja preklopljene prve dvije slike sa označenim značajkama (engl. points of interest). Značajke su pikseli koji se ističu od ostalih piksela u svojoj okolini. Uz pretpostavku da će se na uzastopnim slikama nalaziti iste značajke, njihovim uparivanjem možemo odrediti gdje se pomaknula određena značajka. Tada, uz pretpostavku da je scena statična i da sva pomicanja značajki dolaze od gibanja kamere, možemo odrediti koliko se pomaknula kamera. (Napomena: na ovim slikama pretpostavka o statičnoj sceni ne stoji, no zbog velikog broja značajku koje su na statičnom dijelu scene, unatoč tome je moguće poprilično točno izračunati pomak kamere)
Više o metodama možete pročitati na https://lamor.fer.hr/images/50020776/Popovic2018.pdf i https://lamor.fer.hr/images/50020776/Fucek2017.pdf, a za pitanja slobodno se javite mailom.
Goran Popović
Doktorski student na Fakultetu elektrotehnike i računarstva, Sveučilišta u Zagrebu
goran.popovic@fer.hr