小编Epi*_*ink的帖子

使形状适合点

我试图将已知的明确定义的形状(例如,盒子,圆柱体;具有可配置的位置,旋转和尺寸)拟合到一组点,这些点具有通过采样3D网格生成的法线。我当前的方法是为每个形状定义自定义拟合函数,并将其传递给第三方优化函数:

fitness = get_fitness(shape_parameters, points)
best_parameters = external.optimise(get_fitness, initial_parameters, points)
Run Code Online (Sandbox Code Playgroud)

(作为参考,我目前正在使用Python 3并scipy.optimize.minimize带有边界,但是语言无关紧要)。

矩形的适应度函数看起来像

def get_fitness(parameters, points):
    side_fitnesses = []
    for side in [top, right, bottom, left, back, front]:
        dists = get_side_distances(parameters, points, side)
        ndevs = get_side_normal_deviations(parameters, points, side)
        side_fitnesses.append(combine_dists_and_ndevs(dists, ndevs))
    fitnesses = choose_best_side_for_each_point(side_fitnesses)
    return mean(fitnesses)
Run Code Online (Sandbox Code Playgroud)

但是,这意味着我必须确定异常值(有/没有缓存),并且一次只能拟合一个形状。

例如(在2D中),对于这些点(具有法线),我想要以下结果:

装有法线的盒子

请注意,返回了多个形状,并且忽略了异常值。通常,输入数据中可以有许多,一种或零种形状。后处理可以删除无效(例如,太小)的结果。

注意:我真正的问题是3D。我具有真实世界对象的3D网格表示的片段,这意味着我除了上面的示例中的点/法线(例如面部区域和连接性)外,还具有更多信息。

进一步阅读:

PS:我不确定StackOverflow是否是此问题的最佳StackExchange网站

algorithm shapes data-fitting

5
推荐指数
1
解决办法
353
查看次数

在ubuntu 16.04 lts上安装numba 0.30.1

如何在Ubuntu 16.04 LTS上安装Python 3的numba当前版本(0.30.1)?我的Python版本是3.5.2,我有一个Ubuntu的准系统安装(我认为是服务器版)

python llvm python-3.x numba ubuntu-16.04

2
推荐指数
1
解决办法
3527
查看次数