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