gpt4 book ai didi

opencv - 用R和t计算新的PixelCoordinates点

转载 作者:行者123 更新时间:2023-12-02 17:46:40 25 4
gpt4 key购买 nike

我知道对于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坐标

EDIT2

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

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

enter image description here

enter image description here

enter image description here

EDIT3

如果我只是假设M = 1的z = 1。然后根据这两个图像计算R和t。然后我知道一切都是绿色。因此,我需要解决此线性方程以获得s和获得实数t。

我用前两行分别解决了两个变量。
但是结果似乎并不正确。

等式不正确吗?

enter image description here

最佳答案

我认为您对几何学的了解非常接近。

I don't care about the real 3D System. It only has to be relatively correct. So that I can recalculate the position of any point from the first image to the second images?



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

您可以计算 sensorCheckPoint的同构坐标。在此设置中,将这些坐标作为相机系统中的实际3D坐标查看(z = 1时)会很有帮助。想象一下自己在那台摄像机上,俯视Z。考虑一下从摄像机中心到这一点的光线。由于您知道R和t,因此您也可以在世界空间中表达此光线(需要进行一些心理体操才能找到正确的变换)。射线只是3D中的 vector 。您可以对其进行归一化并将其乘以一个因子,以在与相机中心相距已知距离的情况下,在此光线的任何位置找到自己的3D点。

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

关于opencv - 用R和t计算新的PixelCoordinates点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33632973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com