我正在做一个移动增强现实应用程序。我需要使用棋盘校准来校准我的相机以获取内部和外部参数。
我可以假设如果我校准我的nexus 4,所有nexus 将具有相同的焦距、偏斜因子和失真矩阵吗?
谢谢
我正在做一个移动增强现实应用程序。我需要使用棋盘校准来校准我的相机以获取内部和外部参数。
我可以假设如果我校准我的nexus 4,所有nexus 将具有相同的焦距、偏斜因子和失真矩阵吗?
谢谢
大多数相机都带有编码到相机管道中的不失真操作,因此您很可能根本不需要搜索失真参数。只需检查图像外围的直线是否真的是直的。我希望偏斜接近于零并且 fx=fy 因为像素是正方形的。
除了您提到的参数外,还有两个主要点 Cx、Cy(光轴与传感器的交点,通常接近 w/2、h/2)。所以总的来说,你只有 3 个参数:F、Cx、Cy,第一个参数在同一型号的手机中变化最大(根据我的经验)。如果您不使用手机来计算另一个相机的相对位置,您很可能只需要准确地知道焦距。
显然,当您需要担心单个参数时,有更简单的方法来获取它,而不是使用棋盘装置并尝试找到除内在参数之外的外在参数。即使没有测量,您也可以弄清楚 - 只需获取相机视野(例如 getHorizontalViewAngle())并使用
tan(fov) = image_width/2 / f
或者,您可以做一个简单的测量,使您的手机与目标平行:对于大小为 H 的垂直目标,它产生 h 像素的图像,您得到 f 为
f/z = h/H
好吧,答案可以是“是”也可以是“否”。正如您所说,在现实生活中,没有一台相机与另一台相机完全相同,即使它们来自同一制造商。但是,为了让我们的生活更轻松,是的,我们使用这种简化,即使对于摄影测量/计算机视觉项目,精度要求也相当高。
嗯...如果这个相机有内置的自动对焦,焦距会一直改变