opencv - 如何计算平移矩阵?

标签 opencv image-processing computer-vision camera-calibration 3d-reconstruction

我有 2D 图像数据,在纬度和经度上有相应的相机位置。我想将像素坐标转换为 3D 世界坐标。我可以访问内部校准参数和偏航、俯仰和滚动。使用 Yaw、pitch 和 roll 我可以推导出旋转矩阵,但我不知道如何计算平移矩阵。当我处理数据集时,我无法实际访问相机。请帮我导出翻译矩阵。

最佳答案

如果您没有相机相对于地面的高度(AGL 或 ASL)或其他解析图像比例的方法(例如,通过在图像中识别已知物体),则根本无法完成大小,例如航拍图像中的足球场)。

假设您可以解决比例问题,下一个问题是您可以(或想要)多精确地模拟地形。对于第一次近似,您可以使用标准大地椭球体(例如 WGS-84)。为了获得更高的精度 - 特别是对于从较低高度拍摄的图像 - 您将需要使用 DTM 并将其注册到图像中。无论哪种方式,它都是一个标准的反投影问题:计算从相机中心到像素的光线,将其转换为世界坐标,然后与椭球体或 DTM 相交。

有很多开源库可以帮助您使用各种语言(例如 GeographicLib)实现这一点

编辑以添加建议:

在 ECEF 中表达您的相机位置。 在 ECEF 中转换来自相机的光线,同时考虑相机旋转。您可以使用库进行两种转换,例如nVector .

然后继续将光线与椭圆体相交,如 this answer 中所述。 .

关于opencv - 如何计算平移矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55762178/

相关文章:

c - 如何在 C NOT C++ 中将 Mat 转换为 IplImage

opencv - calibrateCamera 和 projectPoints 的重新投影

image-processing - 从图像中检测 LED 对象状态

python - 如何检测图像中的游戏板

opencv - OpenCV Hough线变换可提供不存在的水平线

python - 动画期间图像不更新情节

c++ - OpenCV-OpenGL 互操作性

c++ - 使用更大的 ArUco 标记提高姿势的准确性

python - 如何检测圆形腐 eclipse /膨胀

python - 在 Python 中查找图像像素和调色板颜色之间差异的最快方法