【问题标题】:Calculating and plotting differences between two point clouds计算和绘制两个点云之间的差异
【发布时间】:2019-10-29 05:25:07
【问题描述】:

我有两个不同维度的点云(XYZ 坐标),并希望能够计算它们之间的差异(结果为 XYZ 数组,Z 是它们之间的距离),然后将两者绘制为表面连同作为不同颜色的差异。

这个问题似乎很相关,但不是我想要的:Subtract two trisurf plots from one another

这里是一些示例数据和代码。我不知道如何将一个数据集插入另一个数据集。

%Point Cloud 1
X1 = randn(100,1);
Y1 = randn(100,1);
Z1 =(exp(-X1.^2-Y1.^2));
% Point Cloud 2
X2 = randn(107,1);
Y2 = randn(107,1);
Z2 = (exp(-X2.^2-Y2.^2));

tri1 = delaunay(X1, Y1);
tri2 = delaunay(X2, Y2);

trisurf(tri1, X1, Y1, Z1, 1)
hold on
trisurf(tri2, X2, Y2, Z2, 100)
hold off

我上面提到的问题指向这里:How Do I Generate a 3-D Surface From Isolines? 但我是在 Matlab 中插值 3d 数据的新手,似乎无法弄清楚。任何帮助,将不胜感激。谢谢。

【问题讨论】:

  • 目标是什么,为什么需要它们之间的高度?在什么之间,delauny 会给你三角形,你可以在平面之间找到​​ hiehgt?但是飞机可能会重叠等?
  • @Ben 我的点云是在两个时间间隔拍摄的表面,我正在尝试可视化沉积物沉积和侵蚀的区域。

标签: matlab interpolation point-clouds


【解决方案1】:

我认为这会有所帮助,实际上它只是您没有的插值方法。

%Point Cloud 1
X1 = randn(100,1);
Y1 = randn(100,1);
Z1 =(exp(-X1.^2-Y1.^2));
% Point Cloud 2
X2 = randn(107,1);
Y2 = randn(107,1);
Z2 = (exp(-X2.^2-Y2.^2));

% Mesh for interpolation
x=linspace(min([X1;X2]),max([X1;X2]),40);
y=linspace(min([Y1;Y2]),max([Y1;Y2]),40);
[X,Y]=meshgrid(x,y);

% Calculate interpolants
V1=TriScatteredInterp(X1,Y1,Z1);
V2=TriScatteredInterp(X2,Y2,Z2);
F1=V1(X,Y);
F2=V2(X,Y);

% Plot to check results!
figure(1)
scatter3(X1,Y1,Z1)
hold on
mesh(X,Y,F1)
hold off
figure(2)
scatter3(X2,Y2,Z2)
hold on
mesh(X,Y,F2)
hold off

你也可以使用griddata:

% Calculate interpolants
F1=griddata(X1,Y1,Z1,X,Y);
F2=griddata(X2,Y2,Z2,X,Y);

【讨论】:

  • 非常感谢您的回复。代码效果很好,使插值更简单。有没有办法可以从点云 1 中减去点云 2?我希望能够可视化两个点云之间存在正变化和负变化的区域。
  • 我特别不能做的是在上面的示例中获取一个代表 F2 - F1 的数组。 F2 - F1 返回一个 40 x 40 矩阵,但我希望能够将 F2 - F1 的结果用作网格、冲浪或 trisurf 图中的颜色值。
  • mesh(X,Y,F1-F2) 会给你一个网格图,或者mesh(X,Y,zeros(size(X)),F1-F2) 应该给你一个平面,上面有颜色以反映F1F2 之间的区别。您也可以使用contour(X,Y,F1-F2)contourf(X,Y,F1-F2)
  • 感谢您的帮助@David。我将您的前两个建议合并到 mesh(X,Y,F2,F2-F1) 中,这给了我我需要的东西:我的数据的 3d 图,表面着色以反映 F2F1 之间的差异
猜你喜欢
  • 1970-01-01
  • 2011-09-19
  • 1970-01-01
  • 1970-01-01
  • 2020-05-13
  • 1970-01-01
相关资源
最近更新 更多