WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Kombination mehrerer 3D-Punktwolken

 

Hmpf

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.01.2008, 15:04     Titel: Kombination mehrerer 3D-Punktwolken
  Antworten mit Zitat      
Hallo,

ich habe ein kleines Problemchen...


Ich arbeite gerade an einem System zur 3D-Erfassung von Objekten, und möchte meine gewonnenen Daten auch gleich in Matlab weiterverarbeiten.


Ich habe also mehrere 3D-Punktwolken von einem Objekt (als Matrizen mit 3 Spalten für die X-, Y- und Z-Koordinaten für jeden Punkt), die aus unterschiedlichen Blickwinkeln aufgenommen wurden. Diese möchte ich nun automatisch zu einer großen Punktwolke zusammensetzen, d.h. irgendeine der Wolken dient als Referenz, und alle anderen werden dann an dieser Wolke ausgerichtet (normalerweise müssen sie nur gedreht werden, eine Skalierung sollte nicht nötig sein)

Das Problem lässt sich natürlich auch erstmal auf 2 Wolken reduzieren, denn man kann nach dem Zusammensetzen der ersten beiden Wolken das Resultat ja als neue Referenzwolke betrachten.

Es muss also eine Wolke so gedreht werden, daß sie an eine andere Wolke passt.

Gibt es irgendeinen einfachen Weg, sowas in Matlab zu realisieren?


Babel42
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 05.10.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2008, 15:31     Titel:
  Antworten mit Zitat      
Hallo,
wenn die Blickwinkel senkrecht zu einander stehen müßte es doch reichen, die indices zu vertauschen. Gegebenenfalls kann man sie auch in einer Dimension rückwärts auswerten.

Code:
A=rand(1,10);
B= A(10:-1:1);


Ansonsten mußt du deine Koordinaten umrechnen. Da hilt bestimmt mal nen Blick in die Computergrafik.
_________________

„I think the problem, to be quite honest with you, is that you've never actually known what the question is.“
Private Nachricht senden Benutzer-Profile anzeigen
 
Hmpf

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2008, 15:47     Titel:
  Antworten mit Zitat      
Tja, wenn es denn so einfach wäre...

die Blickwinkel sind leider nicht bekannt, da die Aufnahmen freihand durchgeführt wurden. Da das System kalibriert wurde ist die Größe des Objekts bei allen Punktwolken gleich, aber sie sind eben aufgrund des Blickwinkels irgendwie verdreht/verschoben.


Was ich brauche ist also ein Algorithmus, der versucht zwei Punktwolken so zusammenzusetzen, daß sie möglichst gut passen
 
Babel42
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 05.10.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2008, 16:20     Titel:
  Antworten mit Zitat      
hmm, ok
also mußt du erst mal rausfinden, wie die Wolken zusammen passen. Richtig? Also mußt du nach gleichen Regionen in deinen Wolken suchen?
_________________

„I think the problem, to be quite honest with you, is that you've never actually known what the question is.“
Private Nachricht senden Benutzer-Profile anzeigen
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 29.01.2008, 19:11     Titel:
  Antworten mit Zitat      
Hallo Hmpf,

für Bilder (also 2D) gibt es in der Image Processing Toolbox einiges (Stichwort "Image Registration"), um zwei Aufnahmen desselben Objekts zusammenzufügen bzw. übereinanderzulegen.

Kann sein, dass da auch Funktionen für 3D-Gebilde dabei sind. (Kann ich erst Freitag genauer nachschauen.)

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Hmpf

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2008, 21:43     Titel:
  Antworten mit Zitat      
Zitat:
also mußt du erst mal rausfinden, wie die Wolken zusammen passen. Richtig?
Genau, das ist sozusagen das zentrale Problem...
die Wolken basierend auf diesen Informationen letztendlich zusammenzusetzen, dürfte ein wesentlich kleineres Problem sein.


Zitat:
für Bilder (also 2D) gibt es in der Image Processing Toolbox einiges (Stichwort "Image Registration"), um zwei Aufnahmen desselben Objekts zusammenzufügen bzw. übereinanderzulegen.

Kann sein, dass da auch Funktionen für 3D-Gebilde dabei sind.
Ja, hab ich schon gesehen, aber leider gibt es da keine Funktionen die für 3D-Daten geeignet wären.
(oder zumindest hab ich keine gefunden)
 
Tom

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2008, 14:01     Titel: ICP-Algorithmus
  Antworten mit Zitat      
Hallo,

vergiss alle anderen Beiträge. Suche nach dem ICP-Algorithmus der löst dein Problem. Auf der Matlab-Internetseite gibt es die Funktion als m-file zum Download. Einfach ICP in die Suchmaske eingeben...
 
Hmpf

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2008, 18:25     Titel:
  Antworten mit Zitat      
Danke für den Tipp, das werd ich gleich mal ausprobieren Smile
 
Hmpf

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.02.2008, 00:38     Titel:
  Antworten mit Zitat      
Ok, also prinzipiell funktioniert das schon recht gut...


allerdings nur wenn die Punktwolken schon grob ausgerichtet sind. Wenn sie mehr als ein paar Grad gegeneinander verkippt sind, werden sie u.U. falsch zusammengesetzt.


Muss ich die Punktwolken also grundsätzlich erstmal von Hand grob ausrichten, oder gibt es für diese Aufgabe auch einen Algorithmus?
 
Tom

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.02.2008, 10:55     Titel: Antwort
  Antworten mit Zitat      
Wenn du die Matlabfunktion des ICP's mit der C Implementierung verwendest hast (Dll) kannst du die Anzahl der Interationen erhöhen bzw. Die Gewichtungsfunktion der einzehlnen Punkte anpassen.

Eine andere Idee:
Arbeite mit den Projektionen der Punktwolke auf den Koordinatenebenen xy; xz; yz und verwende dann die Bildregistrierungsfunktion aus den Matlabdemos. Aus den einzelnen Transformationen im R² kannst du eine initialen Tranlationsvektor bzw eine Rotationsmatrize für den R³ berechen und die Punktwolken grob annähern. Danach dann den ICP.
Hinweis:
Die Ausrichtung in 2 Koordinatenebene ist vermutlich ausreichend für eine grobe Annäherung.
 
Hmpf

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.02.2008, 14:37     Titel:
  Antworten mit Zitat      
Hmm, ich kann mir zwar nicht so recht vorstellen daß das wirklich funktioniert, aber ich werde es auf jeden Fall mal ausprobieren.

Falls es nicht klappt, muss ich die Grobausrichtung eben doch von Hand machen, aber damit kann ich leben.
 
Dachs
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 11.01.11
Wohnort: Hannover
Version: ---
     Beitrag Verfasst am: 10.02.2011, 14:41     Titel:
  Antworten mit Zitat      
Probiere mal diesen ICP Algorithmus
bei mir lief er zwar nicht ohne kleine Anpassungen aber er liefert schon recht gute Ergebnisse bezüglich der Transformationparameter
http://www.mathworks.com/matlabcentral/fileexchange/12627
ich weiß nicht ob du mittlerweile eine bessere Lösung gefunden hast, falls doch bitte ich um eine Rückantwort.
Ich beschöftige mich mit einem ähnlichen Problem und nutze zur Zeit nur einen ICP Algorithmus zur Verbindung mehrerer Punktwolken.
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 10.02.2011, 15:17     Titel:
  Antworten mit Zitat      
Hallo Dachs,

ich denke er wird wohl nach 3 Jahren eine Loesung gefunden haben und wahrscheinlich (da er nur ein Gast war) nicht mehr in dieses Thread schauen.

Trotzdem Danke fuer deine Bemuehungen, vielleicht kann ja jemand anderes deinen Link noch fuer sein Problem benoetigen.

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.