繁体   English   中英

如何在matlab中的3D点云上拟合曲面?

[英]How can I fit a surface on 3D point cloud in matlab?

我有一个来自现实世界的点云,我想在它们上面拟合并计算点的曲线(!)。 由于点在现实世界中,因此点的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.

这种类型的点是否适合曲面或平滑曲线?

编辑

你可以试试:

定心

%% 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)

居中将数据移动到原点。 缩放使得传播更加平等,因此您不能比其他轴更好地适应一个轴。 之后您必须取消缩放和取消中心结果。

定心是安全的。 它应该做你期望的,并使结果更稳定。 缩放不是那么安全。 确保它能满足你的需求; 如果居中足够,您可能会发现这就是您所需要的。

在任何情况下,由于点云很大,您应该一次将其应用于本地补丁。

为什么我说“快而又肮脏?” 我的意思是快速编码。 有许多出版物专门处理这个问题,它们会跑得更快。 他们会产生更好的结果吗? 嗯,这取决于你定义的更好。

如果您正在谈论扫描激光,那么对于真实的扫描环境,没有很多地面实况数据。 如果您的点云来自其他东西(立体视觉,运动结构),您可以尝试更多数据集。

没有事实真相,很难说什么是“好”和“坏”。 通常很明显。 但由于数据量的原因,点云操纵并非易事。

如果您想尝试使用fit快速而肮脏的解决方案,那么旧答案中心就是我的建议。 当然,您不能同时使用所有数据,但如果您只选择几个本地点(甚至几百或几千)并将其居中,那么您应该获得更好的结果。

问题出现了,因为你的任何两点之间的差异很小,但矢量本身的大小非常大。 如果您获取数据,将其居中(如果您愿意,您甚至可以进行缩放),然后您可以适应它并反转操作。 一次为一块做这件事。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM