Cuprins:

Reconstrucție 3D dintr-o singură fotografie: 8 pași
Reconstrucție 3D dintr-o singură fotografie: 8 pași

Video: Reconstrucție 3D dintr-o singură fotografie: 8 pași

Video: Reconstrucție 3D dintr-o singură fotografie: 8 pași
Video: Cum scrii când începi un caiet nou 2024, Noiembrie
Anonim
Reconstrucție 3D dintr-o singură fotografie
Reconstrucție 3D dintr-o singură fotografie
Reconstrucție 3D dintr-o singură fotografie
Reconstrucție 3D dintr-o singură fotografie

Sarcina reconstrucției 3D este de obicei asociată cu vederea binoculară. Alternativ, puteți muta o singură cameră în jurul obiectului. Între timp, dacă se cunoaște forma obiectului, sarcina poate fi rezolvată dintr-o singură fotografie. Adică aveți o singură cameră și nu se mișcă. Să vedem cum să o facem pas cu pas. Vom folosi Cubul lui Rubik, deoarece este bine standardizat și are un set bogat de caracteristici. Poate fi privit ca un obiect foarte simplu și simultan o construcție complicată. Deci, viziunea cu mașina trebuie să depășească obstacolele substanțiale pentru a finaliza sarcina.

Pasul 1: evaluați complexitatea sarcinii

Evaluează complexitatea sarcinii
Evaluează complexitatea sarcinii
Evaluează complexitatea sarcinii
Evaluează complexitatea sarcinii
Evaluează complexitatea sarcinii
Evaluează complexitatea sarcinii
Evaluează complexitatea sarcinii
Evaluează complexitatea sarcinii

La prima vedere, sarcina este simplă. Găsiți nodul central în care se unesc 3 margini ale cubului și desenați aceste margini. Din coordonatele lor, este posibil să se calculeze distanța de la cameră și unghiurile de rotație. Problema este că aceste linii nu există. Din imaginea din stânga vedeți că fiecare margine este reprezentată de 2 linii paralele. Mai mult, imaginea din dreapta sus arată că fiecare dintre ele este împărțit în 3 segmente. Mai mult, dacă aplicăm o variantă a transformării populare Hough care poate detecta segmente de linie, aceasta efectuează sarcina cu unele erori care fac imposibilă detectarea nodului central. Dacă capetele nu ajung unul la altul, nu există un singur punct. Dacă detectarea depășește sfârșitul, va arăta ca nodul din mijlocul marginii așa cum vedeți pe cele 2 imagini rămase.

Pasul 2: Găsiți abordarea corectă

Găsiți abordarea adecvată
Găsiți abordarea adecvată

Atunci când prea multe detalii fac algoritmii deterministici impracticabili, este timpul să luăm în considerare abordarea probabilistică. Dacă calculăm parametrii medii ai imaginii, erorile lor vor fi diminuate substanțial și, în mod paradoxal, metoda va deveni mai fiabilă. Transformarea Hough standard nu generează segmente de linie. Doar panta sa theta și distanța rho de la coordonatele de origine. Ele formează o parte a spațiului Hough din care se arată mai sus. Aici theta corespunde axei orizontale. Pete luminoase marchează posibile linii pe imagine. Rețineți că mai multe astfel de locuri sunt situate una deasupra celeilalte. Nu este de mirare, pe imaginea noastră există multe linii paralele. Au același theta și rho diferit.

Pasul 3: Calculați histograma Theta

Calculați histograma Theta
Calculați histograma Theta

Să detectăm astfel de clustere. În acest scop vom rezuma citirile pentru toate punctele din spațiul Hough cu același theta. Vedeți histograma corespunzătoare pe ilustrație. Câteva note despre măsurători. Când lucrați cu imagini în coordonate de pixeli, axa X merge ca de obicei, dar Y indică în jos, astfel încât originea coordonatelor este colțul din stânga sus, iar theta ar trebui măsurată din axa X în sensul acelor de ceasornic. Ținând cont de faptul că întreaga imagine a tetei pe imagine este de 180 de grade, puteți verifica aproximativ dacă 3 vârfuri majore reprezintă 3 pante predominante pe imagine.

Pasul 4: Calculați histograma Rho

Calculați histograma Rho
Calculați histograma Rho

Acum, că cunoaștem 3 grupuri principale de linii paralele, să separăm liniile din fiecare dintre ele. Putem repeta aceeași abordare. Să luăm o coloană din spațiul Hough care corespunde unui vârf pe histograma teta. Apoi, vom calcula o altă histogramă în care axa X reprezintă valoarea rho și Y - citiri rezumate pentru acest rho. Evident, suma va fi mai mică, astfel încât această diagramă nu este atât de lină. Cu toate acestea, vârfurile sunt clar vizibile și numărul acestora (7) corespunde exact numărului de linii paralele de pe imaginea sursă. Din păcate, nu toate graficele sunt atât de perfecte, dar principiul este clar.

Pasul 5: Găsiți nodul central

Găsiți nodul central
Găsiți nodul central

Dacă luăm vârful central pe histograma rho pentru fiecare theta, vom obține 3 linii roșii pe imagine. Intersecția lor marchează punctul necesar.

Pasul 6: alegeți din 2 alternative

Alegeți dintre 2 alternative
Alegeți dintre 2 alternative
Alegeți dintre 2 alternative
Alegeți dintre 2 alternative

Vedeți că fiecare linie merge din punctul central în ambele direcții. Cum se determină jumătatea corectă? Să luăm theta3. Să presupunem că luăm partea inferioară a acestei linii. Să calculăm încă un spațiu Hough numai pentru partea de imagine de la 2 linii verzi până la colțul din dreapta sus al imaginii. Apoi creați histograma theta pentru aceasta. Vedeți că al treilea vârf a dispărut complet, așa că am făcut alegerea corectă.

Pasul 7: Determinați colțurile externe

Determinați colțurile externe
Determinați colțurile externe

Acum putem folosi primul și ultimul vârf pe histograme rho, astfel încât să trasăm linii albastre care taie marginile roșii și marchează colțurile de rest. Sarcina este rezolvată.

Pasul 8: Încercați-l în practică

Ilustrațiile pentru acest Instructable au fost create folosind Perception 1.0. Acesta este un software gratuit care utilizează OpenCV - o bibliotecă puternică pentru viziunea computerizată. De asemenea, poate fi legat de WinNB, care a fost folosit în alt meu instructabil, oferind astfel capacitatea de viziune pentru robotică. Puteți descărca ambele programe de pe nbsite. Pentru instalare, rulați doar fișierul exe descărcat. Mai târziu, îl puteți elimina folosind instrumentul standard din Windows. Site-ul conține, de asemenea, resurse despre viziunea computerizată și subiecte conexe. În Perception veți găsi metoda descrisă de reconstrucție 3D, precum și multe altele. Avantajul acestui program este acela că generează rezultatul final împreună cu date intermediare. Puteți cerceta modul în care funcționează viziunea pe computer fără a fi programator. În ceea ce privește introducerea, fiecare metodă a selectat probe tipice special. Desigur, poți să-l folosești și pe al tău. Este posibil să introduceți imagini dintr-un fișier sau din camera computerului. Nu ezitați să mă contactați pentru orice întrebări sau sugestii.

Recomandat: