Bootstrap

理想化相机模型的相机内参

理想化相机模型的相机内参计算

在理想化的相机模型中,假设没有畸变,计算相机内参可以根据图像的分辨率和相机的视角(视场角,FOV)来进行。相机内参通常由焦距(fx, fy)和主点(cx, cy)组成,这些参数可以通过以下方式计算:

1. 相机内参定义

  • fx, fy: 焦距,单位通常是像素。表示相机在x和y方向上的焦距。
  • cx, cy: 主点,通常是图像中心点的坐标。

2. 根据视角和图像分辨率计算相机内参

假设你有一个理想化的相机模型,已知图像的宽度(W)、高度(H)和水平视场角(Horizontal FOV, θ h θ_h θh),你可以计算相机内参如下:

2.1 计算焦距 fx 和 fy

水平视场角 θ h θ_h θh 通常是已知的。可以通过以下公式计算焦距 fx:

f x = W 2 ⋅ tan ⁡ ( θ h 2 ) fx = \frac{W}{2 \cdot \tan(\frac{\theta_h}{2})} fx=2tan(2θh)W

对于垂直视场角 θ v θ_v θv,如果已知,也可以计算 fy。否则,可以假设像素是方形的,即 fx = fy:

f y = H 2 ⋅ tan ⁡ ( θ v 2 ) fy = \frac{H}{2 \cdot \tan(\frac{\theta_v}{2})} fy=2tan(2θv)H

如果没有垂直视场角 θ v θ_v θv 的信息,可以假设 θ v θ_v θv = θ h θ_h θh,使用相同的公式计算 fy。

2.2 计算主点 cx 和 cy

主点通常被设置为图像的中心:

c x = W 2 cx = \frac{W}{2} cx=2W

c y = H 2 cy = \frac{H}{2} cy=2H

3. 示例计算

假设图像的宽度 W = 640 像素,高度 H = 480 像素,水平视场角 θ_h = 60°:

3.1 计算 fx

f x = 640 2 ⋅ tan ⁡ ( 60 ° 2 ) fx = \frac{640}{2 \cdot \tan(\frac{60°}{2})} fx=2tan(260°)640

使用弧度计算:

tan ⁡ ( 60 ° 2 ) = tan ⁡ ( 30 ° ) ≈ 0.577 \tan(\frac{60°}{2}) = \tan(30°) \approx 0.577 tan(260°)=tan(30°)0.577

f x ≈ 640 2 ⋅ 0.577 ≈ 554.26 fx \approx \frac{640}{2 \cdot 0.577} \approx 554.26 fx20.577640554.26

3.2 假设 fy = fx(因为没有垂直视场角的信息)

f y ≈ 554.26 fy \approx 554.26 fy554.26

3.3 计算主点

c x = 640 2 = 320 cx = \frac{640}{2} = 320 cx=2640=320

c y = 480 2 = 240 cy = \frac{480}{2} = 240 cy=2480=240

4. 相机内参矩阵

最终的相机内参矩阵 K 将如下:

K = [ f x 0 c x 0 f y c y 0 0 1 ] K = \begin{bmatrix} fx & 0 & cx \\ 0 & fy & cy \\ 0 & 0 & 1 \end{bmatrix} K= fx000fy0cxcy1

代入示例值:

K = [ 554.26 0 320 0 554.26 240 0 0 1 ] K = \begin{bmatrix} 554.26 & 0 & 320 \\ 0 & 554.26 & 240 \\ 0 & 0 & 1 \end{bmatrix} K= 554.26000554.2603202401

;