3Dメッシュを作成して指定領域の表面積を求めたい.
26 次查看(过去 30 天)
显示 更早的评论
点群データ(.ply)からメッシュを作成し,その表面積を求めたく,
を参考にアルファシェイプから表面積をもとめています.
例えばsurfaceAreaの領域を 座標の範囲をそれぞれ X(-100:100),Y(-200:200),Z(100:1500)
にしたいのですが,どのように書くとよろしいでしょうか.
%plyをロード.ダウンサンプリング
ptCloud = pcread(test.ply);
gridstep = 0.5;
ptCloudDownSampled = pcdownsample(ptCloud,"gridAverage",gridstep);
%アルファ形状作成
P=double(ptCloudDownSampled.Location);
shp = alphaShape(P, 10,'HoleThreshold',500);
plot(shp)
%表面積を計算
totalsurfarea = surfaceArea(shp); %このとき領域が指定されているようにしたい
disp (totalsurfarea)
0 个评论
采纳的回答
Atsushi Ueno
2023-1-11
> 例えばsurfaceAreaの領域を 座標の範囲をそれぞれ X(-100:100),Y(-200:200),Z(100:1500)にしたい
%plyをロード.ダウンサンプリング
ptCloud = pcread('teapot.ply'); % test.ply の代わり
gridstep = 0.5;
ptCloudDownSampled = pcdownsample(ptCloud,"gridAverage",gridstep);
%アルファ形状作成
P=double(ptCloudDownSampled.Location);
shp = alphaShape(P, 10,'HoleThreshold',500);
%表面積を計算
totalsurfarea = surfaceArea(shp) %このとき領域が指定されているようにしたい
plot(shp)
%P(:,1) = min(1, max(-1, P(:,1))); % x座標のSaturation処理 X(-100:100) の代わりに X(-1:1)
%P(:,2) = min(1, max(-1, P(:,2))); % y座標のSaturation処理 Y(-200:200) の代わりに Y(-1:1)
P(:,3) = min(1, max( 0, P(:,3))); % z座標のSaturation処理 Z(100:1500) の代わりに Z(0:1)
shp = alphaShape(P, 10,'HoleThreshold',500);
%表面積を計算
totalsurfarea = surfaceArea(shp) % 凸形状が平に押しつぶされた分、面積が減少した
plot(shp)
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 LIDAR および点群の処理 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!