为什么相机内在矩阵中的焦距有两个维度?

bin*_*ang 24 computer-vision perspectivecamera camera-calibration

针孔摄像机模型中,只有一个焦距位于主点和摄像机中心之间.

但是,在计算相机的内部参数后,矩阵包含

(fx,  0,  offsetx,  0,
 0,  fy,  offsety,  0,
 0,   0,  1,        0)
Run Code Online (Sandbox Code Playgroud)

这是因为图像传感器的像素在x和y中不是正方形吗?

谢谢.

FvD*_*FvD 27

简而言之:是的.为了制作可以描述具有矩形像素的相机的数学模型,您必须引入两个单独的焦距.我将引用经常推荐的" 学习OpenCV "(第373页),它很好地涵盖了该部分,如果您想了解更多背景,我建议您参考:

"焦距fx(例如)实际上是镜头的物理焦距和各个成像器元件的尺寸sx的乘积(这应该是有意义的,因为sx具有每毫米像素单位,而F具有毫米单位,这意味着fx处于所需的像素单位中.[...]
重要的是要记住,sx和sy不能通过任何相机校准过程直接测量,物理焦距F也不是直接可测量.只有组合fx = F sx和fy = F sy才能在不实际拆卸摄像机并直接测量其组件的情况下导出.

  • 这种说法实际上是错误的,并且具有误导性:_“焦距fx(例如)实际上是镜头的物理焦距和各个成像器元件的尺寸sx的乘积”_。fx 和 fy 以**像素**为单位进行测量,因此正确的表达式是:fx [像素] = focus_length [mm] / imager_element_length [mm/pixel]。也就是说,**它是一个部门,而不是一个产品**。很难相信这样的错误实际上出现在 Learning OpenCV 书中,但我没有可以检查的副本......(?)。 (2认同)
  • @JoseLuisBlanco sx = 10 像素/mm,f = 35mm,则 sx*f = 35mm * 10 像素/mm = 350 像素,它不是除法 (2认同)