关于相机内参中的焦距fx和fy

当我们用OpenCV相机标定函数去标定相机时,我们能得到一个相机的内部参数,简称“内参”。内参是一个\(3 \times 3\) 的矩阵,

\[A=\begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix}\]

其中\(c_x\)和\(c_y\)很容易理解,它们表示相机光轴在图像坐标系中的偏移量,以像素为单位。但对于焦距\(f_x\)和\(f_y\)就不是很直观了。为什么一个相机会出现两个焦距呢?在我们习惯使用的相机针孔模型中,一个透镜的焦距通常只有一个。然而我们不能用针孔模型去解释这两个内参中的焦距。但我们可以从透视规律来解释这两个焦距。

由相机拍摄得到的图像是遵从线性透视规律的。也就是说,一个物体的的宽和高会随着这个物体与相机间的距离增加而按比例变小。而对于一张矩形的图片,一个物体的宽和高则会根据物体与相机的距离按不同的比例变小。而这个比例,就是根据相机的焦距得到的。现在我们再利用针孔模型推导出这个比例关系,

\[\frac{f} {d} = \frac{x} {w} = \frac{y} {h}\]

以上是当图像是正方形时的关系,就是当\(f_x=f_y\)时的情况。其中f是相机的焦距,以像素为单位;d为物体到相机的距离,单位为米;x是物体在图像中的宽度,w为物体的实际宽度;y是物体在图像中的高度,而h是物体的实际高度。而对于一张矩形的图像,则有

\[\frac{f_x} {d} = \frac{x} {w} \]

\[\frac{f_y} {d} = \frac{y} {h} \]

 这就是相机内参有两个焦距的原因了。

posted @ 2017-04-02 16:11  zipeilu  阅读(26026)  评论(0编辑  收藏  举报