Wie kann ich eine 3D-Struktur aus einer Reihe von Bildern rekonstruieren?
24
Ich habe eine Reihe von Konturen (eine Reihe von Liniensegmenten), die folgendermaßen gruppiert sind:
Sich= { I0, Iπ4, I2 π4, … , Ich7 π4}
woher
Sich bezeichnen eine Abfolge von Fotos eines konkreten Objekts.
j t h j = 0ichj bezeichnet ein Bild mit Sicht ( bedeutet Vorderansicht). jt hj = 0
Hier ist ein Beispiel für (Rückansicht): ichπ
Wie kann ich die 3D-Struktur eines Objekts mit gegebenem rekonstruieren ?Sich
Kann mich jemand auf einige Artikel verweisen oder mir sogar ein paar Stichwörter geben? Ich weiß, dass es viele Artikel gibt, die mit Punktewolken usw. arbeiten, aber diese funktionieren nicht, da ich mit Linien arbeite.
Eigentlich ist es ein ziemlich schwieriges Thema. Die klassische 3D-Rekonstruktion mit mehreren Ansichten befasst sich in erster Linie mit der Punktanpassung, dh, es wird auf jedem Bild derselbe Punkt gefunden. Anhand der Kameraparameter (Ansichtsparameter) für jedes Bild kann der ursprüngliche 3D-Punkt rekonstruiert werden. (Mit einem Laser oder einem Projektor kann die Szene beleuchtet werden, so dass der Abgleich relativ einfach durchgeführt werden kann.)
In dem Buch gibt es einen Abschnitt über den Trifokaltensor, der eine mehrlinige Beschränkung zwischen drei Ansichten darstellt. Es enthält nicht nur Punkt-, sondern auch Linienkorrespondenzbeschränkungen. Es kann sehr gut für den Wiederaufbau von Gebäuden verwendet werden.
Daher sollten Ihre Konturen an erster Stelle angepasst werden und können möglicherweise in Kenntnis der Kameraparameter rekonstruiert werden (die Kamerakalibrierung wird auch im Buch behandelt). Dann haben Sie Konturen in 3D, aber nichts mehr. Für reale Oberflächen muss ein dichter Punktabgleich durchgeführt werden. Obwohl der von mir erwähnte Tensor gut aussieht, wird er für gerade Linien verwendet, und ich bin sicher, dass ein modernes Auto überall gekrümmte Linien hat.
Ich weiß nicht, wie Sie diese Konturen bekommen haben, aber angesichts des von Ihnen geposteten Bildes bin ich ziemlich skeptisch über die Robustheit dieses Algorithmus, so dass die Rekonstruktion schlecht sein wird.
Eine andere Methode, die mir in den Sinn kam, ist das visuelle Rumpf- oder Raumschnitzen . Die Konturberechnung sollte ebenfalls durchgeführt werden. Wenn Sie die Methode für jede Kontur ausführen, können Sie das Modell haben.
Ich erhalte diese Konturen durch Anwenden von Canny und dann durch einige Linienvereinfachungsalgorithmen, die ein binäres Raster verwenden und dann eine Menge von Kanten zurückgeben. Eigentlich ist es möglich, einfache Bilder ohne Filter einzubeziehen, aber der Grund, warum ich diese Aufgabe so formuliert habe, ist, dass ich ständig Konturen unter verschiedenen Winkeln berechnen müsste (die ein recht niedriges Delta haben könnten: < ). der Ansicht. Ich dachte, wenn ich Kanten in 3D wiederherstellen könnte, müsste ich nur eine Projektion durchführen. Vielleicht war das ein Fehler (wenn ja, lassen Sie es mich bitte wissen). π/ 4
om-nom-nom
1
Ich verstehe nicht, wie Sie durch Projektion einen konturunabhängigen 3D-Punkt erhalten. Es gibt 3D-Modellierungstechniken, die sich mit NURBS-Flächen befassen, die zwischen Splines gespannt sind, aber Sie müssen dafür charakteristische Splines bereitstellen. (Vielleicht könnte ein 3D-Künstler das Wort "charakteristisch" in diesem Kontext definieren, aber nicht ich.) Auch hier denke ich, dass die Form-von-Kontur (genau wie der visuelle Rumpf) ein grobes Modell für Sie bilden kann. Danach können Sie es anhand der Bilder verfeinern. Aber dafür gibt es keine Standardmethoden.
Bálint Fodor
2
Obwohl das von Fodor Hartley und Zisserman erwähnte Buch definitiv lesenswert ist, dient es mehr dem allgemeinen Verständnis als praktischen Algorithmen. Es ist ziemlich veraltet und diese Methoden sind nicht effizient. Über Ihr Problem - die Problemformulierung selbst ist sehr ungewöhnlich. Wie von Fodor erwähnt, ist das Beginnen mit übereinstimmenden Merkmalspunkten anstelle von Konturen viel einfacher. Im Falle von Punkten ist der absolut beste Überblick über die verfügbaren modernen Methoden das Papier von Triggs "Bündelanpassung - Eine moderne Synthese". Bevor Sie jedoch die Bündelanpassung verwenden, müssen Sie die entsprechenden Punkte auf den Bildern mit etwas wie SIFT oder Vorlagenanpassung abgleichen. Google für die 3D-RekonstruktionBeispiele für einige vollständige Methoden. Sie können dafür auch Open-Source-Pakete verwenden, es stehen mehrere zur Verfügung.
Wenn Sie darauf bestehen, Konturen zu verwenden, ist das Problem viel schwieriger, wenn auch (kaum) lösbar. Zuerst müssen Sie die entsprechenden Konturen in allen Bildern identifizieren und zuordnen, danach schreiben Sie die Kostenfunktion - Summe der Projektionsfehler für jede zugeordnete Konturgruppe als Funktion von Kameraposition und Ausrichtung jedes Bildes. Danach finden Sie den Satz von Kamerapositionen, die diese Kostenfunktion minimieren. Jeder Schritt dieses Prozesses ist äußerst schwierig, und es gibt keinen guten Überblick wie bei Triggs. Sie können einige relevante Artikel googeln, da eine Kombination von Begriffen "Konturen" "Konturen, die mit" "Bündelanpassung" "Neuprojektionsfehler" "3D-Rekonstruktion" übereinstimmen.
Während es definitiv einfacher ist, mit SIFT-ähnlichen Funktionen umzugehen, gibt es ein Problem, dass SIFT in meiner Domäne häufig Schatten / Reflexionen auf glänzenden Fahrzeugoberflächen erfasst. Mit SIFT erhalte ich also eine enorm große Menge an Geräuschfunktionen, die sich nicht auf ein tatsächliches Merkmal stützen Autoform daher habe ich eine Abnahme der Genauigkeit.
om-nom-nom
Sie können einen modellbasierten Ansatz ausprobieren, wenn Sie wissen, dass Sie auf das Auto schauen. Parametrisieren Sie das generische Automodell und versuchen Sie, es mit allen Bildpixeln an das Bild anzupassen. Schreiben Sie die Kostenfunktion als Funktion der Kameraparameter und der Automodellparameter und minimieren Sie sie. Es kann funktionieren (oder auch nicht) - Sie scheinen ein ziemlich schwieriges Problem zu haben.
mirror2image
Leider habe ich nicht verstanden, was Sie vorgeschlagen haben. Bitte geben Sie ein Beispiel an (es kann sich um einen externen Artikel, eine verwandte Arbeit oder ähnliches handeln).
Schauen Sie sich die Modellrekonstruktion aus Bildern an, die sich ein wenig von Ihrer Arbeitsweise unterscheidet, aber ich spreche darüber, wie Sie von Bildern zu einem 3D-Modell wechseln. Schauen Sie sich auch MeshLab an . Es enthält einige Rekonstruktionsalgorithmen, in die Sie möglicherweise Ihre Daten einspeisen können.
Obwohl das von Fodor Hartley und Zisserman erwähnte Buch definitiv lesenswert ist, dient es mehr dem allgemeinen Verständnis als praktischen Algorithmen. Es ist ziemlich veraltet und diese Methoden sind nicht effizient. Über Ihr Problem - die Problemformulierung selbst ist sehr ungewöhnlich. Wie von Fodor erwähnt, ist das Beginnen mit übereinstimmenden Merkmalspunkten anstelle von Konturen viel einfacher. Im Falle von Punkten ist der absolut beste Überblick über die verfügbaren modernen Methoden das Papier von Triggs "Bündelanpassung - Eine moderne Synthese". Bevor Sie jedoch die Bündelanpassung verwenden, müssen Sie die entsprechenden Punkte auf den Bildern mit etwas wie SIFT oder Vorlagenanpassung abgleichen. Google für die 3D-RekonstruktionBeispiele für einige vollständige Methoden. Sie können dafür auch Open-Source-Pakete verwenden, es stehen mehrere zur Verfügung.
Wenn Sie darauf bestehen, Konturen zu verwenden, ist das Problem viel schwieriger, wenn auch (kaum) lösbar. Zuerst müssen Sie die entsprechenden Konturen in allen Bildern identifizieren und zuordnen, danach schreiben Sie die Kostenfunktion - Summe der Projektionsfehler für jede zugeordnete Konturgruppe als Funktion von Kameraposition und Ausrichtung jedes Bildes. Danach finden Sie den Satz von Kamerapositionen, die diese Kostenfunktion minimieren. Jeder Schritt dieses Prozesses ist äußerst schwierig, und es gibt keinen guten Überblick wie bei Triggs. Sie können einige relevante Artikel googeln, da eine Kombination von Begriffen "Konturen" "Konturen, die mit" "Bündelanpassung" "Neuprojektionsfehler" "3D-Rekonstruktion" übereinstimmen.
quelle
Schauen Sie sich die Modellrekonstruktion aus Bildern an, die sich ein wenig von Ihrer Arbeitsweise unterscheidet, aber ich spreche darüber, wie Sie von Bildern zu einem 3D-Modell wechseln. Schauen Sie sich auch MeshLab an . Es enthält einige Rekonstruktionsalgorithmen, in die Sie möglicherweise Ihre Daten einspeisen können.
quelle