Sadržaj:

3D rekonstrukcija s jedne fotografije: 8 koraka
3D rekonstrukcija s jedne fotografije: 8 koraka

Video: 3D rekonstrukcija s jedne fotografije: 8 koraka

Video: 3D rekonstrukcija s jedne fotografije: 8 koraka
Video: Разница Чечни с Дагестаном. 2024, Studeni
Anonim
3D rekonstrukcija s jedne fotografije
3D rekonstrukcija s jedne fotografije
3D rekonstrukcija s jedne fotografije
3D rekonstrukcija s jedne fotografije

Zadatak 3D rekonstrukcije obično je povezan s binokularnim vidom. Alternativno, možete pomaknuti jednu kameru oko objekta. U međuvremenu, ako je oblik objekta poznat, zadatak se može riješiti iz jedne fotografije. To znači da imate samo jednu kameru i da se ne pomiče. Pogledajmo kako to učiniti korak po korak. Koristit ćemo Rubikovu kocku jer je dobro standardizirana i ima bogat skup značajki. Može se smatrati vrlo jednostavnim objektom i istodobno kompliciranom konstrukcijom. Dakle, strojni vid mora nadići značajne prepreke kako bi dovršio zadatak.

Korak 1: Procijenite složenost zadatka

Procijenite složenost zadatka
Procijenite složenost zadatka
Procijenite složenost zadatka
Procijenite složenost zadatka
Procijenite složenost zadatka
Procijenite složenost zadatka
Procijenite složenost zadatka
Procijenite složenost zadatka

Na prvi pogled, zadatak je jednostavan. Pronađite središnji čvor gdje se 3 ruba kocke spajaju i nacrtajte te rubove. Iz njihovih koordinata moguće je izračunati udaljenost od kamere i kutove rotacije. Problem je u tome što ove linije ne postoje. Sa lijeve slike vidite da je svaki rub predstavljen s 2 paralelne crte. Nadalje, gornja desna slika pokazuje da je svaki od njih podijeljen u 3 segmenta. Štoviše, primijenimo li varijantu popularne Houghove transformacije koja može otkriti segmente linija, ona izvršava zadatak s nekim pogreškama koje onemogućuju otkrivanje središnjeg čvora. Ako krajevi ne dopiru jedan do drugog, nema jedinstvene točke. Ako otkrivanje prekorači kraj, izgledat će poput čvora na sredini ruba kao što vidite na 2 preostale slike.

Korak 2: Pronađite odgovarajući pristup

Pronađite odgovarajući pristup
Pronađite odgovarajući pristup

Kada previše detalja čini determinističke algoritme nesposobnima za rad, vrijeme je da razmislite o vjerojatnom pristupu. Ako izračunamo prosječne parametre slike, njihove će se pogreške značajno smanjiti i paradoksalno će se metoda pokazati pouzdanijom. Standardna transformacija Hough ne ispisuje segmente linije. Samo njegov nagib theta i udaljenost rho od koordinatnog ishodišta. Oni tvore prostor Hough čiji je dio prikazan gore. Ovdje teta odgovara vodoravnoj osi. Svijetle mrlje označavaju moguće crte na slici. Imajte na umu da se nekoliko takvih mjesta nalazi jedno iznad drugog. Nije ni čudo, na našoj slici postoji mnogo paralelnih linija. Imaju istu tetu i različit rho.

Korak 3: Izračunajte Theta histogram

Izračunajte Theta histogram
Izračunajte Theta histogram

Otkrijmo takve grozdove. U tu ćemo svrhu sažeti očitanja za sve točke u prostoru Hough s istom tetom. Na ilustraciji vidite odgovarajući histogram. Nekoliko napomena o mjerenjima. Kada radite sa slikama u koordinatama piksela, os X ide kao i obično, ali Y pokazuje prema dolje, tako da je ishodište koordinate gornji lijevi kut i theta se treba mjeriti od osi X u smjeru kazaljke na satu. Imajući na umu da je cijeli zaokret tete na slici 180 stupnjeva, možete otprilike provjeriti da 3 velika vrha predstavljaju 3 dominantna nagiba na slici.

Korak 4: Izračunajte Rho histogram

Izračunajte Rho histogram
Izračunajte Rho histogram

Sada kada znamo 3 glavne skupine paralelnih linija, odvojimo linije unutar svake od njih. Isti pristup možemo ponoviti. Uzmimo stupac iz prostora Hough koji odgovara jednom vrhu na theta histogramu. Zatim ćemo izračunati drugi histogram gdje X os predstavlja rho vrijednost, a Y - sažeta očitanja za ovaj rho. Očito će zbroj biti manji pa ovaj grafikon nije tako gladak. Ipak, vrhovi su jasno vidljivi i njihov broj (7) točno odgovara broju paralelnih linija na izvornoj slici. Nažalost, nisu svi grafikoni tako savršeni, ali princip je jasan.

Korak 5: Pronađite središnji čvor

Pronađite središnji čvor
Pronađite središnji čvor

Uzmemo li središnji vrh na rho histogramu za svaku tetu, dobit ćemo 3 crte koje su na slici crvene. Njihovo sjecište označava potrebnu točku.

Korak 6: Odaberite jednu od 2 alternative

Odaberite jednu od 2 alternative
Odaberite jednu od 2 alternative
Odaberite jednu od 2 alternative
Odaberite jednu od 2 alternative

Vidite da svaka linija ide od središnje točke u oba smjera. Kako odrediti ispravnu polovicu? Uzmimo theta3. Pretpostavimo da uzmemo donji dio ove crte. Izračunajmo još jedan Hough prostor samo za dio slike od 2 zelene linije do gornjeg desnog kuta slike. Zatim za to izradite theta histogram. Vidite da je treći vrh potpuno nestao pa smo napravili pravi izbor.

Korak 7: Odredite vanjske kutove

Odredite vanjske kutove
Odredite vanjske kutove

Sada možemo koristiti prvi i posljednji vrh na rho histogramima kako bismo nacrtali plave crte koje presijecaju crvene rubove i označavaju ostale uglove. Zadatak je riješen.

Korak 8: Isprobajte u praksi

Ilustracije za ovaj Instructable nastale su pomoću Perception 1.0. Ovo je besplatni softver koji koristi OpenCV - moćnu biblioteku za računalni vid. Također se može povezati s WinNB -om koji se koristio u mom drugom Instructable -u, čime je omogućen vid za robotiku. Oba programa možete preuzeti sa nbsite. Za instalaciju samo pokrenite preuzetu exe datoteku. Kasnije ga možete ukloniti pomoću standardnog alata u sustavu Windows. Stranica također sadrži izvore o računalnom vidu i srodnim temama. U Perceptionu ćete pronaći opisanu metodu 3D rekonstrukcije, kao i mnoge druge. Prednost ovog programa je u tome što daje konačni rezultat zajedno s posrednim podacima. Vi ste u mogućnosti istražiti kako funkcionira računalni vid, a da niste programer. Što se tiče unosa, svaka metoda ima posebno odabrane tipične uzorke. Naravno, možete koristiti i vlastiti. Moguće je unositi slike iz datoteke ili iz kamere računala. Slobodno me kontaktirajte s bilo kakvim pitanjima ili prijedlozima.

Preporučeni: