matrix - 点相对于引用坐标系的坐标

标签 matrix camera computer-vision kinect camera-calibration

所以我有一个相机,我用它来获取它前面的物体的相机坐标(物体相对于相机的坐标)。所以我能够实现这一目标。

现在我想找到该物体相对于我在地面上放置的坐标系的坐标。 (引用坐标/世界坐标)

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

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

所以我基本上有了目标对象的 XYZ 相机坐标以及我放置作为引用坐标系的轴

谢谢!

最佳答案

假设你有:

  • 属于对象与相机相关的跟踪特征的一组 XYZ 坐标。
  • 某些 CAD(或世界)引用系(设计坐标)中相同特征的 XYZ 坐标。

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

所以,基本上你:

  1. 获取每个坐标集[XYZ]_i的质心,其中i= 1, 2。
  2. 对每个坐标去质心(从每个 [XYZ] 中减去每个质心)
  3. 形成协方差矩阵(称为 C)
  4. 将 SVD 应用于协方差矩阵 [U,S,V] = svd(C)
  5. 旋转 = V*U',其中,' 是转置运算符
  6. 翻译 = -R * centroid_of_[XYZ]_1 + centroid_of_[XYZ]_2

这里有一个关于找到这个旋转~翻译对的很好的指南:http://nghiaho.com/?page_id=671

希望对您有所帮助。

关于matrix - 点相对于引用坐标系的坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26129537/

相关文章:

opencv - 在特定位置从 cv::Mat 中查找像素颜色

c++ - SSE 内联汇编和可能的 g++ 优化错误

swift - ARKit – 渲染距离超过 1000 米的物体

azure - 计算机视觉 2.0 PDF 到文本不起作用

ios - 如何在 Apple Vision 框架中拍摄检测到的矩形的照片

c++ - 如何在 Cuda 编程中对矩阵进行逐元素指数运算

algorithm - 枚举具有固定行和列总和的矩阵组合

java - 相机预览 View ,水平,而应该是垂直 在 HTC Tattoo 上工作正常,在 Nexus 上坏了

javascript - getUserMedia - 如何检测设备是否真的有摄像头

android - OpenCV ORB 特征检测器如何工作?