Blender计算相机参数和矩阵
Created: May 12, 2022 9:40 AM Reviewed: No
1. Blender相机参数
Blender虚拟相机常用的参数有:
-
Resolution X & Y - 相机分辨率
-
Type - 相机类型(透视、正交、全景)
-
Field of view - 视野 / Focal length - 焦距
-
Sensor size - 传感器大小 除了相机的独特属性外,还有相机作为空间对象的基本属性,包括空间位置和旋转。
2. 计算相机矩阵
2.1 外参矩阵
Blender如下图所示,支持相机外参矩阵的直接输出。
2.2 内参矩阵
暂时不支持直接输出,可通过计算获得。
先看看内参矩阵的意义,
内参矩阵 K K K 相机坐标系下的3D坐标转换为渲染图中像素的2D坐标,
m = K M c m = KM_c m=KMc
其中 M c M_c Mc 为3D空间中某一点的坐标。
K K K 矩阵包含上述各种相机参数,具体表示为:
K = [ α u s u 0 0 α v v 0 0 0 1 ] = [ f p w s u 0 0 f p h v 0 0 0 1 ] K= \begin{bmatrix}\alpha_{u} & s & u_0 \\ 0 & \alpha_{v} & v_0 \\ 0 & 0 & 1\end{bmatrix} = \begin{bmatrix}\frac{f}{p_w} & s & u_0 \\ 0 & \frac{f}{p_h} & v_0 \\ 0 & 0 & 1\end{bmatrix} K=⎣⎡αu00sαv0u0v01⎦⎤=⎣⎢⎡pwf00sphf0u0v01⎦⎥⎤
其中, f f f 为焦距长度(mm), p w p_w pw 和 p h p_h ph 为长度和宽度方向上相机传感器的大小, u 0 u_0 u0 和 v 0 v0 v0 为主点坐标。
如何计算?
上面的公式中, f , p w , p h f,p_w,p_h f,pw,ph可以直接通过设置得到, u 0 , v 0 u_0,v_0 u0,v0设置为照片分辨率的一半即可。