geomdl库fitting.approximate_surface方法拟合局部误差较大原因

# 测试发现,100个点拟合会出现明显拟合缺陷???

# 读取文件数据
data = np.loadtxt(r'E:\My Files\JiQixx\code\data\0229\points\points_even_100_intersections.txt')

# 获取数据尺寸
size_u, size_v = 10, 10

# 导入geomdl库
from geomdl import fitting
from geomdl.visualization import VisMPL as vis

# 设置拟合阶数
degree = 4

# 拟合
surf = fitting.approximate_surface(data, size_u=size_u, size_v=size_v, degree_u=degree, degree_v=degree, ctrlpts_size_u=10, ctrlpts_size_v=10)

# 可视化
surf.vis = vis.VisSurface()
surf.render()

如上,采用100个网格点拟合时结果如下:

使用open3d查看更清晰:

尝试500个点左右就没有这个问题了:

# 读取文件数据
data = np.loadtxt(r'E:\My Files\JiQixx\code\data\0229\points\points_even_500_intersections.txt')

# 获取数据尺寸
size_u, size_v = 22, 22

# 导入geomdl库
from geomdl import fitting
from geomdl.visualization import VisMPL as vis

# 设置拟合阶数
degree = 4

# 拟合
surf = fitting.approximate_surface(data, size_u=size_u, size_v=size_v, degree_u=degree, degree_v=degree, ctrlpts_size_u=10, ctrlpts_size_v=10)

# 可视化
surf.vis = vis.VisSurface()
surf.render()

出图如下:

OK,这样就没有严重偏差的部分了,具体原因是为啥呢,因为拟合阶数不对么?有懂得大佬,多多指教!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值