Inhoudsopgave:

3D-reconstructie van een enkele foto: 8 stappen
3D-reconstructie van een enkele foto: 8 stappen

Video: 3D-reconstructie van een enkele foto: 8 stappen

Video: 3D-reconstructie van een enkele foto: 8 stappen
Video: Udens College "Rooie School" 3D reconstructie 2024, November
Anonim
3D-reconstructie van een enkele foto
3D-reconstructie van een enkele foto
3D-reconstructie van een enkele foto
3D-reconstructie van een enkele foto

De taak van 3D-reconstructie wordt meestal geassocieerd met binoculair zicht. U kunt ook een enkele camera rond het object bewegen. Ondertussen, als de vorm van het object bekend is, kan de taak worden opgelost met een enkele foto. Dat wil zeggen dat je maar één camera hebt en die beweegt niet. Laten we eens kijken hoe we het stap voor stap kunnen doen. We zullen Rubik's Cube gebruiken omdat het goed gestandaardiseerd is en een uitgebreide reeks functies heeft. Het kan worden beschouwd als een heel eenvoudig object en tegelijkertijd een gecompliceerde constructie. Dus machine vision moet substantiële obstakels overwinnen om de taak te voltooien.

Stap 1: Evalueer de complexiteit van de taak

Evalueer de complexiteit van de taak
Evalueer de complexiteit van de taak
Evalueer de complexiteit van de taak
Evalueer de complexiteit van de taak
Evalueer de complexiteit van de taak
Evalueer de complexiteit van de taak
Evalueer de complexiteit van de taak
Evalueer de complexiteit van de taak

Op het eerste gezicht is de taak eenvoudig. Zoek de centrale knoop waar 3 randen van de kubus samenkomen en teken deze randen. Uit hun coördinaten is het mogelijk om de afstand tot de camera en de rotatiehoeken te berekenen. Het probleem is dat deze lijnen niet bestaan. In de linkerafbeelding zie je dat elke rand wordt weergegeven door 2 evenwijdige lijnen. Bovendien laat de afbeelding rechtsboven zien dat elk van hen is opgedeeld in 3 segmenten. Bovendien, als we een variant van de populaire Hough-transformatie toepassen die lijnsegmenten kan detecteren, voert deze de taak uit met enkele fouten die detectie van de centrale knoop onmogelijk maken. Als de uiteinden elkaar niet bereiken, is er geen enkel punt. Als de detectie voorbij het einde schiet, zal het eruit zien als de knoop in het midden van de rand zoals je op de 2 resterende afbeeldingen ziet.

Stap 2: Vind de juiste aanpak

Vind de juiste aanpak
Vind de juiste aanpak

Wanneer te veel details deterministische algoritmen onwerkbaar maken, is het tijd om een probabilistische benadering te overwegen. Als we de gemiddelde parameters van de afbeelding berekenen, zullen hun fouten aanzienlijk worden verminderd en paradoxaal genoeg zal de methode betrouwbaarder blijken te zijn. De standaard Hough-transformatie voert geen lijnsegmenten uit. Alleen de helling theta en de afstand rho vanaf de oorsprong van de coördinaat. Ze vormen het Hough-ruimtegedeelte waarvan hierboven is weergegeven. Hier komt theta overeen met de horizontale as. Heldere vlekken markeren mogelijke lijnen op de afbeelding. Merk op dat meerdere van dergelijke plekken boven elkaar liggen. Geen wonder, op onze afbeelding zijn er veel parallelle lijnen. Ze hebben dezelfde theta en verschillende rho.

Stap 3: Theta-histogram berekenen

Theta-histogram berekenen
Theta-histogram berekenen

Laten we dergelijke clusters detecteren. Voor dit doel zullen we metingen samenvatten voor alle punten in de Hough-ruimte met dezelfde theta. U ziet het bijbehorende histogram op de afbeelding. Een paar opmerkingen over metingen. Wanneer u met afbeeldingen in pixelcoördinaten werkt, gaat de X-as zoals gewoonlijk, maar Y wijst naar beneden, dus de oorsprong van de coördinaat is de linkerbovenhoek en theta moet vanaf de X-as met de klok mee worden gemeten. Houd er rekening mee dat het hele bereik van theta op de afbeelding 180 graden is, u kunt bij benadering controleren of 3 grote pieken 3 overheersende hellingen op de afbeelding vertegenwoordigen.

Stap 4: Bereken Rho-histogram

Rho-histogram berekenen
Rho-histogram berekenen

Nu we 3 hoofdclusters van parallelle lijnen kennen, laten we de lijnen binnen elk ervan scheiden. We kunnen dezelfde aanpak herhalen. Laten we een kolom nemen uit de Hough-ruimte die overeenkomt met één piek op het theta-histogram. Vervolgens zullen we een ander histogram berekenen waarbij de X-as de rho-waarde vertegenwoordigt en de Y - samengevatte waarden voor deze rho. Het is duidelijk dat de som minder zal zijn, dus deze grafiek is niet zo soepel. Desalniettemin zijn pieken duidelijk zichtbaar en het aantal ervan (7) komt exact overeen met het aantal parallelle lijnen op het bronbeeld. Helaas zijn niet alle grafieken zo perfect, maar het principe is duidelijk.

Stap 5: Zoek de centrale knoop

Vind de centrale knoop
Vind de centrale knoop

Als we de centrale piek op het rho-histogram voor elke theta nemen, krijgen we 3 lijnen die rood zijn op de afbeelding. Hun snijpunt markeert het noodzakelijke punt.

Stap 6: Kies uit 2 alternatieven

Kies uit 2 alternatieven
Kies uit 2 alternatieven
Kies uit 2 alternatieven
Kies uit 2 alternatieven

Je ziet dat elke lijn vanuit het centrale punt in beide richtingen gaat. Hoe de juiste helft bepalen? Laten we theta3 nemen. Stel dat we het onderste deel van deze lijn nemen. Laten we nog een Hough-ruimte berekenen, alleen voor het deel van de afbeelding van 2 groene lijnen naar de rechterbovenhoek van de afbeelding. Maak er vervolgens een theta-histogram voor. Je ziet dat de derde piek volledig is verdwenen dus we hebben de juiste keuze gemaakt.

Stap 7: Bepaal de externe hoeken

Bepaal de externe hoeken
Bepaal de externe hoeken

Nu kunnen we de eerste en de laatste piek op rho-histogrammen gebruiken om blauwe lijnen te tekenen die de rode randen doorsnijden en de resthoeken markeren. De taak is opgelost.

Stap 8: Probeer het in de praktijk

De illustraties voor deze Instructable zijn gemaakt met Perception 1.0. Dit is gratis software die OpenCV gebruikt - een krachtige bibliotheek voor computervisie. Het kan ook worden gekoppeld aan WinNB die werd gebruikt in mijn andere Instructable, waardoor robotica een zichtvermogen kreeg. U kunt beide programma's downloaden van nbsite. Voor de installatie voert u gewoon het gedownloade exe-bestand uit. Later kunt u het verwijderen met de standaardtool van Windows. De site bevat ook bronnen over computervisie en aanverwante onderwerpen. In Perception vindt u de beschreven methode van 3D-reconstructie en vele andere. Het voordeel van dit programma is dat het het eindresultaat samen met tussentijdse gegevens uitvoert. Je bent in staat om te onderzoeken hoe computer vision werkt zonder een programmeur te zijn. Wat de invoer betreft, heeft elke methode speciaal geselecteerde typische monsters. Je kunt natuurlijk ook je eigen gebruiken. Het is mogelijk om beelden in te voeren vanuit een bestand of vanaf de camera van de computer. Neem gerust contact met mij op voor vragen of suggesties.

Aanbevolen: