文章目录
完整的摄像机模型(摄像机内外参数)
- 径向畸变:图像像素点以畸变中心为中心点,沿着径向产生的位置偏差,从而导致图像中所成的像发生形变
理解三个参考系
- 摄像机坐标系
- 像平面坐标系
- 图像保存到计算机中的像素坐标系(将坐标原点从中心移到左下角)
因此需要移动(偏置)将米为单位转换成以像素为单位
( x , y , z ) → ( f ⋅ k ⋅ x z + c x , f ⋅ l ⋅ y z + c y ) 单位 k , l 为 p i x e l / m f : m (x, y, z) \rightarrow (f \cdot k \cdot \frac{x}{z} + c_x, f \cdot l \cdot \frac{y}{z} + c_y)\\单位k, l为pixel/m \ \ f:m (x,y,z)→(f⋅k⋅zx+cx,f⋅l⋅zy+cy)单位k,l为pixel/m f:m
由于焦距 f f f 和 k / l k/l k/l 都是相机内部的参数,所以将其转换成一个参数 α , β \alpha, \beta α,β
因此有将摄像机坐标系中的点 ( x , y , z ) (x, y, z) (x,y,z) 转换成像素坐标系下的二维点 ( x ′ , y ′ ) (x', y') (x′,y′)
齐次坐标系中的投影变换
齐次坐标转换
-
如何将一个坐标转换成齐次坐标呢?这里以二维和三维的情况为例:
( x , y ) ⇒ [ x y 1 ] ( x , y , z ) ⇒ [ x y z z ] (x, y) \Rightarrow \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}\ \ \ \ \ (x, y, z) \Rightarrow \begin{bmatrix} x \\ y \\ z \\ z \end{bmatrix} (x,y)⇒ xy1 (x,y,z)⇒ xyzz -
如何将一个齐次坐标变回去呢?
[ x y w ] ⇒ ( x w , y w ) [ x y z w ] ⇒ ( x w , y w , z w ) \begin{bmatrix} x \\ y \\ w \end{bmatrix} \Rightarrow (\frac{x}{w}, \frac{y}{w}) \ \ \ \ \ \begin{bmatrix} x \\ y \\ z \\ w \end{bmatrix} \Rightarrow (\frac{x}{w}, \frac{y}{w}, \frac{z}{w}) xyw ⇒(wx,wy) xyzw ⇒(wx,wy,wz)
由此可见两者不是一一对应的关系
投影变换
将非线性变换转换成线性变换
为了描述方便讲齐次坐标的字母 P h ′ → P ′ P_h' \rightarrow P' Ph′→P′, P h → P P_h \rightarrow P Ph→P
后续没有特殊说明,所有坐标均采用齐次坐标表示,因此不在使用h下标标识
有对应关系
P ′ = [ α 0 C x 0 0 β C y 0 0 0 1 0 ] ⋅ [ x y z 1 ] = M P P' = \begin{bmatrix} \alpha & 0 & C_x & 0 \\ 0 & \beta & C_y & 0 \\ 0 & 0 & 1 & 0\end{bmatrix} \cdot \begin{bmatrix} x \\ y \\ z \\ 1 \end{bmatrix} = M P P′=
α000β0CxCy1000
⋅
xyz1
=MP
由于摄像机制造工业垃圾,像素不一定是正方向,也可能是平行四边形,因此存在一个夹角
θ \theta θ
因此在 M M M 这个矩阵中加入 t h e t a theta theta 参数,实现从摄像机坐标系中的点转换到没有制作好的相机像素坐标系中
P ′ = [ α − α c o t θ C x 0 0 β s i n θ C y 0 0 0 1 0 ] ⋅ [ x y z 1 ] P' = \begin{bmatrix} \alpha & -\alpha cot \theta & C_x & 0\\ 0 & \dfrac{\beta}{sin \theta} & C_y & 0\\ 0 & 0 & 1 & 0 \end{bmatrix} \cdot \begin{bmatrix} x \\ y \\ z \\1 \end{bmatrix} P′=
α00−αcotθsinθβ0CxCy1000
⋅
xyz1
注: c o t θ = c o s θ s i n θ cot \theta = \dfrac{cos \theta}{sin \theta} cotθ=s