计算旋转/平移矩阵以使测量点与标称点匹配

时间:2014-04-07 20:56:52

标签: matrix computer-vision measurement point-cloud-library coordinate-transformation

我有两个矩阵,一个包含3D坐标,这个坐标是每个CAD模型的标称位置,另一个包含使用CMM的实际测量位置的3D坐标。每个标称点都有相应的测量值,换句话说,两个矩阵的长度和宽度相等。我不确定将测量点拟合到标称点的最佳方法是什么。我需要一种计算平移和旋转的方法,以应用于所有测量点,这些测量点产生每个标称/测量点对之间的最小距离,同时不超过任何其他点处的最大距离的允许公差。这类似于点云的配准,但不同之处在于每对标称/测量点对它们允许的距离具有唯一的容差/限制。某些配对的限制较高,而其他配对则较低。我在.Net中进行编程,并将Point Cloud Library(PCL),OpenCV,Excel和基本矩阵操作作为可能的方法。 这是数据样本

X Nom    Y Nom  Z Nom   X Meas  Y Meas  Z Meas  Upper Tol   Lower Tol
118.81  2.24    -14.14  118.68  2.24    -14.14  1.00    -0.50
118.72  1.71    -17.19  118.52  1.70    -17.16  1.00    -0.50
115.36  1.53    -24.19  115.14  1.52    -23.98  0.50    -0.50
108.73  1.20    -27.75  108.66  1.20    -27.41  0.20    -0.20

下面是我需要计算的矩阵类型,以便最好地将测量点拟合到标称点。我将它乘以测量点矩阵,以最适合标称点矩阵。

    Transformation  
0.999897324 -0.000587540    0.014317661
0.000632725 0.999994834 -0.003151567
-0.014315736    0.003160302 0.999892530
-0.000990993    0.001672040 0.001672040

1 个答案:

答案 0 :(得分:0)

这确实是刚性注册算法的工作。

为了处理您的容差,您有几个选择:

  • 简单选项:运行严格注册,如果结果在公差范围内,则检查
  • 比较难的选项:在CAD中偏移您的点,您的公差不平衡 其余的与前一个选项相同。
  • 最难选择:您可能想要做的是并在第二个选项中获得偏移量,并根据测量位置和设置公差添加权重函数。这个权重函数应该以这样一种方式影响能量函数:当你有一个小的公差时,各个函数向量会更大,而当你有更大的公差时,它们会更小。

现在关于实现,对于选项1和2,您最快的结果可能是:

如果您真的想要选项3,您可以这样做:

  • 在PCL库源代码中创建权重函数并进行编译
  • 在.net中自己制作完整的ICP算法:
    • http://www.math.tau.ac.il/~dcor/Graphics/adv-slides/ICP.ppt
    • 使用math.numerics稀疏矩阵/向量代数和求解器创建自己的优化器
    • 从以下方面实现Lev-Marq或Gauss-Newton优化器:
      非线性最小二乘问题的imm方法,K。Madsen,2004
    • 生成自己的函数向量和jacobian矩阵(带权重函数)
    • 要有足够的耐心才能共同努力:)
    • 将结果发布在StackOverflow上,等待C#.net
    • 中的ICP