Indholdsfortegnelse:

3D -rekonstruktion fra et enkelt foto: 8 trin
3D -rekonstruktion fra et enkelt foto: 8 trin

Video: 3D -rekonstruktion fra et enkelt foto: 8 trin

Video: 3D -rekonstruktion fra et enkelt foto: 8 trin
Video: Секрет "невозможных" статуй из мрамора 2024, Juli
Anonim
3D -rekonstruktion fra et enkelt foto
3D -rekonstruktion fra et enkelt foto
3D -rekonstruktion fra et enkelt foto
3D -rekonstruktion fra et enkelt foto

Opgaven med 3D -rekonstruktion er normalt forbundet med kikkert. Alternativt kan du flytte et enkelt kamera rundt om objektet. I mellemtiden, hvis formen på objektet er kendt, kan opgaven løses fra et enkelt foto. Det vil sige, at du kun har et kamera, og det bevæger sig ikke. Lad os se, hvordan du gør det trin for trin. Vi vil bruge Rubiks kube, fordi den er godt standardiseret og har et stort sæt funktioner. Det kan betragtes som et meget simpelt objekt og samtidig en kompliceret konstruktion. Så maskinsyn skal overgå betydelige forhindringer for at fuldføre opgaven.

Trin 1: Evaluer opgavens kompleksitet

Evaluer opgavens kompleksitet
Evaluer opgavens kompleksitet
Evaluer opgavens kompleksitet
Evaluer opgavens kompleksitet
Evaluer opgavens kompleksitet
Evaluer opgavens kompleksitet
Evaluer opgavens kompleksitet
Evaluer opgavens kompleksitet

Ved første øjekast er opgaven enkel. Find den centrale knude, hvor 3 kanter af terningen kommer sammen, og tegn disse kanter. Ud fra deres koordinater er det muligt at beregne afstanden fra kameraet og rotationsvinkler. Problemet er, at disse linjer ikke findes. Fra det venstre billede ser du, at hver kant er repræsenteret af 2 parallelle linjer. Desuden viser billedet øverst til højre, at hver af dem er opdelt i 3 segmenter. Desuden, hvis vi anvender en variant af den populære Hough -transformering, der kan detektere linjesegmenter, udfører den opgaven med nogle fejl, der gør detektering af den centrale knude umulig. Hvis enderne ikke når hinanden, er der ikke et enkelt punkt. Hvis registreringen overskrider enden, vil den ligne knuden i midten af kanten, som du ser på de 2 resterende billeder.

Trin 2: Find den korrekte tilgang

Find den korrekte tilgang
Find den korrekte tilgang

Når for mange detaljer gør deterministiske algoritmer upraktiske, er det tid til at overveje en sandsynlig tilgang. Hvis vi beregner gennemsnitlige parametre for billedet, reduceres deres fejl væsentligt, og paradoksalt nok vil metoden vise sig mere pålidelig. Standard Hough -transformationen udsender ikke linjesegmenter. Kun dens hældning theta og afstanden rho fra koordinatoprindelsen. De udgør Hough -rumdelen, som er vist ovenfor. Her svarer theta til den vandrette akse. Lyspunkter markerer mulige linjer på billedet. Bemærk, at flere sådanne pletter er placeret over hinanden. Ikke underligt, på vores billede er der mange parallelle linjer. De har samme theta og forskellige rho.

Trin 3: Beregn Theta Histogram

Beregn Theta Histogram
Beregn Theta Histogram

Lad os opdage sådanne klynger. Til dette formål vil vi opsummere aflæsninger for alle prikker i Hough -rummet med den samme theta. Du ser det tilsvarende histogram på illustrationen. Et par noter om målinger. Når du arbejder med billeder i pixelkoordinater, går X -aksen som normalt, men Y peger nedad, så koordinatens oprindelse er øverste venstre hjørne, og theta skal måles fra X -aksen med uret. Når du husker på, at hele svejsning af theta på billedet er 180 grader, kan du omtrent kontrollere, at 3 store toppe repræsenterer 3 dominerende skråninger på billedet.

Trin 4: Beregn Rho Histogram

Beregn Rho Histogram
Beregn Rho Histogram

Nu hvor vi kender 3 hovedklynger af parallelle linjer, lad os adskille linjer inden for hver af dem. Vi kan gentage den samme tilgang. Lad os tage en kolonne fra Hough -rummet, der svarer til en top på theta -histogrammet. Dernæst beregner vi et andet histogram, hvor X -aksen repræsenterer rho -værdi og Y - opsummerede aflæsninger for denne rho. Det er klart, at summen vil være mindre, så dette diagram er ikke så glat. Ikke desto mindre er toppe tydeligt synlige, og antallet af dem (7) svarer nøjagtigt til antallet af parallelle linjer på kildebilledet. Desværre er ikke alle diagrammerne så perfekte, men princippet er klart.

Trin 5: Find den centrale knude

Find den centrale knude
Find den centrale knude

Hvis vi tager den centrale top på rho histogram for hver theta, får vi 3 linjer, som er røde på billedet. Deres skæringspunkt markerer det nødvendige punkt.

Trin 6: Vælg mellem 2 alternativer

Vælg mellem 2 alternativer
Vælg mellem 2 alternativer
Vælg mellem 2 alternativer
Vælg mellem 2 alternativer

Du ser, at hver linje går fra det centrale punkt i begge retninger. Hvordan bestemmer man den korrekte halvdel? Lad os tage theta3. Antag, at vi tager den nederste del af denne linje. Lad os beregne endnu en Hough -plads kun for den del af billedet fra 2 grønne linjer til øverste højre hjørne af billedet. Opret derefter theta histogram til det. Du ser, at den tredje top helt forsvandt, så vi har truffet det rigtige valg.

Trin 7: Bestem de eksterne hjørner

Bestem de eksterne hjørner
Bestem de eksterne hjørner

Nu kan vi bruge den første og den sidste top på rho -histogrammer for at tegne blå linjer, der skærer de røde kanter og markerer resten af hjørnerne. Opgaven er løst.

Trin 8: Prøv det i praksis

Illustrationerne til denne Instructable blev oprettet ved hjælp af Perception 1.0. Dette er gratis software, der bruger OpenCV - et kraftfuldt bibliotek til computersyn. Det kan også være knyttet til WinNB, som blev brugt i min anden Instructable og dermed give visionsevne til robotik. Du kan downloade begge programmer fra nbsite. For installation skal du bare køre den downloadede exe -fil. Senere kan du fjerne det ved hjælp af standardværktøjet i Windows. Webstedet indeholder også ressourcer om computersyn og relaterede emner. I Perception finder du den beskrevne metode til 3D -rekonstruktion såvel som mange andre. Fordelen ved dette program er, at det sender det endelige resultat sammen med mellemliggende data. Du er i stand til at undersøge, hvordan computersyn fungerer uden at være programmerer. Med hensyn til input har hver metode specielt udvalgt typiske prøver. Selvfølgelig kan du også bruge din egen. Det er muligt at indtaste billeder fra en fil eller fra computerens kamera. Kontakt mig gerne med spørgsmål eller forslag.

Anbefalede: