相对于参考坐标系的点的坐标

时间:2014-09-30 20:29:58

标签: matrix camera computer-vision kinect camera-calibration

所以我有一台相机用于获取其前方物体的相机坐标(相机的坐标,相机)。所以我能够做到这一点。

所以现在我想找到那个物体相对于我躺在地上的坐标系的坐标。 (参考坐标/世界坐标)

我理解它只是一个旋转/平移矩阵。

我很难获得这个矩阵。任何人都知道我该如何做到这一点?

所以我基本上拥有目标物体的XYZ相机坐标和我放置的轴作为我的参考坐标系

谢谢!

2 个答案:

答案 0 :(得分:2)

假设你有:

  • 一组XYZ坐标,属于您对象跟踪相机的跟踪功能。
  • 某些CAD(或世界)参考框架(设计坐标)中相同要素的XYZ坐标。

您可以使用Kabsch算法计算这些成对的点坐标集之间的最佳旋转来获得旋转和平移:https://en.wikipedia.org/wiki/Kabsch_algorithm

所以,基本上你:

  1. 获取每个坐标集[XYZ] _i的质心,其中i = 1,2。
  2. 每个坐标的de-centroid(从每个[XYZ]中减去每个质心)
  3. 形成协方差矩阵(称之为C)
  4. 将SVD应用于协方差矩阵[U,S,V] = svd(C)
  5. 旋转= V * U',其中,'是转置运算符
  6. translation = -R * centroid_of_ [XYZ] _1 + centroid_of_ [XYZ] _2
  7. 有一个很好的指南,关于在这里找到这个旋转〜翻译对:http://nghiaho.com/?page_id=671

    我希望它有所帮助。

答案 1 :(得分:0)

您可以执行校准程序以识别铺设坐标系的常见2点。这不能仅使用Kinect完成。您必须放置一个物理点来识别您的x,y坐标系。例如,您可以在0,0坐标上固定垂直极点,一旦触摸该极点,您就可以获得该物理极点的相应Kinect坐标,现在这个kinect坐标是计算机空间中的相对0,0。现在,您在计算机空间中找到的任何一点都必须重新计算到您找到的相对点。