簡體   English   中英

如何在MATLAB中繪制具有強度信息的3-D pointCloud對象?

[英]How to plot a 3-D pointCloud object with Intensity information in MATLAB?

我正在使用MATLAB pointCloud類來處理和顯示3-D點雲。 我具有x-y-z-維中每個點的坐標,以及相應的灰度強度值。 例如,請參閱以下測試數據:

x = [0,   1;   0,   1];
y = [0,   0;   1,   1];
z = [0,   0;   0,   0];
c = [0, 1/3; 2/3,   1];

相應的pointCloud對象使用

ptCloud = pointCloud(cat(3, x, y, z), 'Intensity', c);

現在我想使用pcshow命令繪制點雲,即

pcshow(ptCloud, 'MarkerSize', 1000);

注意: 'MarkerSize'僅用於此示例,因此這四個點清晰可見

但是,這沒有考慮強度信息-如文檔中所述,這考慮了點雲對象的顏色信息,在我的案例中是不存在的。 pointCloud對象僅允許為色域中的每個像素保存RGB值,即灰度強度是不可能的。

pcshow函數還可以將xyz數組和相應的顏色信息作為輸入來代替pointCloud對象。 然后,可以將灰度強度用作顏色信息,並且可以按預期工作:

pcshow(cat(3, x, y, z), c, 'MarkerSize', 1000);

但是,我想繼續使用pointCloud對象,而不要回退到每幀多個數組。 如何在pcshow中使用pointCloud對象的強度信息?

您可以在c的第3維上使用repmat來創建灰色RGB顏色向量,然后使用pointCloud 'Color'屬性:

x = [0,   1;   0,   1];
y = [0,   0;   1,   1];
z = [0,   0;   0,   0];
c = [0, 1/3; 2/3,   1];
% convert grayscale intensities to gray rgb values
C = repmat(c,[1 1 3]);
% plot colored pointcloud
ptCloud = pointCloud(cat(3, x, y, z),'Color',C);
pcshow(ptCloud, 'MarkerSize', 1000);

在此處輸入圖片說明

最新的MATLAB版本(至少R2018a)開箱即用地支持此行為。 文檔中所述,對於具有位置和強度信息的點雲對象,強度值將使用當前顏色圖映射到一種顏色。

因此,以下代碼段確實可以在最新的MATLAB版本中正常運行:

x = [0,   1;   0,   1];
y = [0,   0;   1,   1];
z = [0,   0;   0,   0];
c = [0, 1/3; 2/3,   1];

ptCloud = pointCloud(cat(3, x, y, z), 'Intensity', c);
pcshow(ptCloud, 'MarkerSize', 1000);

結果點雲

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM