相机投影矩阵正确重投影但提取的内在值不正确
Camera projection matrix correct reprojection but incorrect intrinsic value extracted
我想将图像中的 3D 点转换为 2D 点 space。根据 hartley 和 zisserman 的书 Multiview Geometry,我们只需要 6 个点就可以用 DLT 计算相机投影矩阵,我做到了。使用矩阵,我可以准确地重新投影这些点。
虽然投影矩阵工作正常,但从中提取的内参却不是,每次都偏离几毫米。
下面是我能够提取的内部参数的例子
10502.9 , -257.128 , 1831.12
0 , 10425.8 , -390.996
0 , 0 , 1
我相机的传感器 size/pixel 是 1.85um,所以我用内在参数计算的焦距约为 19mm,但根据供应商规格,它约为 16mm。
我想澄清一些关于
的疑问
我的焦距计算是否正确,为什么内部参数中的某些值是负数。
6个点真的足够创建相机模型吗?为什么我的camera projection matrix可以用了,为什么提取出来的内参还是不对
谢谢。
您计算的焦距是一阶近似值,因为它忽略了非线性失真。此外,您的结果具有相当大的非对角线值(-257.1,或约 2.5% 的焦距),这看起来很可疑。
六分只是最低限度。您通常会遵循一个校准程序,该程序会自动检测并匹配图像中已知几何形状(例如平面棋盘)的校准目标 (a.k.a. "rig") 上的大量点。这样做会产生 "averaging away" 最小二乘意义上的误差。校准优化器通常还会使用稳健器来(尝试)移除或降低错误点 detection/matches ("outliers")。该过程适合通常包含非线性失真项的镜头模型。
您可能需要查看 this other answer 以了解有关适当程序的更多详细信息。
我想将图像中的 3D 点转换为 2D 点 space。根据 hartley 和 zisserman 的书 Multiview Geometry,我们只需要 6 个点就可以用 DLT 计算相机投影矩阵,我做到了。使用矩阵,我可以准确地重新投影这些点。
虽然投影矩阵工作正常,但从中提取的内参却不是,每次都偏离几毫米。
下面是我能够提取的内部参数的例子
10502.9 , -257.128 , 1831.12
0 , 10425.8 , -390.996
0 , 0 , 1
我相机的传感器 size/pixel 是 1.85um,所以我用内在参数计算的焦距约为 19mm,但根据供应商规格,它约为 16mm。
我想澄清一些关于
的疑问我的焦距计算是否正确,为什么内部参数中的某些值是负数。
6个点真的足够创建相机模型吗?为什么我的camera projection matrix可以用了,为什么提取出来的内参还是不对
谢谢。
您计算的焦距是一阶近似值,因为它忽略了非线性失真。此外,您的结果具有相当大的非对角线值(-257.1,或约 2.5% 的焦距),这看起来很可疑。
六分只是最低限度。您通常会遵循一个校准程序,该程序会自动检测并匹配图像中已知几何形状(例如平面棋盘)的校准目标 (a.k.a. "rig") 上的大量点。这样做会产生 "averaging away" 最小二乘意义上的误差。校准优化器通常还会使用稳健器来(尝试)移除或降低错误点 detection/matches ("outliers")。该过程适合通常包含非线性失真项的镜头模型。
您可能需要查看 this other answer 以了解有关适当程序的更多详细信息。