2012-10-05 9 views
7

Gibt es derzeit eine JavaScript-Bibliothek zum Konvertieren eines Videostreams in Canvas in ein 3D-Netz? Eine Beispielsituation besteht darin, eine Kamera auf einen Becher zu richten und die rohen Bilder zu erfassen, wobei vorherige Daten mit neuen Daten verglichen werden, um einen Kantenumriss der Objekte in der Ansicht zu erzeugen, idealerweise in den einfachsten Satz von Polygonen umzuwandeln und anzuzeigen das berechnete Polygon/Modell in einem zweiten Canvas-Element.Was sind geeignete Startpunkte für die Konvertierung von Video auf Leinwand in ein 3D-Netz?

Ich habe einige hervorragende Arbeit von mrdoob auf 3D-Javascript von Objektdateien zu Rendering in Leinwand gehen gesehen, aber ich bin auf der Suche nach Rohdaten und versuchen, ein Netz zu generieren. Die Absicht ist, die Maschenpunkte zwischen 2 Benutzern über Sockets für jedes Objekt zu senden, das sich gegenwärtig in der Kameraansicht befindet, die erfasst wird.

Jede Hilfe wird geschätzt.

+1

OBJ-Dateien bereits Vertexinformation in 3D hat. Das ist ziemlich einfach auf einer Leinwand anzuzeigen. Sie möchten ein 3D-Netz aus einem 2D-Video generieren? Wie werden Sie Tiefeninformationen/Informationen der anderen Objektseite des Objekts erhalten? - Es ist möglich, die Umrisse eines Objekts über die Bildverarbeitung zu erhalten, obwohl Sie nur 2D-Informationen erhalten. – Smamatti

+0

Es gibt eine interessante Anwendung namens Video-Trace, die erfordert, dass der Benutzer die Linien, die das Objekt umreißen, aber es nicht Echtzeit obwohl sehr clever bei der Interpolation Kanten, ähnlich gibt es Anwendungen für Kinect, Kantenerkennung für Gesten-Tracking durchführen, so denke ich Eine Anwendung, die Rahmen vergleichen kann, um Grenzen und Geometrien im Verlauf vieler Rahmen zu erkennen, könnte eine Richtung sein, die uns zu 3D-Koordinaten führen könnte, wenn bestimmte Fluchtlinien erkannt werden könnten oder die Bewegung eines Satzes verwandter Punkte voneinander abweicht. Viel mehr für mich zu lernen, egal – MyStream

Antwort

3

Es ist ein ziemlich komplexes Problem. Die meisten Algorithmen benötigen 2 Bilder (Stereo-Vision-Systeme), um 2D-Informationen zu 3D-Objekten zu erkennen und zu verarbeiten. Dies mit einer Webcam zu tun und unterstützt von Javascript ist eine ziemliche Herausforderung :)

Grundsätzlich denke ich, dass Sie einige Computer-Vision-Techniken kombinieren müssen (Kantenerkennung, Filterung, 3D-2D-Mapping, ...).

Hier einige Informationen, die

nützlich sein könnten

Eine Computer-Vision-Bibliothek für Javascript - https://github.com/alex-m/seevee.js/wiki (Ports einige der bekannten opencv Funktionen) - kann nützlich sein, Webcam-Bild zu bekommen, die 3D-Bearbeitung, etc

leichte 3D-Bibliothek - https://github.com/mrdoob/three.js/

dies interpretierte http://www.eng.cam.ac.uk/news/stories/2009/3D_models/

6

Es ist keine Bibliothek, aber hier ist eine Demonstration genau der Technik, nach der Sie suchen.

Webcam Mesh

+0

Hallo @Eighteyes, das Webcam-Mesh für das Brechen der Visuals in ein 3D-Render-Konzept sieht gut aus. Ich kann es anscheinend nicht laufen lassen. Chrome stürzt ab Version 22 ab, um auf das Beispiel zuzugreifen und es auszuführen. Es ist jedoch nur ein Teil des Captures und ich bin mir nicht sicher, welches Mesh es erstellt oder wie gut es auf ein 3D-Objekt mit nur Pixelhelligkeit abgebildet wird. Ich bin auch auf der Suche nach einer Komplettlösung, so dass ich das Kopfgeld noch nicht vergeben kann. Ich ermutige die Leute jedoch, es zu überprüfen! Es sieht sehr schlau aus - danke! – MyStream

+0

Während das Kopfgeld hier vergeben wurde, blieb die Frage völlig unbeantwortet, so dass es schade ist, dass Antworten nicht mit der Hüpfburg übereinstimmen, da die Person, die die Frage stellt und die obige Antwort nicht wirklich den Anforderungen entspricht, aber ich denke immer noch Leute sollten es auf Interesse prüfen. – MyStream