[英]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.