0

我知道对于 3d 重建,您可以从两个图像中获得除比例因子之外的所有内容。

但是你能计算出第一张图像中的一个点在第二张图像中的位置吗?比例因子在这里不应该是有趣的吗?!

sensorCheckPoint.x = (pixelCheckPoint.x - principlePoint.x) / focal;
sensorCheckPoint.y = (pixelCheckPoint.y - principlePoint.y) / focal;
sensorCheckPoint.z = 1;

sesorCheckPointNew = R * sensorCheckPoint + t;

我通过用 recoverPose() 分解 Essential Mat 得到 R 和 t;但是新的 Point 甚至不在图像中。

如果我想错了,有人可以告诉我吗?谢谢

编辑

我只知道 checkPoint 的像素坐标而不是真正的 3d 坐标

编辑2

如果您知道 R 和 t 但不知道 t 的长度。应该可以假设两个图像中已知的点 M 的 z1,然后得到结果 t。对?然后应该可以重新计算第一个图像中它位于第二个图像中的每个点。

z2 则对应于 t。但是 z2 和 t 之间的依赖关系是什么?

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

编辑3

如果我只是假设 M1 的 z=1。我从这两个图像中计算出 R 和 t。然后我就知道什么是绿色了。因此我需要求解这个线性方程来得到 s 并得到真正的 t。

我使用前两行两个解决两个变量。但结果似乎没有写出来。

等式不正确吗?

在此处输入图像描述

4

2 回答 2

1

我认为您对几何的理解很接近。

我不关心真正的 3D 系统。它只需要相对正确。这样我就可以重新计算从第一张图像到第二张图像的任何点的位置?

第二幅图像中的位置将取决于第一幅图像中点的实际 3D 位置。因此,您确实必须将像素具体化为实际的 3D 点才能执行您想要的操作。如果没有深度信息,图像 1 中的像素可以位于图像 2 中沿线的任何位置。

您计算sensorCheckPoint齐次坐标。在此设置中,将这些坐标视为相机系统中的实际 3D 坐标(在 z=1 处)可能会很有见地。想象一下你自己在那个相机上,向下看 Z。考虑从相机中心到这个点的光线。由于您知道 R 和 t,因此您也可以在世界空间中表达此射线(通过一些心理操练来找到正确的变换)。这条射线只是 3D 中的矢量。您可以对其进行归一化并将其乘以一个因子,以在距相机中心已知距离的这条射线上的任意位置找到您自己的 3D 点。

在世界空间中拥有一个实际的 3D 点后,您可以使用 projectPoints() 将其投影到另一个相机的图像平面上。

于 2015-11-12T22:05:18.197 回答
0

是什么让您认为 z=1 处的点在两个相机中都必须可见?

于 2015-11-10T17:10:46.380 回答