来自 Unity 的相机内在矩阵

Posted

技术标签:

【中文标题】来自 Unity 的相机内在矩阵【英文标题】:Camera intrinsics matrix from Unity 【发布时间】:2021-10-31 19:31:12 【问题描述】:

我在 Unity 中使用物理相机,设置焦距 f,传感器尺寸 sx 和 sy。是否可以使用这些参数和图像分辨率来创建相机校准矩阵?可能我需要以像素为单位的焦距以及表示图像平面中心与相机光轴的偏差的 cx、cy 参数。在这种情况下,cx=w/2 和 cy=h/2 是否正确(w:width, h:height)?

我需要校准矩阵来使用 Unity 中的相机姿势在 OpenCV 中计算单应性。

【问题讨论】:

【参考方案1】:

是的,这是可能的。我已经使用多种不同的相机模型(针孔模型、鱼眼镜头、多项式镜头模型等)做到了这一点。

用opencv校准你的相机,把校准参数放到shader中。您需要编写自定义着色器。看看我之前的问题。 Camera lens distortion in OpenGL

这里不需要单应性。

@Tuebel 给了我一段很好的代码,我已经成功地将它改编为真实的相机模型。

最难的部分是管理 opengl 相机坐标和 opencv 相机坐标之间的差异。相机标定参数当然是根据opencv相机坐标标定的。

【讨论】:

以上是关于来自 Unity 的相机内在矩阵的主要内容,如果未能解决你的问题,请参考以下文章

如何使用立体对合成新的相机视图?

相同相机的内在参数相同?

对极几何-本质矩阵-基本矩阵

如何从相机投影矩阵计算 ext 和 int 参数

具有已知内在和外在矩阵的立体视觉 3d 点计算

Unity3D Camera透视相机到正交相机插值