【发布时间】:2017-05-09 17:17:05
【问题描述】:
我是 OpenCV 的初学者,我想从 2D(投影到图像上)中找到 3D 点,并且知道一个点的三分之二的世界坐标。
我有什么:
- 已校准的相机(已知:内在参数矩阵、畸变系数向量)
- 旋转向量和平移向量
- (u, v) - 图像上点的坐标
- 一个点的两个已知世界坐标和一个未知坐标
问题变体 #1 已知:X,Y 未知:Z
问题变体 #2 已知:X,Z 未知:Y
问题变体 #3 已知:Y、Z 未知:X
如何找到第三个未知坐标?有可能吗?
【问题讨论】:
-
我假设
rotation vector和translation vector是相机位姿,这是允许将世界坐标/帧中的点转换为相机坐标/帧的齐次变换。X、Y和Z以世界坐标/帧而不是相机坐标/帧表示。对吗? -
如果是这样,我认为#2 和#3 应该是可能的:使用
rvec和tvec将Z_w转换为Z_c,将u和v转换为标准化相机帧(x,y)使用内在参数,然后将x或y乘以Z。你应该得到X_c或Y_c并得到X_w或Y_w,你必须乘以使用rvec和tvec的逆齐次变换。我不知道#1。 -
从失真、内在函数和外在函数中,您可以计算出从相机中心穿过像素的 3D 射线。如果你跟随那条射线,你最终会找到具有你想要的 2 个坐标值的点,然后你也知道第三个。
标签: python opencv 3d computer-vision