Kazalo:

3D rekonstrukcija iz ene fotografije: 8 korakov
3D rekonstrukcija iz ene fotografije: 8 korakov

Video: 3D rekonstrukcija iz ene fotografije: 8 korakov

Video: 3D rekonstrukcija iz ene fotografije: 8 korakov
Video: Секрет "невозможных" статуй из мрамора 2024, November
Anonim
3D rekonstrukcija iz ene fotografije
3D rekonstrukcija iz ene fotografije
3D rekonstrukcija iz ene fotografije
3D rekonstrukcija iz ene fotografije

Naloga 3D rekonstrukcije je običajno povezana z binokularnim vidom. Druga možnost je, da premaknete eno kamero okoli predmeta. Če pa je oblika predmeta znana, se lahko naloga reši iz ene same fotografije. To pomeni, da imate samo eno kamero in se ne premika. Poglejmo, kako to storiti korak za korakom. Uporabili bomo Rubikovo kocko, ker je dobro standardizirana in ima bogat nabor funkcij. Lahko ga obravnavamo kot zelo preprost objekt in hkrati zapleteno konstrukcijo. Strojni vid mora torej preseči znatne ovire, da lahko dokonča nalogo.

1. korak: Ocenite zapletenost naloge

Ocenite zapletenost naloge
Ocenite zapletenost naloge
Ocenite zapletenost naloge
Ocenite zapletenost naloge
Ocenite zapletenost naloge
Ocenite zapletenost naloge
Ocenite zapletenost naloge
Ocenite zapletenost naloge

Na prvi pogled je naloga preprosta. Poiščite osrednji vozel, kjer se 3 robovi kocke združijo, in narišite te robove. Iz njihovih koordinat je mogoče izračunati razdaljo od kamere in kote vrtenja. Težava je v tem, da te vrstice ne obstajajo. Na levi sliki vidite, da je vsak rob predstavljen z 2 vzporednima črtama. Poleg tega zgornja desna slika prikazuje, da je vsak od njih razdeljen na 3 segmente. Poleg tega, če uporabimo varianto priljubljene transformacije Hough, ki lahko zazna odseke linij, opravi nalogo z nekaterimi napakami, ki onemogočajo zaznavanje osrednjega vozla. Če se konci ne dosegata, ni ene same točke. Če zaznavanje preseže konec, bo videti kot vozel na sredini roba, kot vidite na 2 preostalih slikah.

2. korak: Poiščite ustrezen pristop

Poiščite ustrezen pristop
Poiščite ustrezen pristop

Kadar zaradi preveč podrobnosti deterministični algoritmi ne delujejo, je čas, da razmislimo o verjetnostnem pristopu. Če izračunamo povprečne parametre slike, se bodo njihove napake znatno zmanjšale in paradoksalno se bo metoda izkazala za zanesljivejšo. Standardna pretvorba Hough ne oddaja segmentnih vrstic. Samo njen naklon theta in razdalja rho od koordinatnega izvora. Tvorijo vesoljski del, katerega del je prikazan zgoraj. Tu theta ustreza vodoravni osi. Svetle pike označujejo možne črte na sliki. Upoštevajte, da se več takih mest nahaja eno nad drugo. Ni čudno, na naši podobi je veliko vzporednih črt. Imajo isto teto in različno rho.

3. korak: Izračunajte Theta histogram

Izračunajte Theta histogram
Izračunajte Theta histogram

Odkrijmo takšne grozde. V ta namen bomo povzeli odčitke za vse pike v prostoru Hough z isto teto. Na sliki vidite ustrezen histogram. Nekaj opomb o meritvah. Ko delate s slikami v koordinatah slikovnih pik, os X poteka kot običajno, vendar Y kaže navzdol, tako da je izvor koordinat zgornji levi kot, theta pa je treba meriti od osi X v smeri urinega kazalca. Če upoštevate, da je celoten premik theta na sliki 180 stopinj, lahko približno preverite, ali 3 večji vrhovi predstavljajo 3 prevladujoča pobočja na sliki.

4. korak: Izračunajte Rho histogram

Izračunajte Rho histogram
Izračunajte Rho histogram

Zdaj, ko poznamo 3 glavne skupine vzporednih črt, ločimo črte znotraj vsake od njih. Lahko ponovimo isti pristop. Vzemimo stolpec iz prostora Hough, ki ustreza enemu vrhu na theta histogramu. Nato bomo izračunali še en histogram, kjer os X predstavlja vrednost rho in Y - povzetek odčitkov za ta rho. Očitno bo vsota manjša, zato ta grafikon ni tako gladek. Kljub temu so vrhovi jasno vidni in njihovo število (7) natančno ustreza številu vzporednih črt na izvorni sliki. Na žalost niso vse lestvice tako popolne, vendar je načelo jasno.

5. korak: Poiščite osrednji vozel

Poiščite osrednji vozel
Poiščite osrednji vozel

Če vzamemo osrednji vrh rho histograma za vsako teto, bomo dobili 3 črte, ki so na sliki rdeče. Njihovo presečišče označuje potrebno točko.

Korak 6: Izberite med 2 možnostmi

Izberite med 2 možnostmi
Izberite med 2 možnostmi
Izberite med 2 možnostmi
Izberite med 2 možnostmi

Vidite, da vsaka črta gre od osrednje točke v obe smeri. Kako določiti pravilno polovico? Vzemimo teta3. Recimo, da vzamemo spodnji del te vrstice. Izračunajmo še en Hough prostor le za del slike od 2 zelenih črt do zgornjega desnega kota slike. Nato zanj ustvarite histagram theta. Vidite, da je tretji vrh popolnoma izginil, zato smo se pravilno odločili.

7. korak: Določite zunanje vogale

Določite zunanje vogale
Določite zunanje vogale

Zdaj lahko na rho histogramih uporabimo prvi in zadnji vrh, da narišemo modre črte, ki prerežejo rdeče robove in označijo preostale vogale. Naloga je rešena.

8. korak: Poskusite v praksi

Ilustracije za ta Instructable so bile ustvarjene z uporabo Perception 1.0. To je brezplačna programska oprema, ki uporablja OpenCV - zmogljivo knjižnico za računalniški vid. Lahko je tudi povezan z WinNB -jem, ki je bil uporabljen v mojem drugem Instructable -u in tako zagotavlja robotsko robotsko vizijo. Oba programa lahko prenesete s spletnega mesta nbsite. Za namestitev preprosto zaženite preneseno exe datoteko. Kasneje ga lahko odstranite s standardnim orodjem Windows. Spletno mesto vsebuje tudi vire o računalniškem vidu in sorodnih temah. V Perceptionu boste našli opisano metodo 3D rekonstrukcije in številne druge. Prednost tega programa je, da prikaže končni rezultat skupaj z vmesnimi podatki. Lahko raziskujete, kako deluje računalniški vid, ne da bi bili programer. Kar zadeva vnos, ima vsaka metoda posebej izbrane tipične vzorce. Seveda lahko uporabite tudi svojega. Slike je mogoče vnesti iz datoteke ali iz računalniške kamere. Za kakršna koli vprašanja ali predloge me kontaktirajte.

Priporočena: