Verfasst am: 29.07.2014, 12:47
Titel: Schräge Schnittebene in einer Punktwolke
Hallo Zusammen!
Ich stehe vor folgendem Problem!
Ich besitze eine Punktwolke mit x,y,z Koordinaten. Diese Punktwolke entspricht einer Hülle eines Körpers. In diesem Fall ein 3D Scan eines Menschen.
Ich möchte nun den Körper in mehrere Segmente unterteilen. Bei waagerechten und senkrechten Schnitten habe ich damit kein Problem.
Bei den schrägen Schnitten hapert es.
Wie kann ich Beispielsweise an der Schulter einen Schnitt durchführen, wenn ich 2 Punkte besitze, durch die der Schnitt durchgehen soll?
Und wie bekomme ich die Öffnung wieder geschlossen?
Ich hoffe ich hab mein Problem genau genug dargestellt.
Vielen Dank im Voraus
Im Anhang wollte ich die Datei hochladen, allerdings ist der Dateityp .asc hier verboten hochzuladen. Ich werde dies nachholen, sobalt ich eine Möglichkeit gefunden habe die Tabelle in .txt oder .xlsx einzufügen.
Leider funktioniert einfaches copy past nicht.
Die ersten drei Spalten beinhalten die x,y,z Koordinaten.
Dies hab ich erstmal so gelöst.
Code:
%Einlesen der Daten
rohmatrix = importdata('test.asc');
% Zur Vereinfachung erstmal nur jeden 10. Punkt und die 4 Spalte wird eliminiert
matrix = rohmatrix ([1:10:end],:,:);
xwerte = matrix (:,1);
ywerte = matrix (:,2);
zwerte = matrix (:,3);
matrix = [xwerte ywerte zwerte];
%Dann folgen mehrere Funktionen, die den Körper in einzelne Segmente %teilen sollen. Hier ein Beispiel:
Dies ist ein Beispiel der Segmentierung mit dem ich kein Problem habe.
Einmal waagerecht in der Z-Ebene und einmal senkrecht in der Y-Ebene geschnitten und ich hab meinen linken Fuss.
Manche Segmente benötigen allerdings schräge Schnitte :
-Schulter
-Hüfte,...
Auch dort sind mir die Punkte durch die der Schnitt gehen soll bekannt.
Für die Hüfte ist es ein Dreieck
P1: [621.61 -718.50 984.5]
P2: [606.89 -460.71 991.70]
P3: [610 -582 1267]
Und hier komme ich auf das Problem zurück.
Wie kann ich diese schrägen Schnitte bewerkstelligen?
Also eine neue Matrix_huefte erstellen, in der nur Punkte innerhalb des Dreiecks vorkommen.
Der Link zu den Ebenen hat mir die richtige Richtung gewiesen.
Ich dachte ich könnte alleine mit Vektor - und Matrizenrechnung zum Erfolg kommen.
Neuer Ansatz:
Ich mache ein 2D Problem daraus. Betrachte also nur die x,z-Achse.
Über 2 Punkte beschreibe ich eine Gerade.
Über die Funktion der Geraden wiederum kann ich heraus finden welcher Punkt oberhalb oder unterhalb der Geraden liegt und diese dann in seperate Matrizen speichern.
Den Versuch die Datei zuerst zu packen und dann hochzuladen hatte ich auch schon. Vllt liegt es an dem Packprogramm, das hier auf dem Unirechner ist.
Ich versuche es Daheim nochmal mit einem anderen Programm.
Vielen Dank für die Ansätze
Sollte dies zum Erfolg führen, werde ich dies mitteilen.
Wenn nicht,...komm ich wieder und heul weiter
Hat funktioniert.
- mit 2 Punkten die Geradengleichung aufgestellt
- alle Werte durch die Gleichung gejagt und dann separiert, wo sich die Punkte befinden(oberhalb bzw. unterhalb)
Jetzt werde ich das ganze umschreiben und eine Ebenengleichung zum schneiden benutzen. Diese Ebene kann ich dann dierekt nutzen, um die Öffnungen zu schließen.
Den Versuch die Datei zuerst zu packen und dann hochzuladen hatte ich auch schon. Vllt liegt es an dem Packprogramm, das hier auf dem Unirechner ist.
Ich versuche es Daheim nochmal mit einem anderen Programm.
Hallo, das klingt komisch. Dann wurde entweder im Forum etwas geändert oder du hast die zulässige Dateigröße überschritten.
Aber in jedem Falle schön, dass du dein Problem gelöst hast .
Einstellungen und Berechtigungen
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
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.