文章目录
- 理想化相机模型的相机内参计算
- 1. 相机内参定义
- 2. 根据视角和图像分辨率计算相机内参
- 2.1 计算焦距 fx 和 fy
- 2.2 计算主点 cx 和 cy
- 3. 示例计算
- 3.1 计算 fx
- 3.2 假设 fy = fx(因为没有垂直视场角的信息)
- 3.3 计算主点
- 4. 相机内参矩阵
理想化相机模型的相机内参计算
在理想化的相机模型中,假设没有畸变,计算相机内参可以根据图像的分辨率和相机的视角(视场角,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=2⋅tan(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=2⋅tan(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=2⋅tan(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 fx≈2⋅0.577640≈554.26
3.2 假设 fy = fx(因为没有垂直视场角的信息)
f y ≈ 554.26 fy \approx 554.26 fy≈554.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