如何根据给定Z值的图片计算三维坐标

How to calculate the 3D coordinate from a picture with given Z-value

本文关键字:计算 三维 坐标 何根      更新时间:2023-10-16

我有一张平面的照片,上面有4个已知点。我有内在和外在的相机参数,还有(使用罗德里格斯函数)相机的位置。该平面被定义为我的地面标高(Z=0)。如果我在图像中选择一个点,有没有一种简单的方法来计算坐标,这个点在我的平面上的位置?

在处理3D渲染时,没有多少东西可以被标记为"容易"。

对于你的问题,我会研究光线追踪。我不会试图解释它,因为大多数网站会做得更好,然后我可以解释。

当您在calib3d模块中查看opencv时。你会看到这个方程式:

https://docs.opencv.org/master/d9/d0c/group__calib3d.html

请向下滚动链接并查看透视变换方程

根据您所说的,您可以声明平面为地平面(Z=0)。您还知道intersic(像素焦点,图像中心)相机参数,以及extrinsic(旋转和平移)相机参数。你想访问图像中的一些像素(是吗?),然后从那里,你想估计它在平面上的位置??

您可以在opencv的calib3D模块中使用triangulatePoints()函数。你至少需要两张照片。

但在我看来,你的情况似乎不太可能,如果你试图检测4个已知点,你必须首先定义这些平面的世界坐标,通常,你将平面的左上角定义为原始(0,0,0),然后,你将通过手动计算知道这4个已知的点在世界坐标中的位置。当你在opencv程序中检测到它时,它会给你这4个点的像素坐标。然后,通常,人们期望计算的是姿势(旋转和平移)。

或者,如果你的情况是你所说的,你可以根据透视变换方程制作一个简单的矩阵运算代码。