OpenCV-相机模型与相机参数

相机模型与相机参数

相机模型

相机模型是描述现实世界三维点如何投影到二维图像平面上的数学模型。理解相机模型对于计算机视觉、摄影测量和三维重建等领域非常重要。

针孔模型

针孔相机模型是最基础也是最重要的相机模型,它描述了理想情况下光线通过一个小孔在成像平面上形成倒立图像的过程。

坐标系定义

  1. 相机坐标系 O-x-y-z

    • 原点 O:光心(镜头中心)
    • Z轴:相机光轴方向(前向)
    • X轴:水平向右
    • Y轴:垂直向下
  2. 物理成像平面 O'-x'-y'-z'

    • 原点 O':位于相机坐标系 Z 轴负方向,距离光心 f(焦距)处
    • x'-y'-z'轴:分别与相机坐标系的 x-y-z 轴方向相同

成像原理

根据小孔成像原理,相机坐标系下的任意一点 P(x,y,z) 会通过光心投影到物理成像平面上的点 P'(x',y',z')。

根据相似三角形原理可得:

z/f = -x/x' = -y/y'

由于成像过程会被硬件自动翻转,因此实际应用中我们使用:

z/f = x/x' = y/y'

从而得到:

x' = fx/z
y' = fy/z

像素平面

物理成像平面通常不直接作为最终的图像表示,需要转换为像素坐标系:

  1. 像素平面 O''-u-v
    • 像素坐标系中的值均为正数
    • 成像平面位于像素坐标系 u、v 的正数区域
    • 原点 O'' 与相机坐标系原点 O 存在一个偏移 (Cx, Cy),单位为像素
    • 像素与物理成像平面之间存在缩放关系,用 (α, β) 表示

点 P' 在像素坐标系下的位置为:

u = αx' + Cx
v = βy' + Cy

将之前的公式代入可得:

u = αfx/z + Cx = fx * x/z + Cx
v = βfy/z + Cy = fy * y/z + Cy

其中:

  • αf = fx(x轴方向的焦距,以像素为单位)
  • βf = fy(y轴方向的焦距,以像素为单位)

内参矩阵

将上述关系写成矩阵形式:

s * [u]   [fx  0  Cx] [x]
    [v] = [0   fy Cy] [y]
    [1]   [0   0   1] [z]

其中 s 为任意尺度因子。

令:

K = [fx  0  Cx]
    [0   fy Cy]
    [0   0   1]

矩阵 K 即为相机的内参矩阵(Intrinsic Matrix),包含了相机的内部参数:

  • fx, fy:x 和 y 方向的焦距(以像素为单位)
  • Cx, Cy:主点(光轴与图像平面的交点)的像素坐标

畸变模型

由于实际镜头存在制造和装配误差,会产生图像畸变,主要包括径向畸变和切向畸变。

径向畸变

径向畸变是由于透镜形状缺陷导致的图像点沿径向方向偏移,分为桶形畸变(k1<0)和枕形畸变(k1>0)。

数学模型:

[xd, yd] = (1 + k1*r² + k2*r⁴ + k3*r⁶ + k4*r⁸ + ...) * [x, y]

其中:

  • (x, y):理想针孔模型投影得到的归一化图像点
  • r² = x² + y²:该点到光学中心的距离平方
  • k1, k2, k3, k4:径向畸变系数

切向畸变

切向畸变是由于透镜与传感器装配不理想导致的图像点沿切向方向偏移。

数学模型:

xt = 2*p1*x*y + p2*(r² + 2*x²)
yt = p1*(r² + 2*y²) + 2*p2*x*y
[x_final, y_final] = [xd, yd] + [xt, yt]

其中:

  • p1, p2:切向畸变系数
posted @ 2025-08-06 00:28  aaooli  阅读(48)  评论(0)    收藏  举报