美文网首页
相机模型

相机模型

作者: 功夫熊猫panda | 来源:发表于2018-07-23 10:41 被阅读0次

一、相机投影模型

针孔相机模型(Pinhole Projection Model)

对于相机坐标系下的一个3D点\bf{x} := (x,y,z)^{T} 首先定义一个通用的投影函数 \pi : 表示将3D空间坐标转换到归一化坐标。

{\pi}( {\bf {x}}) =\begin{bmatrix} u_u \\ v _u\\ 1\end{bmatrix} := \frac{1}{z} \begin{bmatrix} x\\ y \\ z\end{bmatrix}
{\bf K}指的是相机的内参矩阵。
{\bf{K}}=\begin{bmatrix} f_x & 0 & c_x\\0 & f_y & c_y \\ 0 & 0 &1 \end{bmatrix}

因此可以得到3D点\bf{x} 在的像素坐标(u,v)

\begin{bmatrix} u \\v \\ 1 \end{bmatrix} ={\bf K}\pi(\bf{x})

相反的通过像素坐标{(u,v)},z, {\bf K} 也可以求解3D坐标{\bf x}
{\bf x} = {\bf{K}^{-1}}z\begin{bmatrix} u\\v\\1\end{bmatrix}

全向投影模型(Unified Omnidirectional Projection Model)

对于针孔投影模型,其视场角不能超过180°。用这种全向投影模型,则可以表示任意大的视场角的情况。 对于相机坐标系下的一个3D点\bf{x} := (x,y,z)^{T} 首先将其投影到一个单位球上面,接着将相机的中心移动 \xi 然后进行透视投影:
\pi_{\bf U}({\bf x}) = \begin{bmatrix}{\frac{x}{z+\xi {\bf ||x||}}}\\{ \frac{y}{z+\xi {\bf|| x||} }} \\ 1 \end{bmatrix}
对于其逆:\pi^{-1}_{{\bf U}}
\pi^{-1}_{{\bf U}}(\begin{bmatrix} u\\v \end{bmatrix}, {\bf ||x||}) = {\bf ||x||}(\frac{\xi+\sqrt{1+(1-\xi^2)(u^2+v^2)}}{u^2+v^2+1}\begin{bmatrix} u\\v \\1\end{bmatrix} -\begin{bmatrix}0\\0\\1\end{bmatrix} )
给定相机内参{\bf K} 就能得到3D点{\bf x}的像素坐标(u,v)
\begin{bmatrix} u\\v\\1\end{bmatrix} = {\bf K}\pi_{\bf U}({\bf x})
这里可以清楚看到当 {\xi = 0 } 时候,此模型就等价于针孔投影型了。

二、图像非线性畸变模型

FOV模型

这个畸变模型是专门用于鱼眼相机的。这个模型假设:某个3D点 {\bf x} 在图像中的投影(u,v)到主点(principle point)的距离,正比于光轴与光心到3D点{\bf x}连线的夹角。
这里的畸变模型都是应用于归一化坐标{(u_u,v_u)}, 这里用 \gamma(\vec x) 表示畸变函数。
\begin{bmatrix} u_d \\ v_d \end{bmatrix}= \gamma_{\bf F}(\begin{bmatrix} u_u \\ v_u \end{bmatrix}) = \frac{R(r_u)}{r_u}\begin{bmatrix} u_u \\ v_u \end{bmatrix},
其中:
r_u = \sqrt {u^2_u + v^2_u}
R(r_u)=\frac{1}{\omega}\arctan(2r_u\tan(\frac{\omega}{2}))

去畸变时候可以使用:
\gamma^{-1}_{\bf F}(\begin{bmatrix} u_d \\ v_d \end{bmatrix}) = \begin{bmatrix} u_u \\ v_u \end{bmatrix}= \frac{R^{-1}(r_d)}{r_d}\begin{bmatrix} u_d \\ v_d \end{bmatrix},
r_d = \sqrt {u^2_d + v^2_d} , \ \ \ \ R^{-1}(r_d) = \frac{r_d\omega}{2\tan\frac{\omega}{2}}

Radio-Tangential Model

这是最常见的畸变模型。但是这种畸变模型对于视场角超过120°或者有很大畸变的鱼眼相机就显得不合适。同样这里用 {\gamma(\vec x)} 函数来表示畸变。
\gamma_{\bf T}(\begin{bmatrix}u_u\\v_u\end{bmatrix} ) = \begin{bmatrix}u_d\\v_d\end{bmatrix} =\begin{bmatrix}u_u\frac{1 + k_1r^2_u + k_2 r^4_u + k_3r^6_u}{1+ k_4r^2_u + k_5r^4_u + k_6r^6_u}+2p_1u_uv_u + p_2(r^2_u + 2u^2_u)\\ v_u\frac{1 + k_1r^2_u + k_2 r^4_u + k_3r^6_u}{1+ k_4r^2_u + k_5r^4_u + k_6r^6_u}+2p_2u_uv_u + p_1(r^2_u + 2v^2_u) \end{bmatrix}
其中:
r_u = \sqrt{u^2_u + v^2_u}
对于这个模型,没有显示的去畸变的表达式,可以采用优化方法或是采用OpenCV里面高效的去畸变方法。

三、总结

实际的相机投影加上畸变模型,一个3D点{\bf x} = [x,y,z]^T 投影到像素坐标的过程是:
\begin{bmatrix} u\\v\end{bmatrix} = {\bf K} \gamma(\pi({\bf x}));
这里的 {\gamma}(\vec x) 对应第二节的畸变函数, \pi(\vec x) 对于第一节讲的相机投影投影函数。

参考:
Large-Scale Direct SLAM for Omnidirectional Cameras
Large-Scale Direct SLAM and3D Reconstruction in Real-Time

作者 功夫熊猫panda

相关文章

  • 相机模型

    一、相机投影模型 针孔相机模型(Pinhole Projection Model) 对于相机坐标系下的一个3D点\...

  • 相机模型

    相机坐标系 -> 像素坐标系 (内参矩阵 ) 即:加上x轴y轴偏置 世界坐标系 -> 相机坐标系 世界坐标系 ->...

  • 相机模型

    题目描述:相机模型有哪些参数,写出三维空间点到图像坐标投影公式。镜头畸变系数有哪几种,对应畸变矫正的公式表达?答案...

  • 相机模型

    0. 写在前面 在3dmm中,重要的一步是对3d模型进行拍照。 这里引出问题:怎么给3d模型拍照? 下面先解决这个...

  • 相机模型

    原创:杨其泓 引言 随着智能手机的发展,用手机拍摄照片已经称为大众日常生活中的一部分。对准被拍摄的物体,按下快门,...

  • 相机模型&非线性优化

    针孔相机模型与图像 SLAM的运动与观测模型 针孔相机模型 相似三角形原理 外参是SLAM估计的目标 投影顺序: ...

  • three.js(30)-模型视角

    当模型动起来时,如何切换到模型的视角呢?导出的模型里面不仅有场景,还有相机等元素,因此我们只需把这个相机给到全局相...

  • 第五讲 相机与图像

    这部分简单介绍了图形形成原理,重点是给出了我们需要的观察方程。 一、相机模型: 1、针孔相机模型:内参数矩阵、外参...

  • 相机视角与内参的关系

    相机视角与内参的关系 在针孔相机模型下,已知相机的Sensor输出的分辨率,如果我们有一个相机的内参,如何通过内参...

  • LinGdx 3D加载个模型(一)

    目标: 了解相机的知识 了解相机的基本设置 显示一个3D模型 相机知识 一般的分为两种2D正交相机,3D透视相机,...

网友评论

      本文标题:相机模型

      本文链接:https://www.haomeiwen.com/subject/ammdmftx.html