# 测试发现,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,这样就没有严重偏差的部分了,具体原因是为啥呢,因为拟合阶数不对么?有懂得大佬,多多指教!