[Computer Vision][IMAGE FORMATION] 1 Geometric Camera Models 1.2 PARAMETERS(2)

目录

 

弱透视模型的坐标变换和相机参数

1 从世界坐标系到相机坐标系

2 从相机坐标系到投影坐标系

3 从投影坐标系到屏幕坐标系

4 变量的耦合问题


弱透视模型的坐标变换和相机参数

我们按照和上一节类似的思路来推导弱透视模型的坐标变换公示,并给出这种情况下的相机参数。

1 从世界坐标系到相机坐标系

这一步和之前一样,得到:

2 从相机坐标系到投影坐标系

在这一步中,我们忽略了物体的厚度。通常的做法是在物体上取一个参考点,过这个参考点作光轴的垂面,然后将其他点都投影到这个平面上。即认为所有点的Z坐标都与参考点的相等。不妨设这一坐标值为Zr,于是得到投影坐标:

p = (f/Zr X, f/Zr Y, 1) = f/Zr \begin{pmatrix} 1 & 0 & 0 &0 \\ 0 & 1 & 0 &0 \\ 0 & 0 & 0 & Z_r \end{pmatrix}\begin{pmatrix} X\\ Y\\ Z\\ 1 \end{pmatrix} = f/Zr \begin{pmatrix} 1 & 0 & 0 &0 \\ 0 & 1 & 0 &0 \\ 0 & 0 & 0 & Z_r \end{pmatrix}P

3 从投影坐标系到屏幕坐标系

这一步和上一节的一般情况下的做法相同,使用K来完成转换(注意系数f包含在K中),最终的表达式为:

p_{pixel} =  = MPw。

注意到\begin{pmatrix} 1 & 0 & 0 &0 \\ 0 & 1 & 0 &0 \\ 0 & 0 & 0 & Z_r \end{pmatrix}的秩为2,也就是说,我们可以将表达式化简。记:

,其中

R2 = {\left( \begin{matrix} - & r_1^T & -\\ - & r_2^T & - \end{matrix}\right)},t2 = {\left( \begin{matrix} t_1 \\ t_2 \end{matrix}\right)}

于是:

M = \frac{1}{Z_r}K {\left[ \begin{matrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 0 & Z_r \end{matrix}\right]} {\left[ \begin{matrix} R & t \\ 0^T & 1 \end{matrix}\right]}

    =\frac{1}{Z_r}K {\left[ \begin{matrix} 1 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 0 & Z_r \end{matrix}\right]} {\left[ \begin{matrix} - & r_1^t & - & t_1 \\ - & r_2^t & - & t_2 \\ - & r_3^t & - & t_3 \\ - & 0^T & - & 1 \end{matrix}\right]}

    =\frac{1}{Z_r}K\begin{pmatrix} - & r_1^T & - & t_1\\ - & r_2^T & - & t_2 \\ - & 0^T & - & Z_r \end{pmatrix}

    =\frac{1}{Z_r} \left( \begin{matrix} \alpha & -\alpha cot\theta & x_0\\ 0 & \frac{\beta }{sin\theta } & y_0\\ 0 & 0 & 1 \end{matrix}\right) \left( \begin{matrix} - & r_1^t & - & t_1 \\ - & r_2^t & - & t_2 \\ - & 0^T & - & Z_r \end{matrix}\right)

    =\frac{1}{Z_r} \left( \begin{matrix} K_2 & p_0 \\ 0^T & 1 \end{matrix}\right) \left( \begin{matrix} R_2 & t_2 \\ 0^T & Z_r \end{matrix}\right)

    =\frac{1}{Z_r} \left( \begin{matrix} K_2R_2 & K_2 \cdot t_2 + Z_r p_0\\ 0^T & Z_r \end{matrix}\right)

由于我们实际上并不需要齐次坐标系中的最后一个坐标,所以可以丢掉第三行,取:

M= \left( \begin{matrix} A & b \end{matrix}\right) = \left( \begin{matrix} \frac{1}{Z_r} K_2R_2 & \frac{1}{Z_r}K_2t_2 + p_0 \end{matrix}\right)

得到p_{pixel}的表达式p_{pixel} = MPw。

4 变量的耦合问题

在上面的推导中,我们注意到一个现象:令t2 = t2 + a,p0 = p0 - 1/Zr K2a,M并不会改变。我们将这种现象称为变量的耦合,本质上其实是一种信息的丢失。具体来说,如果我们换一个相机,它的t变量的前两维是t2 + a,主点在像素坐标系上的坐标是p0 - 1/Zr K2a,我们得到的坐标转换的矩阵和之前的相机是相同的,也就是对同一个场景会得到相同的照片,这样我们就无法区别这两个相机,也就是无法唯一确定其中的一些参数。


此外,Zr和K2中的参数之间也存在这种变量耦合的问题:

1/Zr K = \frac{1}{Z_r} \left( \begin{matrix} \frac{\alpha}{Z_r} & -\frac{\alpha cot \theta }{Z_r} \\ 0 & -\frac{\beta}{Z_r sin \theta} \end{matrix}\right)

其中\frac{\alpha}{Z_r}\frac{\beta}{Z_r}总是分别作为整体出现,因而实际上也只能确定两个自由度。从实际意义来看就是如果物点的距离更远,同时CCD上的单位长度像素数量或者焦距按相同比例放大,则我们得到的数字图像同样不会改变。

事实上,我们在上一节即一般情形下,也遇到了一组变量耦合,即k、l和f的耦合。由于kf、lf总是以单项式的形式出现,我们将它们分别记作α和β,也就是只能确定两个自由度。

根据这种情况,我们可以进一步简化M的参数:

M = \frac{1}{Z_r} \left( \begin{matrix} K_2 & p_0 \end{matrix}\right) \left( \begin{matrix} R_2 & t_2 \\ 0^T & Z_r \end{matrix}\right)

    = \frac{1}{Z_r} \left( \begin{matrix} K_2 & \vec{0} \end{matrix}\right) \left( \begin{matrix} R_2 & t_2 \\ 0^T & Z_r \end{matrix}\right) (根据之前的结论,p0可以任意选取,此时的t2也被更新了)

    = \frac{1}{Z_r}K_2 \left( \begin{matrix} R_2 & t_2 \end{matrix}\right) (按照分块矩阵乘法计算即可)

    = \frac{1}{Z_r} \left( \begin{matrix} \alpha & -\alpha cot \theta \\ 0 & \frac{\beta}{sin \theta} \end{matrix}\right) \left( \begin{matrix} R_2 & t_2 \end{matrix}\right)

    = \frac{\beta}{Z_r sin \theta} {\left( \begin{matrix} \frac{\alpha sin \theta}{\beta} & \frac{\alpha cos \theta}{\beta} \\ 0 & 1 \end{matrix}\right)} {\left( \begin{matrix} R_2 & t_2 \end{matrix}\right)}

    = \frac{1}{{Z_r}'} {\left( \begin{matrix} k & s \\ 0 & 1 \end{matrix}\right)} {\left( \begin{matrix} R_2 & t_2 \end{matrix}\right)}

这时再来清点我们的变量,一共有八个:Zr是结构(structure)参数,k、s是与CCD的畸变程度和像素密度相关的参数,t2中包含了两个参数,R2虽然只有两行,但是写出R的实际形式可以看出R2中仍然存在三个角度参数。

猜你喜欢

转载自blog.csdn.net/tendernight1/article/details/84107759
今日推荐