2d -> 3d api

Status
Nicht offen für weitere Antworten.

MrWhy

Aktives Mitglied
Hallo zusammen,

ich würde gerne ein Abstraktes Motion Capturing programmieren. Nun die Frage kennt jemand eine API, die es mir ermöglicht 2D Bilder (mehrere Blickwinkel) in "3D" Bilder zu berechnen?

Herzlichen Dank!

Grüße

Mr.
 

spyboot

Bekanntes Mitglied
Warum nicht gleich als 3D Modell?
Achso und 2d in 3d Bilder umwandeln ist zwar die Frage eines Anfängers gehört aber nicht zu den Anfänger Themen.
Der Algorithmus um 2D in 3D Bilder zu verwandeln is nen Auftrag für ne ganze Firma...
Erstmal wäre es wichtig dass du die Relativen Koordinaten der Bilder und die genaue Dreidimensionale Blickrichtung kennst. Dann noch gut ein Jahr Entwicklungszeit und du hättest eine Api die versucht anhand von Schatten und Farben das Dreidimensionale Model zu errechnen. 600 Einzelbilder vorausgesetzt um die Fehlerquote auf unter 90% zu senken und an die Rechenleistung will ich gar nicht denken...

Edit: nur damit er mal weiß warum niemand antwortet
 
Zuletzt bearbeitet:

MrWhy

Aktives Mitglied
Hallo SpyBoot,

ich weiß das die Lösung einer solchen Api nicht trivial ist, deshalb auch die Frage, ob jemand eine API dafür kennt. Du hast durchaus recht, dass die Frage wohl eher unter die Allgemeinen Themen gehört, habe ich aber auch erst zu spät gemerkt, um es dorthin zu schieben.

Hätte es eine solche API gegeben wäre es gut gewesen, da es eine solche aber anscheinend nicht gibt muss ich mir selber dazu gedanken machen.

Was ich mich aber durchaus frage, wie du auf 600 Bilder kommst?! Das war doch nur geschätzt oder?

Ich möchte ja nur relative Raumkoordinaten, dafür habe ich im besten Fall 30 Bilder/s von jeweils einer Kamera. Ich möchte erstmal eine einfache Genauigkeit, daher verwende ich im ersten Schritt nur die Bilder von 2 Kameras. Die Infrarot Bilder aufnehmen. Diese werden auf Graustufen umgerechnet. Es wird wohl auch im ersten Schritt keine Liveerfassung werden, sondern mit Aufzeichnungen gearbeitet, was das einmalige (einmalig im Sinn von solange die Marker für die Kameras sichtbar sind) Registrieren der Marker vereinfacht.

Der erste Schritt wird sich also auf einfach Bewegungen konzentrieren, da man mit 2 Kameras nicht genug Raum aufnehmen kann.

Warum nicht gleich als 3D Modell?

Naja ich will die relativen Raumkoordinaten dazu verwenden, mein 3D Modell zu beeinflussen, dafür brauche ich aber erstmal eine Aufnahme der relativen Raumkoordinaten, dann kann ich sie erst auf das Modell übertragen. Ich brauche diese Koordinaten dann in BVH Files, die ich mit meinem Programm dann erstelle.

In C++ gibt es bereits eine API die soetwas in ansetzen, oder gar komplett erlaubt, nur ist mein C++ schlecht als mein Java ;) Daher habe ich erstmal hier abklopfen wollen, ob es eine Java API dafür gibt.

Grüße

Mr.
 
S

Spacerat

Gast
Kann mir kaum vorstellen, das es eine API wie du sie dir wünscht dafür gibt.
Fakt ist doch, dass MoCap relativ wenig mit 3D-Scannern zu tun hat.
3D-Scanner:
1 Kamera und
1 BlueBox und
1 Laser oder
1 starke Beleuchtung (Silouetten-Schnitt)
Das zu scannende Modell ist regungslos.

MoCap:
2 Kameras im 90° Winkel
1 BlackBox
An den Gelenken des Objektes befinden sich (verschieden farbige) floureszierende Tabs.
Während sich das Objekt bewegt, nehmen die Kameras hauptsächlich die Tabs auf.
 

Marco13

Top Contributor
Ich weiß zufällig, dass es z.B. Ansätze gibt, irgendwelche Sehenswürdigkeiten aus einer Flut von (aus verschiedenen Blickwinkeln fotografierten) Flickr-Bildern 3D zu rekonstruieren - das geht zwar deutlich über das hinaus, was du vorhast, aber vielleicht in einen ähnliche Richtung. Trotzdem bin ich relativ sicher, dass es da nicht eine einfache, freie Java-API dafür gibt, wo man einfach sowas machen kann wie [c]List<Point3D> result = doIt(listOfListsOfPoint2D);[/c]....
 

MrWhy

Aktives Mitglied
Hidiho...

@Spacerat

3D Scanner? Wer spricht von 3D Scannern? Ich hatte schon an das Kugelverfahren gedacht, allerdings wollte ich möglichst die Kissenverzerrung herauslassen, in dem ich mehrere Kameras nehme. Aber ich glaub ich ich komme um die Berechnung nicht rum. Es müssen garnicht verschieden farbige Tags sein es reichen auch verschiedene Geometrien, wie es z.B. auch in der Medizintechnik gemacht wird. Dann kann man einer bestimmten Geometrie, das Körperteil zu ordnen.


@Marco13
Richtig von so einer Software habe ich auch schon gehört, es werden dafür aber deutlich mehr Blickrichtungen gebraucht, man geht dort in der Regel von 100 (geringe Qualität) bis 200 (hohe Qualität) Blickrichtungen rund um das Objekt aus. So ein verfahren wird ebenfalls in der Medizintechnik verwendet, um 3D Rekonstruktionen zu machen.

Mischt man nun beide Ansätze hat man denke ich eine recht einfache, günstige Methode MoCap zu realisieren. Und der Hardware einsatz, ist von jedem normalen Menschen zu bezahlen ;)
(ein Blaumann, ein bissel Draht, 2-4Kameras, 2-4 IR Strahler, PC, Reflektorkügelchen, ein bisschen Handgeschick ;) usw.)


List<Point3D> result = doIt(listOfListsOfPoint2D);
Ja Marco so hatte ich mir das gedacht ;) hast die API schnell geschrieben?! *fG* ;)

Ich denke dann werde ich eben ein bissel länger brauchen, und mir das erstmal selber zusammen schreiben ;)


Grüße

Mr.
 
S

Spacerat

Gast
Hidiho...

@Spacerat

3D Scanner? Wer spricht von 3D Scannern?
Du, dachte ich. Warum wollte man denn sonst 2D-Bilder nach 3D-Bildern wandeln wollen? Für MoCap braucht man das nicht. Ausserdem ist es für MoCap essentiell, das man nur 2 feste Blickwinkel (90° Versatz) hat. Aus den beiden Bildsequenzen der Kameras werden ausschliesslich die Linienverläufe der Tags benötigt um daraus 3D-Vektoren zu erstellen.
Weshalb man dafür verschiedene Formen statt verschiedene Farben nehmen wollte, ist mir schleierhaft. Farbfilter sind doch wohl einfacher zu realisieren oder sehe ich das falsch?
In der Medizin-Technik werden afaik nur 3D-Scanner verwendet. Die Tags in den verschiedenen Formen markieren afaik nur Lage und Ausmasse der gescannten (Teil-) Objekte.
@Marco13: Das Ding mit den Sehenswürdigkeiten (360° Panorama) ist auch eher 3D-Scanning.
 
Zuletzt bearbeitet von einem Moderator:

MrWhy

Aktives Mitglied
Hi,

ja ... ne... na also gut wenn du das so siehst, dann hast du natürlich recht....

Dein "Aufbau" hatte mich etwas verwirrt. Man benötigt eben keinen Laser für so eine Anwendung, wohl aber ein stilles objekt, dies aber auch nur, da die Verfahren nur immer an einer Seite abtasten. Im CT beispielsweise hast du eine Gentry (es sei denn du hast ein HighEnd CT) die die Bilder aufnimmt. Diese werden per Rekonstruktionsalgorithmus zusammen gesetzt -> man erhällt eine 3D Rekonstruktion der 2D Aufnahmen.

Um das aber machen zu können, darf der Patient sich nicht bewegen (da das Bild immer nur zu einem Zeitpunkt von einer Blickrichtung gemacht werden kann).

Nun damit könnte ich also nichts anfangen. Ich will ja, das sich was bewegt. Also min. 2 Kameras im 90° Winkel zu einander. Was aber nun, wenn die Marker hinter dem Körper verschwinden? Naja kann man auch bewerkstelligen, aber mit 4 Kameras wäre es einfacher. Wenn ich aber nun statt den Farben einfach definierte Geometrien verwende, kann ich diese im Programm für bestimmte Körperteile registrieren. Dann kann ich auch alles auf IR Basis "leuchten" lassen.

In der Medizintechnik wird beides unterschiedlich verwendet. Einmal die Kügelchen für eine Navigation und der Rekonalgo für 3D Darstellung, das sind unterschiedliche Anwendungsgebiete.

Grüße

Mr.
 
Zuletzt bearbeitet:

Marco13

Top Contributor
@Marco13: Das Ding mit den Sehenswürdigkeiten (360° Panorama) ist auch eher 3D-Scanning.

Hm - das, was ich meinte hatte mit einem 360°-Panorama nichts zu tun - und der gravierende Unterschied zum 3D-Scanning war eben, dass die Eingabebilder nicht "kalibriert" sind, sondern aus der schieren Masse der Bilder zusammen mit sowas wie "Featureerkennung" o.ä. das echte 3D-Geometrie-Modell rekonstruiert werden kann - in dieser PDF-Datei ist das näher beschrieben: http://www.cs.cornell.edu/~snavely/publications/thesis/thesis.pdf
 
S

Spacerat

Gast
Naja. Entscheidend ist doch, das für MoCap keine Bilder im eigentlichen Sinne wie sie beim Scannen benötigt werden. MoCap-Bilder sollten mehr wie nachts ohne Blitzlicht fotografierte Glühwürmchen aussehen.
@TS: Mein Aufbau mit dem Laser muss dich nicht verwirren. Das Silouhetten-Schnittverfahren unterstützt keine Tiefenerkennung. Um Vertiefungen auf einer Oberfläche zu erkennen wird der Laser benötigt. Dieser projeziert deutlich erkennbare Linien auf dem Körper, die dem Verlauf der Oberfläche folgen. Bei Laserscannern genügt es, wenn man das Objekt aus zwei maximal drei Blickwinkeln scannt. Ob es aber in der MT solche Scanner gibt, wage ich mal zu bezweifeln, da Laserlicht nicht gerade gesund (am aller wenigsten für die Augen) ist.
 
Zuletzt bearbeitet von einem Moderator:

MrWhy

Aktives Mitglied
Wow beeindruckende Arbeit.

Jedoch die Rechenzeiten, die damit verbunden sind, sind alles andere als inTime ;) 1-2 Stunden hätte ich mich ja noch drauf eingelassen, aber 2-3 Tage?!

Schon klar das die Berechnungen, die er anstellt mächtig aufwändig sind. Dann werd ich wohl das Rekonstruieren seien lassen und nur die Kugeln tracken ;) Ist denke ich genug aufwand.

Vielen Dank euch...

weitere Anregungen sind gerne gesehen ;)

Grüße

Mr.
 

spyboot

Bekanntes Mitglied
Dass mit den 600 Blickwinkeln war "etwas" übertrieben sollte aber klar machen dass mit nur 2 Kameras kein vernünftiges Bild zustande käme :).
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben