图像缩放后相机内参变化
图像缩放内参变化
问题阐述
在对图像进行缩放的同时,相机的内参也需要进行一定的变化.
在这里先简单推导一下关于原点(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) \]