我想在图像空间中将3D点转换为2D点。根据hartley和zisserman的《 Multiview Geometry》一书,我们只需要6点即可使用DLT计算相机投影矩阵,而我做到了。使用矩阵,我可以准确地重新投影点。
尽管投影矩阵可以正常工作,但是从中提取的固有参数却无法正常工作,每次都偏离几毫米。
下面是我可以提取的固有参数的示例
10502.9 , -257.128 , 1831.12
0 , 10425.8 , -390.996
0 , 0 , 1
我的相机的传感器尺寸/像素为1.85um,因此使用固有参数计算得出的焦距约为19mm,但根据供应商的规范,其约为16mm。
我想清除一些疑问
对我的焦距的计算是否正确,为什么固有参数中的某些值是负数?
6个点真的足以创建相机模型吗?即使我的相机投影矩阵有效,为什么提取的固有参数仍然不正确。
谢谢。
答案 0 :(得分:0)
您对焦距的计算是一阶近似,因为它忽略了非线性失真。同样,您的结果具有相当大的非对角线值(-257.1,即焦距的〜2.5%),这看起来很可疑。
六分仅是最低要求。通常,您需要执行校准程序,该程序会自动检测并匹配已知几何形状(例如,平面棋盘)的校准目标(也称为“钻机”)上图像中的大量点。这样做具有“最小二乘”意义上的“平均化”误差的效果。校准优化器通常还将使用增强器来(尝试)删除或减轻错误的点检测/匹配(“异常值”)。该过程适合通常包含非线性畸变项的镜头模型。
您可能需要检查this other answer,以获取有关适当过程的更多详细信息。