【问题标题】:Find point world coordinates after calibration in Opencv在Opencv中校准后查找点世界坐标
【发布时间】:2012-09-10 13:19:18
【问题描述】:

OpenCV 有没有这样的功能:

  • 图像平面中标记的坐标
  • 外在参数
  • 内在参数
  • z坐标(marker和cam之间的距离,因为我用的是传感器kinect)

提供marker对应的世界坐标?

非常感谢任何帮助。谢谢!

【问题讨论】:

  • 外部参数表示相机相对于某个参考的位置。你知道世界坐标中点和参考点之间的距离吗?
  • 是的,我使用 kinect 传感器(我知道 z 坐标)。我的问题是,OpenCv 中是否有自动转换的函数?
  • 您需要提供更具体的列表,列出您所知道的。如果您知道所讨论点的 z 坐标,那么您知道的不仅仅是“图像平面中点的坐标”。你对这一点了解多少?它相对于原点的位置?它相对于相机的位置?等等。
  • 看看编辑,谢谢

标签: opencv camera-calibration calibration


【解决方案1】:

要找到标记的世界坐标,您需要它相对于相机的坐标。如果您知道相机相对于原点的姿势 P 和相对于相机的标记姿势 M,要获得相对于原点的标记姿势,只需将它们相乘即可

final = [P]*[M]

听起来你只是在努力寻找 M。你需要做的就是将你的位置乘以相机矩阵的倒数,然后乘以你的 Z 坐标。

Z*cam_mat.inv()*[x_image,y_image,1] = [x_world,y_world,z_world]

M = [1,0,0,x_world,
     0,1,0,y_world,
     0,0,1,z_world,
     0,0,0,1]

【讨论】:

  • 那么,我是否假设凸轮和标记系统坐标具有相同的方向?但是 x_w、y_w 和 z_w 的标记翻译是否尊重 cam?
  • 如果你只有1个点,那么你无法确定点的方向。您是否有多个可以从中得出方向的点?是的,x_w、y_w 和 z_w 都适用于相机。
  • 那么,如果我还想要对象的方向(尊重世界坐标),我必须使用更多标记还是一个复杂标记?
  • 是的,点仅在位置定义。仿射变换可以用 3 个点定义,透视变换可以用 4 个点定义
  • 谢谢,我会尝试更多关于对象方向的信息
猜你喜欢
  • 2015-08-10
  • 2012-08-14
  • 1970-01-01
  • 1970-01-01
  • 2014-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-29
相关资源
最近更新 更多