Cuprins:
- Pasul 1: evaluați complexitatea sarcinii
- Pasul 2: Găsiți abordarea corectă
- Pasul 3: Calculați histograma Theta
- Pasul 4: Calculați histograma Rho
- Pasul 5: Găsiți nodul central
- Pasul 6: alegeți din 2 alternative
- Pasul 7: Determinați colțurile externe
- Pasul 8: Încercați-l în practică
Video: Reconstrucție 3D dintr-o singură fotografie: 8 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
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
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ă
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
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
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
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
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
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:
Derulați o singură linie LCD: 4 pași (cu imagini)
Scroll Single LCD Line: Biblioteca cu cristale lichide are două funcții utile scrollDisplayLeft () și scrollDisplayRight (). Aceste funcții derulează întregul ecran. Adică, derulează ambele linii pe un LCD 1602 și toate cele patru linii pe un LCD 2004. Ceea ce avem adesea nevoie este abi
Bicicletă rutieră lumină vizibilă în timpul zilei și laterală 350mA (o singură celulă): 11 pași (cu imagini)
Lumină vizibilă pe timp de zi și lateral vizibilă de 350 mA (o singură celulă): Această lumină pentru bicicletă are LED-uri chihlimbar cu față și 45 ° conduse până la 350 mA. Vizibilitatea laterală poate îmbunătăți siguranța în apropierea intersecțiilor. Chihlimbar a fost selectat pentru vizibilitate în timpul zilei. Lumina a fost instalată pe piciorul stâng al ghidonului. Modelele sale pot fi distinse
Cum să: legați-vă pantofii cu o singură mână: 10 pași
Cum să: legați-vă pantofii cu o singură mână: Cum să ghidați cum să vă legați pantofii cu o singură mână
DIY Ceas Arduino cu o singură cifră imprimat 3D: 4 pași
Ceas Arduino DIY cu o singură cifră imprimat 3D: un ceas Arduino Nano complet funcțional, cu o cifră mare
Afișaj cu două cifre folosind o singură matrice de 8 x 8 leduri: 3 pași
Afișaj cu două cifre folosind o singură matrice 8x8 cu leduri: aici aș dori să construiesc un indicator de temperatură și umiditate pentru camera mea. Am folosit o singură matrice LED 8x8 pentru afișarea numerelor din două cifre și cred că o parte a proiectului a devenit mai utilă. Am cutiat finalul construit folosind o cutie de carton, durere