如何在Matlab中对3D点云进行曲面拟合?

4

我有一组来自现实世界的点云,我想在它们上面拟合一个曲面并计算出这些点的曲线。由于这些点是来自真实世界的,所以它们的x、y和z之间的差异很大。当我使用这里的代码时,在Matlab中遇到以下错误:

Warning: Rank deficient, rank = 2,  tol =   7.9630e-007.

这意味着我的数据状况不佳。其中一些数据是:
32512032.3900000    5401399.69000000    347.030000000000
32512033.1400000    5401399.79000000    346.920000000000
32512036.3000000    5401399.62000000    346.840000000000
32512037.3900000    5401399.95000000    346.870000000000
32512034.4800000    5401400                 346.930000000000
32512035.6000000    5401400.05000000    346.950000000000
32512036.6900000    5401400.38000000    346.980000000000
32512037.9600000    5401400.30000000    346.910000000000
32512033.7600000    5401400.42000000    346.880000000000
32512034.8700000    5401400.48000000    346.960000000000

我也在Matlab中使用fit公式。

sf = fit( [x, y], z, 'poly23');

然后看到了同样的错误:

Warning: Equation is badly conditioned. Remove repeated data points
         or try centering and scaling.

这种方法适用于在这些点上拟合表面或平滑曲线吗?

看一下这个链接:http://www.mathworks.fr/fr/help/matlab/scattered-data-interpolation.html - hyamanieu
1个回答

3

编辑

您可以尝试:

居中显示

%% Centering
oldData = data
center = mean(data);
centerMatrix = ones(size(data,1),1)*center; 
data = data - centerMatrix;         

扩展性

%% Scaling
scale = max(abs(data));
scaleMatrix = ones(size(data,1),1)*scale;
data = data./scaleMatrix;

但是不要忘记最后……
xx = scale(1)*xx + center(1)
yy = scale(2)*yy + center(2)
zz = scale(3)*zz + center(3)

居中将数据移至原点。缩放使分布更加均匀,因此您不会更好地适合一条轴线。之后您必须对结果进行非缩放和非居中处理。
居中是安全的。它应该做你期望的事情并使结果更稳定。 缩放不是很安全。确保它给出您想要的内容;如果只有居中就足够了,那么您可能会发现这就是您所需的全部。
在任何情况下,由于点云巨大,您应该将其应用于一次本地补丁。
为什么我说“快速而肮脏”?我的意思是快速编码。有许多专门处理这个问题的出版物,它们运行得更快。它们会产生更好的结果吗?好吧,这取决于您如何定义更好。
对于真实扫描环境,没有太多的基础真实数据,如果您正在谈论扫描激光。如果您的点云来自其他东西(立体视觉,运动结构),则可以尝试更多数据集。
没有基础真实性,很难说什么是“好”和“坏”的。通常这非常明显。但是由于数据量,点云操作并不是微不足道的。
“居中”是我建议使用适应度进行快速而肮脏的解决方案。当然,您不能一次处理所有数据,但是如果您仅选择一些本地点(甚至几百或几千个)并首先将其居中,那么您应该会得到更好的结果。
问题出现的原因是任何两个点之间的差异很小,但向量本身的量级相当大。如果您获取数据,将其居中(您甚至可以缩放),然后拟合并反向操作,则可以按块执行此操作。

谢谢@timbo。 我把我的数据居中了,看到了结果。 但是我不知道什么是居中?为什么会弄脏?居中会破坏我的数据吗? - Ahmad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接