2017-07-23 3 views
0

Ich habe eine 3D-Datenmatrix, die Informationen über eine Szene enthält (welche Voxel sind frei/besetzt und gehören zu welcher Klasse).Wie speichere ich eine 3D-Datenmatrix als Punktwolke in Matlab?

Bis jetzt, um die Daten zu plotten, muss ich 2D-Schnitte mit imagesc plotten.

Ich möchte die Daten als eine Punktwolke plotten mit Matlabs pcshow, die nur belegte Voxel anzeigen sollte und den Rest als leeren Raum anzeigen.

Wie kann ich meine 3D-Matrix in ein pointcloud-Objekt konvertieren?

+0

wie ist "frei" Voxel definiert? Sind sie 'NaN' oder' 0'? –

+0

Ich könnte sie in jeden Uint32-Bit-Wert konvertieren. Bisher werden freie Voxel als 255 codiert – mcExchange

Antwort

1

Für einige NxMxK ​​Matrix A wo A == 255 freien Voxel zeigt:

% make coordinate grid the size of A 
[X,Y,Z] = meshgrid(1:size(A,1),1:size(A,2),1:size(A,3)); 
% move to xyz format 
xyz=[X(:) Y(:) Z(:)]; 
% show points which are not free and where group values are used as color (scaled by to current colormap) 
pcshow(xyz(A~=255,:),A(A~=255)) 
Verwandte Themen