Descriere bibliografică:
În această lucrare se propune un algoritm pentru calcularea distanței față de obiectul observat din imaginile de la un stereopair.
Relevanța acestei lucrări este aceea că determinarea distanței față de obiect din imaginile de la două camere este una din sarcinile-cheie ale sistemelor de viziune computerizată. În laboratoarele din întreaga lume se desfășoară cercetări privind aplicarea practică a viziunii stereo pentru a extrage informații despre lumea din jurul nostru.
Una dintre aplicațiile de vizionare stereo este navigarea roboților mobili. De exemplu, Administrația Națională de Aeronautică și Spațială (NASA) a dezvoltat un robot (Mars Exploration Rover) pentru a investiga suprafața planetei Marte. Cu ajutorul unui sistem de vizualizare stereo, robotul poate determina distanța față de obstacol și poate trece cu succes.
- două camere USB;
- șablon șablon dimensiune 594 x 841 mm;
- laptop cu sistem de operare MacOS, Python 2.7;
- bandă de măsurare.
Lucrare preliminară înainte de elaborarea algoritmului.
- Efectuarea unui șablon de tablă de șah în mărimea de 594 x 841 mm pe baza unui șablon standard al bibliotecii cu OpenCV open source code. Acest șablon are 6 noduri pe verticală și 9 noduri orizontal.
- Creați un stand de la două camere USB fixate pe o suprafață solidă, plată, situată la o distanță fixă unul față de celălalt.
Fig. 1. Algoritmul pentru calcularea distanței față de obiect
Figura 1 prezintă algoritmul pentru calcularea distanței față de obiectul observat. Să oferim o explicație detaliată a fiecăruia dintre pași.
Pasul 1. În prima etapă, imaginile sunt colectate, care reprezintă șablonul șahului în poziții diferite, de la camerele stereopair din stânga și din dreapta. Pentru funcționarea corectă a implementării algoritmului este necesar ca șablonul de șah să intre complet în sfera de aplicare a camerelor stereopair și să ocupe o zonă cât mai largă a cadrului.
Etapa 2. A doua căutări pas pentru site-uri de tablă de șah pe imaginile obținute în etapa 1. site-uri șablon de căutare efectuate de către OpenCV bibliotecă găsi funcția de tablă de șah Corners (). Coordonatele nodurilor șablon sunt salvate pentru utilizare ulterioară.
Pasul 3. În a treia etapă, fiecare dintre stereopare este calibrat separat. Camerele stereopair sunt calibrate utilizând funcția de bibliotecă OpenCV pentru calibrarea camerei ().
Pasul 4. În a patra etapă, stereopara este calibrată. Datele obținute în a treia etapă sunt furnizate funcției bibliotecii Calibrate () stereo OpenCV, care ia în considerare parametrii interni ai perechii stereo. După procedura de calibrare stereo, obținem distanța focală a camerelor în pixeli și coordonatele punctelor principale ale camerelor.
Etapa 5. La a cincea etapă, distorsiunea în imaginile obținute în prima etapă este eliminată. Eliminarea distorsiunii este efectuată utilizând funcțiile bibliotecii OpenCV init Undistort Rectify Map () și remap (). După această etapă, toate liniile drepte ale obiectelor observate ale lumii din jur devin linii drepte în imagine.
Pasul 6. În etapa a șasea rectificarea imaginilor obținute în etapa 5. Rectificarea constă în nivelarea imagini deformate produse în etapa 5, astfel încât liniile epipolar din stânga imaginii coincid cu liniile epipolar de imagine aparat de fotografiat de pe camera foto dreapta. Această procedură este efectuată de funcția de bibliotecă OpenCV stereo Rectify ().
Pasul 7. În al șaptelea pas, pentru fiecare pereche de imagini corespunzătoare din stânga și din dreapta camere fabricate hartă disparitate construcție (sau hărți de adâncime (hartă adâncimea)) pentru imaginile obținute la etapa a șasea. Fiecare pixel harta disparitate conține informații despre numărul de pixeli pe axa OX este situat între pixelii corespunzători ai imaginii obiectului cu stânga și la dreapta camerelor de luat vederi. Construirea unei hărți disparitate este bazat pe algoritmul SGBM folosind funcția de bibliotecă OpenCV stereo SGBM.
Pasul 8. În a opta etapă se calculează distanța față de obiectul observat. Calculul distanței față de obiect este direct legat de informațiile purtate de harta de disparități construită în etapa a șaptea.
Dăm derivarea formulei pentru găsirea distanței față de obiectul observat.
- distanța dintre camerele stereopair (distanța de bază, lungimea bazei)
- distanța focală a camerei stereo
- harta hărților
Find. distanța față de obiectul observat
- distanța dintre camerele stereopair (în metri)
- distanța focală a camerei stereopair (în pixeli)
- coordonați de-a lungul axei OX a punctului obiectului P din imaginea de pe camera stângă
- coordonați de-a lungul axei OX a punctului obiectului P din imaginea de pe camera dreaptă
Fig. 2. Figura explicativă
- Disparitatea punctului x0 al obiectului P (în pixeli)
- distanța față de obiectul observat (în metri)
Privind Figura 2, puteți observa triunghiuri similare. Din aceste triunghiuri urmează relația:
Din această relație rezultă că
Am obținut o formulă pentru calcularea distanței față de obiectul observat.
Analizând această formulă, putem trage următoarele concluzii:
- Distanța către punctul obiect este invers proporțională cu disparitatea punctului dat. Acest lucru indică faptul că punctele mai îndepărtate de planul stereopârlului au mai puține diferențe decât punctele mai apropiate de planul stereopair.
- Valoarea disparității este direct proporțională cu distanța dintre camere. Cu cât distanța dintre camere este mai mare, cu atât mai mare este disparitatea.
- Rezoluția hărții de disparități depinde liniar de rezoluția imaginii. Cu cât rezoluția imaginii este mai mare, cu atât este mai precis harta hărților.
În această parte a lucrării vom trece prin pașii algoritmului și vom lua în considerare artefactele obținute la fiecare etapă a algoritmului descris mai sus. De asemenea, construim dependența erorii în determinarea disparității de la distanța până la obiectul observat.
Iată ilustrații ilustrative ale rezultatului algoritmului și construirea dependenței de eroare în determinarea disparității de la distanța până la obiectul observat.
Distanțe reale de la planul stereopair la obiectele observate
Prin determinarea erorii disparitate înțelegem diferența absolută valori disparitate corespunzătoare distanțelor calculate (pe baza distanței de bază, distanța focală și valorile disparitate) și valoarea disparitate corespunzătoare distanței efective.
Fig. 3. Imaginea de pe camera foto dreapta (etapa de asamblare a cadrelor din camera cu imaginea de pe șah)
Fig. 4. Imaginea din camera stângă (etapa de asamblare a cadrelor din cameră cu o imagine de șah)
Fig. 5. Imaginea din camera stângă cu modelul găsit (etapa de găsire a nodurilor șablonului de șah în imagini)
Fig. 6. Imaginea corectată din camera dreaptă cu distorsiunea eliminată (o etapă de rectificare și eliminare a distorsiunii)
Fig. 7. Imaginea corectată din camera stângă cu distorsiunea eliminată (o etapă de rectificare și eliminare a distorsiunii)
Fig. 8. O imagine a unei scene cu obiecte observabile (un tabel, trei cărți și o placă situată la distanță una de cealaltă)
Fig. 9. Harta discrepanțelor imaginilor de pe camerele din dreapta și din stânga (o masă, trei cărți și o placă situată la distanță una de cealaltă)
Fig. 10. Dependența erorii în determinarea disparității față de distanța față de obiectul observat
Din grafic se poate observa că cea mai mare valoare a erorii de determinare a discrepanței pentru distanța față de obiectul observat de la 2,30 la 4,15 metri este de numai 1,2, ceea ce indică o bună calitate a hărții disparităților.
În această lucrare, a fost elaborat un algoritm pentru a calcula distanța față de obiectul observat din imaginile de la un stereopair. Se dă calculul erorii în determinarea disparităților ca funcție de distanța față de obiectul observat.
Termeni de bază (generați automat). calcul distanta tablă de șah, funcția bibliotecă OpenCV, șablon tablă de șah model tablă de șah nodurilor model camera stânga, hartă disparitate, primul pas, etapa a șasea, algoritmul distanță calcul, a treia etapă, determinarea erorii, bibliotecă asistență unități model funcție tablă de șah , Calculul distanței, camerele stereopair, camerele drepte, planul stereopair, al doilea pas.