gpt4 book ai didi

python - 定义 3-D 空间中变换估计的精度

转载 作者:行者123 更新时间:2023-11-28 04:46:11 24 4
gpt4 key购买 nike

我正在使用 Umeyama's SVD method估计两个 3-D 点集之间的刚性变换。请参阅下面的代码片段-

Eigen::Matrix4f T_svd;
const pcl::registration::TransformationEstimationSVD<pcl::PointXYZ, pcl::PointXYZ> trans_est_svd;
trans_est_svd.estimateRigidTransformation(source, target, T_svd);

随后使用上述估计的变换矩阵对源点集进行了变换

pcl::PointCloud<pcl::PointXYZ> target_est;
pcl::transformPointCloud(source, target_est, T_svd);

为了计算上述转换估计的准确性,我是这样处理的:

import numpy as np

# target and target_est clouds were saved as csv
y = np.loadtxt(target, delimiter=',')
y_est = np.loadtxt(target_est, delimiter=',')

y_est = np.sqrt(np.sum((y_est)**2, axis=1))
y_sum = np.sqrt(np.sum((y)**2, axis=1))

acc = y_est/y_sum
mean_acc = acc.mean()

上述代码的平均准确度显示为 1.0001,这让我怀疑我的方法。

我想知道如何定义 3-D 空间中变换估计的准确性。

最佳答案

对我已经在 pcl 用户论坛上给出的答案提供更多见解。

看看 Model Based Training, Detection and PoseEstimation of Texture-Less 3D Objects in Heavily Cluttered Scenes 的等式 1 和 2|来自 Hinsterstoisser 等人。俗称LineMOD。这是刚性物体姿态估计问题的常用方法。

公式 1 适用于非对称对象,公式 2 适用于对称对象。我无法输入表达式,因为 Stack Overflow 不支持 mathjax,但总体思路是:

  1. 您的点的估计位置与实际位置之间的差异的范数,对所有点求和,按点数归一化
  2. 第一个的不同之处在于您不再强制要求点对应。源云中的每个点都会选择目标云上最近的点。然后像以前一样执行求和和平均。

这不完全是堆栈溢出问题,而是数学交换问题。

关于python - 定义 3-D 空间中变换估计的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49216605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com