图像缩放后相机内参变化

图像缩放内参变化

问题阐述

在对图像进行缩放的同时,相机的内参也需要进行一定的变化.

在这里先简单推导一下关于原点(0,0)点不变的缩放形式,也就是如下图所示

上面也就是OpenCV resize函数进行放缩的方式

而对于任意的缩放变换(甚至裁剪),目前还没有书写的打算,之后有机会补上裁剪的内容

推导

使用相机的内外参可以将三维点P投影到像素坐标系 \[ (x, y, z, 1) \rightarrow(u, v, S) \]

\[ \left(\begin{array}{ccc} a_{x} & 0 & u_{0} \\ 0 & a_{y} & v_{0} \\ 0 & 0 & 1 \end{array}\right)\left(\begin{array}{llll} R_{11} & R_{12} & R_{13} & T_{x} \\ R_{21} & R_{22} & R_{23} & T_{y} \\ R_{31} & R_{32} & R_{33} & T_{z} \end{array}\right)\left(\begin{array}{l} x \\ y \\ z \\ 1 \end{array}\right) \]

其中相机的内外参可以写作如下 \[ M = K[R \mid T]_{3 \times 4} \] 那么对于 \((u, v, S)\) 而言 \[ u=m_{1} P \]

\[ v=m_{2} P \]

\[ S=m_{3} P \]

其中mi表示M矩阵第i行

现在有 \[ u^{\prime}=\frac{u}{2} \ v^{\prime}=\frac{v}{2} \] 所以有 \[ u^{\prime}=(1 / 2) m_{1} P \]

\[ v^{\prime}=(1 / 2) m_{2} P \]

写回去就有 \[ \left(\begin{array}{ccc} 0.5 & 0 & 0 \\ 0 & 0.5 & 0 \\ 0 & 0 & 1 \end{array}\right)\left(\begin{array}{ccc} a_{x} & 0 & u_{0} \\ 0 & a_{y} & v_{0} \\ 0 & 0 & 1 \end{array}\right)\left(\begin{array}{cccc} R_{11} & R_{12} & R_{13} & T_{x} \\ R_{21} & R_{22} & R_{23} & T_{y} \\ R_{31} & R_{32} & R_{33} & T_{z} \end{array}\right)\left(\begin{array}{c} x \\ y \\ z \\ 1 \end{array}\right) \] 与以下的式子等价 \[ \left(\begin{array}{ccc} 0.5 a_{x} & 0 & 0.5 u_{0} \\ 0 & 0.5 a_{y} & 0.5 v_{0} \\ 0 & 0 & 1 \end{array}\right)\left(\begin{array}{llll} R_{11} & R_{12} & R_{13} & T_{x} \\ R_{21} & R_{22} & R_{23} & T_{y} \\ R_{31} & R_{32} & R_{33} & T_{z} \end{array}\right)\left(\begin{array}{l} x \\ y \\ z \\ 1 \end{array}\right) \]