如何根据给定Z值的图片计算三维坐标
How to calculate the 3D coordinate from a picture with given Z-value
我有一张平面的照片,上面有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个点的像素坐标。然后,通常,人们期望计算的是姿势(旋转和平移)。
或者,如果你的情况是你所说的,你可以根据透视变换方程制作一个简单的矩阵运算代码。
相关文章:
- 如何将三维尺寸不固定的三维阵列展平为一维阵列
- 有效地计算多维数组的累积和?
- 如何使用qt缩放三维网格
- 三维数组中的C/C++DWORD到BYTE和BYTE到DWORD的转换
- 使用vtkImageReslice重新切片三维原始图像
- 特征:创建一个具有函数的三维阵列
- 扩充矩阵的行缩减-三维样条曲线计算
- 使用pcl transformcloud将三维点平移并旋转到原点
- 用C++从三维矢量中删除元素
- 如何在Openscenegraph中从二维鼠标点击的屏幕坐标点计算三维点(世界坐标)
- 如何根据给定Z值的图片计算三维坐标
- 计算三维AABB的侧面
- 如何累积三维三角形网格的边?用c语言计算网格边的算法
- Cuda,计算三维物体之间的距离矩阵
- 点云库中的凸包计算在二维和三维都失败
- 在三维中从起点和角度计算一条线
- 利用OpenCV从二维图像点计算三维世界点
- 从三个三维点计算变换矩阵
- 计算三维点与平面之间的距离,c++
- 三维阵列偏移量计算