Obsah:

3D rekonštrukcia z jednej fotografie: 8 krokov
3D rekonštrukcia z jednej fotografie: 8 krokov

Video: 3D rekonštrukcia z jednej fotografie: 8 krokov

Video: 3D rekonštrukcia z jednej fotografie: 8 krokov
Video: Установка маяков под штукатурку. Углы 90 градусов. #12 2024, Júl
Anonim
3D rekonštrukcia z jednej fotografie
3D rekonštrukcia z jednej fotografie
3D rekonštrukcia z jednej fotografie
3D rekonštrukcia z jednej fotografie

Úloha 3D rekonštrukcie je zvyčajne spojená s binokulárnym videním. Alternatívne môžete okolo objektu pohybovať jedinou kamerou. Medzitým, ak je známy tvar objektu, môže byť úloha vyriešená z jednej fotografie. To znamená, že máte iba jednu kameru a nepohybuje sa. Pozrime sa, ako to urobiť krok za krokom. Budeme používať Rubikovu kocku, pretože je dobre štandardizovaná a má bohatú sadu funkcií. Možno ho považovať za veľmi jednoduchý predmet a súčasne za komplikovanú konštrukciu. Na dokončenie úlohy musí teda strojové videnie prekonať podstatné prekážky.

Krok 1: Zhodnoťte zložitosť úlohy

Vyhodnoťte zložitosť úlohy
Vyhodnoťte zložitosť úlohy
Vyhodnoťte zložitosť úlohy
Vyhodnoťte zložitosť úlohy
Vyhodnoťte zložitosť úlohy
Vyhodnoťte zložitosť úlohy
Vyhodnoťte zložitosť úlohy
Vyhodnoťte zložitosť úlohy

Na prvý pohľad je úloha jednoduchá. Nájdite centrálny uzol, kde sa spoja 3 hrany kocky, a nakreslite tieto hrany. Z ich súradníc je možné vypočítať vzdialenosť od kamery a uhly natočenia. Problém je v tom, že tieto riadky neexistujú. Z ľavého obrázku vidíte, že každý okraj je reprezentovaný 2 rovnobežnými čiarami. Ďalej pravý horný obrázok ukazuje, že každý z nich je rozdelený na 3 segmenty. Navyše, ak použijeme variant populárnej Houghovej transformácie, ktorá dokáže detekovať úsečky, vykoná úlohu s niektorými chybami, ktoré znemožňujú detekciu centrálneho uzla. Ak konce nedosiahnu jeden na druhého, neexistuje jediný bod. Ak detekcia prestrelí koniec, bude to vyzerať ako uzol v strede okraja, ako vidíte na 2 zostávajúcich obrázkoch.

Krok 2: Nájdite správny prístup

Nájdite správny prístup
Nájdite správny prístup

Keď príliš veľa podrobností robí deterministické algoritmy nepoužiteľnými, je načase zvážiť pravdepodobnostný prístup. Ak vypočítame priemerné parametre obrázku, ich chyby sa výrazne zmenšia a metóda paradoxne dopadne spoľahlivejšie. Štandardná Houghova transformácia nevytvára riadkové segmenty. Iba jeho sklon theta a vzdialenosť rho od súradnicového pôvodu. Tvoria časť priestoru Hough, ktorá je zobrazená vyššie. Tu theta zodpovedá horizontálnej osi. Svetlé body označujú možné čiary na obrázku. Všimnite si toho, že niekoľko takýchto miest je umiestnených nad sebou. Niet divu, na našom obrázku je veľa rovnobežných čiar. Majú rovnakú thetu a rôzne rho.

Krok 3: Vypočítajte histogram Theta

Vypočítajte histogram Theta
Vypočítajte histogram Theta

Poďme zistiť také zhluky. Za týmto účelom zhrnieme hodnoty všetkých bodiek v priestore Hough s rovnakou theta. Na obrázku vidíte príslušný histogram. Niekoľko poznámok k meraniam. Keď pracujete s obrázkami v súradniciach pixelov, os X ide ako obvykle, ale Y smeruje nadol, takže začiatok súradnice je v ľavom hornom rohu a theta by sa mala merať od osi X v smere hodinových ručičiek. Majte na pamäti, že celý záber théta na obrázku je 180 stupňov, môžete približne skontrolovať, či 3 hlavné vrcholy predstavujú 3 prevládajúce svahy na obrázku.

Krok 4: Vypočítajte Rho histogram

Vypočítajte Rho histogram
Vypočítajte Rho histogram

Teraz, keď poznáme 3 hlavné zhluky rovnobežných čiar, oddeľme čiary v každom z nich. Rovnaký prístup môžeme zopakovať. Zoberme si stĺpček z Houghovho priestoru, ktorý zodpovedá jednému vrcholu na histograme theta. Ďalej vypočítame ďalší histogram, kde os X predstavuje hodnotu rho a Y - zhrnuté hodnoty pre toto rho. Suma bude očividne menšia, takže tento graf nie je taký hladký. Napriek tomu sú vrcholy jasne viditeľné a ich počet (7) presne zodpovedá počtu rovnobežných čiar na zdrojovom obrázku. Bohužiaľ, nie všetky grafy sú také dokonalé, ale princíp je jasný.

Krok 5: Nájdite centrálny uzol

Nájdite centrálny uzol
Nájdite centrálny uzol

Ak vezmeme centrálny vrchol na rho histograme pre každú thetu, dostaneme 3 riadky, ktoré sú na obrázku červené. Ich križovatka označuje potrebný bod.

Krok 6: Vyberte si z 2 alternatív

Vyberte si z 2 alternatív
Vyberte si z 2 alternatív
Vyberte si z 2 alternatív
Vyberte si z 2 alternatív

Vidíte, že každý riadok ide z centrálneho bodu v oboch smeroch. Ako určiť správnu polovicu? Zoberme si theta3. Predpokladajme, že vezmeme spodnú časť tohto riadku. Vypočítajme ďalší Hough priestor iba pre časť obrázku od 2 zelených čiar do pravého horného rohu obrázku. Potom preň vytvorte theta histogram. Vidíte, že tretí vrchol úplne zmizol, takže sme urobili správnu voľbu.

Krok 7: Určte vonkajšie rohy

Určte vonkajšie rohy
Určte vonkajšie rohy

Teraz môžeme použiť prvý a posledný vrchol na rho histogramoch, aby sme nakreslili modré čiary, ktoré prerušia červené okraje a označia ostatné rohy. Úloha je vyriešená.

Krok 8: Skúste to v praxi

Ilustrácie pre tento návod boli vytvorené pomocou programu Perception 1.0. Toto je bezplatný softvér, ktorý používa OpenCV - výkonnú knižnicu pre počítačové videnie. Tiež môže byť prepojený s WinNB, ktorý bol použitý v mojom inom Instructable, čím poskytuje schopnosť videnia pre robotiku. Oba programy si môžete stiahnuť z nbsite. Na inštaláciu stačí spustiť stiahnutý súbor exe. Neskôr ho môžete odstrániť pomocou štandardného nástroja systému Windows. Táto stránka obsahuje aj zdroje o počítačovom videní a súvisiacich témach. V Perception nájdete popísaný spôsob 3D rekonštrukcie a mnoho ďalších. Výhodou tohto programu je, že prináša konečný výsledok spolu s medziľahlými údajmi. Môžete skúmať, ako funguje počítačové videnie, bez toho, aby ste boli programátorom. Pokiaľ ide o vstup, každá metóda špeciálne vybrala typické vzorky. Môžete samozrejme použiť aj svoje vlastné. Obrázky je možné vkladať zo súboru alebo z fotoaparátu počítača. V prípade akýchkoľvek otázok alebo návrhov ma neváhajte kontaktovať.

Odporúča: