Obsah:
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Ú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
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
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
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
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
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
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
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ť.