2012-11-21 8 views
5

Ich habe ein 3D-Punktwolkenbild (siehe unten).Ausblenden von Punkten in einer Punktwolke

Und ich möchte alle Punkte, die theoretisch hinter anderen Punkten liegen (z. B. Punkte um den Rücken der Person werden nicht sichtbar sein, da es durch die Punkte um die Brust und Bauch behindert wird).

Wie gehe ich und löse dieses Problem?

Alles, was ich brauche, sind nur Punkte, die von vorne nicht blockiert sind, so dass ich sie für andere Zwecke benutzen kann.

Edit: Es ist nicht wirklich für Betrachtungszwecke. Ich versuche nur die unversperrten Scheitelpunkte zu isolieren, um später die Oberflächennormale zu berechnen, um Tiefenbildmerkmale zu extrahieren.

enter image description here

+0

Warum brauchen Sie die Oberflächennormale, um die Tiefe zu extrahieren? – JAre

+0

Die Tiefe wird nicht extrahiert, aber die Flächennormale wird als Merkmal für das Tiefenbild verwendet. Es ist eher eine Computer Vision Sache. Ich verwende einige OBJ-Modelle, um die von Kinect erhaltenen Punktwolkendaten vorübergehend zu emulieren. Und da es sich um einen Tiefensensor handelt, wird nur der vordere Teil des Objekts von Kinect –

+0

übernommen. Sie können Gitternormalen als Fragmentfarbe (RGB) und Tiefe als Alpha zur Textur rendern und zufällige Punkte daraus suchen oder Maske mit den Konstanten 1 und 0 anwenden und multiple Shader-Ausgabe darauf, so dass Sie Textur mit Punkten statt fester Oberfläche erhalten. – JAre

Antwort

3

Sie können nichts mit einem Punkt verdecken - es hat keine Dimensionen.

Wenn Sie ein Mesh haben (d. H. Sie wissen, welche Punkte "connect" zu welchem), können Sie Dinge verbergen, die hinter diesem Mesh verborgen sind.

Wenn Sie das nicht tun, ist der einfachste Trick, den ich kenne, um etwas wie Ihre Anforderung zu erreichen, z-bedingtes Fading zu verwenden - machen Sie einfach Punkte auf der Rückseite schwächerer.

+0

Wenn Sie eine Linie (ray) zwischen Ihrem Punkt von betrachten Ansicht und ein Punkt im Modell, werden nicht alle Punkte in dieser Linie durch den Punkt verdeckt, der dem Kameramodell am nächsten ist? –

+0

@RuiMarques nur, wenn sie _exactly_ online sind, aber ein Punkt hat keine Größe, so kann nichts wirklich verschleiern. – Alnitak

+0

Sicher, ich denke, das OP bedeutet Punkte, die durch Oberflächen verdeckt sind, die durch andere Punkte definiert sind. –

1

Wie wäre es Polygonalnetz mit Textur von Punkten machen? Eine andere Möglichkeit besteht darin, Polygonnetz auf z-buffer zu übertragen (Sie benötigen nur Tiefe) und es zu verwenden, um Punkte zu verwerfen (ferne Punkte werden z-Test fehlschlagen), die hinter mesh liegen.

Verwandte Themen