鱼眼图像投影模型及使用

鱼眼图像投影模型及使用

前序

​ 简单介绍一下目前的相机种类,主要是对相机镜头按照焦距及视角的大小,可分为标准镜头、广角镜头和鱼眼镜头。他们的一些特点如下:

  • 焦距:鱼眼镜头(小于等于16\(mm\))<广角镜头<普通标准镜头(50\(mm\))。

  • 视场角:鱼眼镜头(接近或者大于180°,工程上大于140°的就算)>广角镜头>普通标准镜头。

  • 畸变:鱼眼镜头>广角镜头>普通标准镜头。

普通单目相机

简介

​ 一般常见的普通小孔成像相机的成像模型如下所示,小孔相机模型采用相似成像的方式(入射角和出射角等大),内参包括焦距\(f_x,f_y\)和主点偏差\(c_x,c_y\)。如果焦距一定,那么图像传感器像素平面的面积直接决定了相机视场角的大小,超过这个视场角范围的物体不会被镜头获取到。因此基于透镜成像原理的相机,视场角无法做到足够大,水平视场角一般小于140°。在某些时候,比如气象科学空间观测、太阳能辐射研究计算天空视角系数、安防视频监控等实际场景中可能会需要更大视场角的相机,那么这时候广角相机-鱼眼相机就出现了。

透视成像的小孔成像相机模型,图源于这里

投影模型

\[ r_d=f \cdot tan \theta \]

投影和反投影过程

不考虑图像畸变的情况下,透视(小孔)成像的相机投影过程(3D->2D)如下,\(u,v\)图像像素坐标\(X,Y,Z\)为相机坐标系下的坐标。 \[ \begin{align} \label{pinhole_projection} u &= \frac{f_x X}{Z}+c_x \\ v &= \frac{f_y Y}{Z}+c_y \end{align} \] ​ 其对应相机反投影过程(2D->3D)如下,\(\bar{X},\bar{Y}\)为归一化坐标(即相机坐标系下的坐标变换到归一化相机坐标系)。 \[ \begin{align} \label{pinhole_inverse_projection} \bar{X} &= \frac{u-c_x}{f_x} \\ \bar{Y} &= \frac{v-c_y}{f_y} \end{align} \]

广角相机

​ 为了获得更大视角,出现了广角相机。根据==Davide Scaramuzza==大神写的“Omnidirectional Camera”一文,有三种镜头聚光方式:第一种通过透镜折射实现;第二种通过使用标准相机加一个面镜实现;第三种通过多个相机共心组装而成(测绘中常见这种,拼接出全景图像)。如下图所示:

​ 传统广角相机的镜头一般由多个镜头组成,如下图所示为几种镜头的结构方式及其参数:

广角镜头示意图,图源于An aquatic-vision-inspired camera based on a monocentric lens and a silicon nanorod photodiode array

鱼眼相机

简介

​ 广角相机的视场角也没有超过180°,人们为了获得更大的视场角,根据斯内尔(Snell's law)现象发明了鱼眼相机,又因为其镜头和鱼眼非常接近,因此取名鱼眼相机。鱼眼相机拥有更大的球面弧度(超广角),成像平面离透镜更近(短焦距)。为了获得更加的视场角,鱼眼相机只能牺牲一部分精度,引入一些畸变(主要是径向畸变)的同时压缩边缘。

​ 鱼眼镜头属于一种特殊的超广角镜头。

​ 鱼眼镜头采用非相似成像(入射角比出射角大)。其镜头组成如下图所示:

鱼眼相机的镜头组成,图源于这里

​ 鱼眼相机的成像方式可以看成是先将3d点投影到单位球面,单位球上的点在以偏离\(z\)\(\xi(或f)\)处通过针孔模型进行投影,这样水平入射的光线也能投影到图像的像素区域内。其成像模型如下所示。单位半球面上的点\(q\)投影到相机成像平面上的点\(r_d\)的过程是一个非线性过程,此时折射角\(\theta_d\)小于入射角\(\theta\)。成像模型也称投影模型。投影模型要表征的就是成像平面的像高\(r_d\)和入射角\(\theta\)之间的映射关系。

鱼眼相机的成像模型,图源于这里

​ 鱼眼相机根据不同的投影方式可以分为以下几种:\(\theta\)为入射光线与鱼眼相机光轴之间的夹角(入射角),\(f\)为焦距,\(r_d\)为像点至畸变中心的距离。

等距投影 等立体角投影 体视投影 正交投影
畸变量适中,最常用 相等立体角的入射面会产生相等面积的像 保角不变投影 畸变最大,但不会产生透射导致的近大远小
\(r_d=f \cdot \theta\) \(r_d=2 \cdot f \cdot sin(\theta/2)\) \(r_d=2 \cdot f \cdot tan(\theta/2)\) \(r_d=f \cdot sin(\theta)\)
鱼眼相机的成像模型分类,图源于这里

通用相机模型

​ 鱼眼相机是由多个镜头组成的,上面的投影方式还是过于简单了,理论计算出来的结果和实际差很多,因此出现了一些对鱼眼相机进行建模的方案。常见的有Kannala-Brandt模型、Mei模型、Scaramuzza模型、PolyFisheye模型等。

Kannala-Brandt 模型

​ Kannala-Brandt 模型发表于TPAMI2006的“A Generic Camera Model and Calibration Method for Conventional, Wide-Angle, and Fish-Eye Lenses”,作者将普通小孔成像、广角、超广角、鱼眼相机模型统一起来。同时统一了畸变的建模方式。通过将不同投影模型的函数,如\(\sin,\tan\)进行泰勒展开,发现遵循一个相似的多项式方程,因此Kannala-Brandt 模型采用了多项式来近似畸变。原始论文中给出了径向畸变、切向畸变等模型,但是实际中发现只选取多项式的前几项即可得到不错的精度,因此后续的代码库中均存在不同程度的简化和近似。如camodocalOpenCV中均采用了8参数模型(固定\(k_0=1\)\(k_1,k_2,k_3,k_4,f_x,f_y,c_x,c_y\)),如下为OpenCV中实现的通用相机去畸变模型,由于只是兼容鱼眼相机,因此其中充满小孔成像的影子。 \[ \begin{align} 世界坐标系X\rightarrow相机坐标系X_c &:\left[\begin{array}{c} X_c \\ Y_c \\ Z_c \end{array} \right] = RX+t \\ 归一化相机坐标系p_c &: x_c = \frac{X_c}{Z_c},\ y_c=\frac{Y_c}{Z_c}\\ & \theta = arctan(r),r^2 = x^2_c + y^2_c\\ 畸变模型 &: \theta _d = \theta(k_0+k_1\theta^2+k_2\theta^4+k_3\theta^6+k_4\theta^8)\\ 去畸变之后的点p_{u} :& x_d=\frac{\theta_d}{r}x_c, \ y_d=\frac{\theta_d}{r}y_c\\ 归一化相机坐标系\rightarrow 像素坐标系 &:u=f_xx_d+c_x, \ v=f_yy_d+c_y \end{align} \]

​ but there still are some paper use the following model, and i don't know why... \[ \begin{align} r_d & = f \theta_{distorted} \\ k_0\theta + k_1 \theta^3 + k_2 \theta^5 + k_3 \theta^7 + k_4 \theta^9 \end{align} \]

​ KB模型需要5个参数就能实现畸变校正,\(k_0,k_1,k_2,k_3,k_4\)。但KB模型仍遵循针孔成像的基本假设,导致该模型存在奇点(水平入射的光线将被投影到无穷远),因此Mei模型就出现了。

  • In practice, most systems will characterize Kannala-Brandt distortions purely in terms of the symmetric radial distortion, as that distortion is significantly larger in magnitude and will be the leading kind of distortion in wider-angle lenses.

Scaramuzza模型

​ Scaramuzza大神在IROS 2006的文章“A Toolbox for Easy Calibrating Omnidirectional Cameras”中提出的的鱼眼相机模型。

Mei模型

​ Mei模型是在ICRA2007中的“Single View Point Omnidirectional Camera Calibration from Planar Grids”一文中专门针对鱼眼相机提出的模型,也称为Unified Camera Model(或者unified omnidirectional camera model),同时被VINS-Fusion、VINS-Mono、鱼眼DSO采用,KITTI360数据集中提供的鱼眼相机也采用了这种模型。这种通用的相机模型可以模拟小孔成像的相机模型,也可以模拟鱼眼相机的成像模型。当\(\xi\)=0时,鱼眼相机模型就退化为了小孔相机模型。优点(源于这里)是它能精确的模拟各种图像设备和畸变的几何图像生成过程,(2)它的反投影是一个闭式解。

​ 鱼眼相机的投影过程为\(\pi_c:\mathbb{R}^3 \rightarrow \Omega\)

0.将世界坐标系下的点转到相机坐标系下,需要\(R,T\);

1.设原点为\(C_m\)的相机坐标系中的一个三维点为\(\mathcal{X}(X,Y,Z)\),先将其坐标归一化,即将其坐标缩放到单位球面上,得到\(\mathcal{X_s}=\frac{\mathcal{X}}{|\mathcal{X}|}=(X_s,Y_s,Z_s)^{T}\)\(|\mathcal{X}|=\sqrt{X^2+Y^2+Z^2}\);

2.随后改变坐标系,设现在坐标系为\(C_p\)\(C_p\)相对于坐标系\(C_m\)\(z\)轴方向上有一个负方向的平移\(\xi\),相当于形成一个虚拟的光心(坐标系原点),这样导致\(\mathcal{X_s}\)在新坐标系中的坐标为\((X_s,Y_s,Z_s+\xi)^{T}\)

3.随后将新的\(\mathcal{X_s}\)投影到归一化平面上,得到三维点\(\mathbf{m}_u(x,y,1)\): \[ \begin{align} \label{fisheye_normalized_point} \mathbf{m}_u=(\frac{X_s}{Z_s+\xi},\frac{Y_s}{Z_s+\xi},1)^{T}=(\frac{X}{Z+\xi |\mathcal{X}|},\frac{Y}{Z+\xi |\mathcal{X}|},1)^T=h(\mathcal{X_s}) \end{align} \] 4.引入径向畸变和切向畸变参数(这里采用一般的标准相机、广角相机畸变模型Brown and Conrady 模型,也可以是其他畸变校正模型)后,得到去畸变之后的点坐标\(\mathbf{m}_d(x_{distorted},y_{distorted},1)\)\[ \begin{align} x_{distorted} &= x+k_1\rho^2+k_2\rho^4+k_3\rho^6+2p_1xy+p_2(\rho^2+2x^2) \\ y_{distorted} &= y+k_1\rho^2+k_2\rho^4+k_3\rho^6+p_1(\rho^2+2y^2)+2p_2xy \\ \mathbf{m}_d &= \mathbf{m}_u+D(\mathbf{m}_u,V),\rho=\sqrt{x^2+y^2},V=(k_1,k_2,k_3,p_1,p_2) \end{align} \] 5.最后将去畸变之后的归一化平面坐标系中的坐标\(\mathbf{m}_d\)用一个类似于针孔相机的内参的\(K\)矩阵投影到像素平面上。即最终的像素点\(\mathbf{p}(u,v)\): \[ \begin{align} \mathbf{p}=K\mathbf{m}_d=\left[ \begin{array}{ccc} f_x & \alpha & u_0 \\ 0 & f_y & v_0 \\ 0 & 0 & 1 \end{array} \right] \end{align} \] ​ Mei模型下的鱼眼图像在标定时只需要知道\(\xi\),内参矩阵\(K\)(其中\(\alpha\)为坐标轴倾斜参数,理想情况为0)以及图像畸变参数\(k_1,k_2,p_1,p_2\)。但也正因为相比于针孔相机模型,仅仅多了一个参数\(\xi\),因此一些图像边缘处高畸变的像素的矫正并不是很准。

投影和反投影过程

不考虑图像畸变的情况下。Mei模型的投影过程(3D->2D)如下: \[ \begin{align} \label{uocm_projection} \left[ \begin{array}{c}u \\ v \end{array} \right] &= \left[ \begin{array}{c}f_x\frac{X}{\xi d+Z}+c_x \\ f_y\frac{Y}{\xi d+Z}+c_y \end{array} \right] \\ d &= \sqrt{X^2+Y^2+Z^2} \end{align} \]

反投影过程(2D->3D):(提供额外深度信息时才能得到实际的三维坐标,否则只能得到归一化平面上的点的三维点坐标) \[ \begin{align} \label{uocm_inverse_projection2} \left[ \begin{array}{c}\tilde{u} \\ \tilde{v} \end{array} \right] &= \left[ \begin{array}{c}\frac{(u-c_x)}{f_x} \\ \frac{v-c_y}{f_y} \end{array} \right]\\ \pi_u^{-1}(u)&=\frac{\xi+\sqrt{1+(1-\xi^2)(\tilde{u}^2+\tilde{v}^2)}}{\tilde{u}^2+\tilde{v}^2+1}\left[ \begin{array}{c}\tilde{u} \\ \tilde{v} \\1\end{array} \right]-\left[ \begin{array}{c}0 \\ 0 \\ \xi \end{array} \right] \end{align} \]

​ 根据上述\(\ref{fisheye_normalized_point}\)中的\(\mathbf{m}_u(x,y,1)\),对于\(x,y\)轴,只需要计算一个\(\lambda= \frac{Z+\xi |\mathcal{X}|}{|\mathcal{X}|}\)结合内参矩阵\(K\)即可实现从像素坐标系坐标\(\mathbf{p}(u,v)\)到归一化平面系坐标\(\mathbf{m}_u(x,y,1)\)向归一化球面系坐标\(\mathcal{X_s}\)的转换;对于\(z\)轴,则差了一个\(\frac{Z}{|\mathcal{X}|}=\lambda-\xi\),因此核心在于找到\(\lambda\)到底应该是多少。转换过程:\(\mathbf{m}_u \rightarrow \mathcal{X}_{C_p} \rightarrow \mathcal{X}_{C_m}\),推导过程如下: \[ \begin{align} \label{fisheye_2d_to_3d} \mathbf{m}_u &= (x,y,1)^T = K^{-1}\mathbf{p} \\ multiply: \quad \lambda & \Downarrow\\ \mathcal{X}_{C_p} &= (\frac{X}{|\mathcal{X}|},\frac{Y}{|\mathcal{X}|},\frac{Z}{|\mathcal{X}|}+\xi)^{T} \\ minus: \quad \xi & \Downarrow \\ \mathcal{X}_{C_m} &= \frac{\mathcal{X}}{|\mathcal{X}|}=(\frac{X}{|\mathcal{X}|},\frac{Y}{|\mathcal{X}|},\frac{Z}{|\mathcal{X}|})^{T} \end{align} \]\(\lambda\)的计算方法如下: \[ \begin{align} \label{lambda} \lambda &= \frac{Z+\xi |\mathcal{X}|}{|\mathcal{X}|} \\ &= \frac{1}{\sqrt{(\frac{X}{Z+\xi |\mathcal{X}|})^2+(\frac{Y}{Z+\xi |\mathcal{X}|})^2+(\frac{Z}{Z+\xi |\mathcal{X}|})^2}} \\ &= \frac{1}{\sqrt{(\frac{X}{Z+\xi |\mathcal{X}|})^2+(\frac{Y}{Z+\xi |\mathcal{X}|})^2+(\frac{Z+\xi |\mathcal{X}|-\xi |\mathcal{X}|}{Z+\xi |\mathcal{X}|})^2}} \\ \label{lambda_3} &= \frac{1}{\sqrt{(\frac{X}{Z+\xi |\mathcal{X}|})^2+(\frac{Y}{Z+\xi |\mathcal{X}|})^2+(1-\frac{\xi}{\lambda})^2}} \\ &= \frac{1}{\sqrt{x^2+y^2+(1-\frac{\xi}{\lambda})^2}} \\ \end{align} \] ​ 将上式转成二元一次方程求解\(\lambda\)的解析解如下: \[ \begin{align} (x^2+y^2)\lambda^2+(\lambda-\xi)^2 &= 1 \\ \Downarrow & \\ (1+x^2+y^2)\lambda^2-2\xi \lambda+(-1+\xi^2) &= 0 \\ \Downarrow & \\ \lambda &= \frac{\xi+\sqrt{\xi^2+(1+x^2+y^2)(1-\xi^2)}}{(1+x^2+y^2)} \\ &= \frac{\xi+\sqrt{1+(x^2+y^2)(1-\xi^2)}}{(1+x^2+y^2)} \end{align} \]2D->3D的射线变换为:从图像上任意像素为起点,方向朝向空间中的点,此射线上的所有点的归一化平面坐标均为\(\mathbf{m}_u(x,y,1)\),按照\(\ref{fisheye_2d_to_3d}\)中将归一化平面坐标系下的坐标变换到归一化球面坐标系下坐标有\(\ref{fisheye_3d_to_2d}\)的假设。 \[ \begin{align} \label{fisheye_3d_to_2d} (\lambda x, \lambda y,\lambda - \xi)^T \backsimeq (x,y,m)^T \end{align} \] ​ 结合\(\ref{fisheye_normalized_point}\)\(\ref{lambda_3}\)可以得出\(m=1-\xi/\lambda=1-\xi \frac{(1+x^2+y^2)}{\xi+\sqrt{\xi^2+(1+x^2+y^2)(1-\xi^2)}}\),即: \[ \begin{align} \label{fisheye_3d_to_2d2} (x,y, 1-\xi \frac{(1+x^2+y^2)}{\xi+\sqrt{\xi^2+(1+x^2+y^2)(1-\xi^2)}})^T \end{align} \]

PolyFisheye模型

​ PolyFisheye模型是在IROS2017中的Dual-Fisheye Omnidirectional Stereo中提出的。

​ 从模型图上看基本和Mei模型一模一样,唯一的不同是,假设空间点\(\mathcal{P}^c\)最终投影得到的像素点为\(u\),他们认为\(u\)到光心\(O_i\)的距离\(\mathcal{R}\)并不是直接等于沿着\(\theta_r\)方向上投影过来的大小,而是和\(O^{cl}\)\(u\)的距离存在一个关于\(\theta\)的七次多项式的多项式倍数关系。这样就相比Mei模型多了七个参数来刻画鱼眼相机,自然就更准了。 \[ \begin{align} \mathcal{R}(\theta)=[1+\mathcal{D}(\theta)] \mathcal{R}_{ref}(\theta)=f\Sigma_{i=0}^N \eta_i \theta^i \end{align} \] ​ 鱼眼相机的投影模型分为三步:1)\(\mathcal{P}^c \rightarrow \bar{\mathcal{P}^c}\)相机坐标系中的点转换到单位球面上;2)\(\bar{\mathcal{P}}^c \rightarrow \overrightarrow{O^{cl}\mathbf{u}}\) 单位球面上的点进行光线的折射变换;3)\(\overrightarrow{O^{cl}\mathbf{u}} \rightarrow \mathbf{u}\)将光线投影到像平面空间。其中\(\mathcal{R}(\theta)=\overrightarrow{O_i\mathbf{u}}\)就是实际入射光线折射之后投影到相平面坐标系的长度,存在畸变,而\(\mathcal{R}_{ref}\)就是无畸变的投影向量,具体如下:

1.将相机坐标系中的点归一化到单位球面\(\bar{\mathcal{P}}^c=-\mathcal{P}^c/||\mathcal{P}^c||=[\bar{x}^c,\bar{y}^c,\bar{z}^c]^T\);

2.将单位球面上的点转换到球面坐标系\(\cos(\theta)=\bar{z}^c,\tan(\varphi)=\bar{y}^c/\bar{x}^c\)\(\bar{x}^c=0\)\(\varphi=0\)

3.根据\(\theta\)构建与成像系统无关的镜头光学模型\(\mathcal{R}_0(\theta)=\Sigma_{i=0}^N \eta_i \theta^i\);

4.通过焦距\(f\)将光线投影到像素坐标系\(\mathbf{u}=f\mathcal{R}_0(\theta)\left[ \begin{array}{c} \cos(\varphi) \\ \sin(\varphi) \end{array} \right] + \left[\begin{array}{c} c_x \\ c_y \end{array} \right]\)

5.综上所示,将焦距\(f\)表示成矩阵形式\(A_f\),则投影过程为: \[ \begin{align} \label{polyfiseye} \mathbf{u}=\Sigma_{i} \eta_i \theta^i A_f \left[ \begin{array}{c} \cos(\varphi) \\ \sin(\varphi) \end{array} \right] + \left[\begin{array}{c} c_x \\ c_y \end{array} \right],A_f=\left[ \begin{array}{cc} A_{11} & A_{12} \\ 0 & A_{22} \end{array} \right] \end{align} \]

  • 同样由于现代工艺的提升,镜头的切向畸变已经很小了,相比于径向畸变,可以忽略不计。出自TPAMI2013的文章“Calibration of ultrawide fisheye lens cameras by eigenvalue minimization”。

相关实现

​ 主要依赖HKUST航空机器人所开源的一系列代码实现。真强

Kannala-Brandt Scaramuzza模型 Mei模型 PolyFisheye模型
Lionel Heng博士的CamOdoCal 高文良博士的camera_model Lionel Heng博士的CamOdoCal 高文良博士的camera_model
OpenCV MATLAB鱼眼图像标定 Kalibr EpsAvlc的小项目
Kalibr yangzhenfei的carema_model OpenCVcv::omnidir::calibrate HKUST的xuhao开源的Vins-fisheye,许久未更新
yangzhenfei的carema_model MultiCol-SLAM yangzhenfei的carema_model 项目,还在维护
  • 高文良博士的camera_model是在Lionel Heng博士的CamOdoCal基础以及yangzhenfei的carema_model优化的基础上改进的。
  • VINS-Fusion、VINS-Mono、VINS-Fisheye、GVINS等项目都是基于yangzhenfei的carema_model改进的。
  • VINS-Mono中提供了Mei模型,针孔相机模型,Scaramuzza模型和KB模型。其中的CataCamera就是Mei相机模型。
  • 相比VINS-Mono,VINS-Fusion中的相机模型种类多了一种PinholeFullCamera模型。
  • 高文良博士的camera_model更是多了PolyFisheyeCaremaSplineCamera。因此,如果只用相机模型,选择这个是最佳的。如果想用SLAM系统则选择其他repo。
  • 而GVINS中还是使用了VINS-Mono中的相机模型种类。
  • OpenCV、Kalibr中关于Mei模型的实现也是基于Lionel Heng博士的CamOdoCal基础上完成的。

鱼眼图像转换

鱼眼图像转普通(框幅式)图像

​ 一般的V-SLAM或者基于视觉的场景感知任务中使用的都是普通的单目相机,因此需要进行畸变矫正转成框幅式图像。

鱼眼图像转框幅式图像,图源于这里

​ 转成框幅式图像,首先需要虚拟一个框幅式(小孔成像)相机的内参,然后通过归一化平面作为桥梁,构建鱼眼图像每个像素与框幅式图像每个像素之间的关系。步骤:

1.先确定虚拟相机的内参(\(f_x,f_y,c_x,c_y\))与相对于鱼眼相机的外参。

2.对于虚拟相机的每个像素点\(p_{pinhole}\),将像素点反投影到归一化平面,得到三维点\(\mathcal{X}_{s}\)(z=1)。

3.将三维点根据鱼眼相机模型,投影到鱼眼相机上,得到鱼眼相机上的像素点\(p_{fisheye}\)

4.将鱼眼图像的对应位置像素赋给框幅式图像。

细节补充
  • 虚拟相机的视场角是由虚拟相机内参(\(f_x,f_y\))控制的,\(f_x=width/2\)时视场角刚好为90°。\(width\)为图像的像素宽度。
  • 映射关系可以先算出来做成Lookup table,然后处理鱼眼图像时再直接查表即可。

全景图像转鱼眼图像

​ 与全景图像转成框幅式图像的原理类似。就是找到鱼眼图像上每个像素与全景图像上的对应映射关系即可,可见。这里简单列一下要点:

1.以下图的全景图像为例,将其转换为右侧的鱼眼图像,鱼眼相机的中心指向天空,那么全景图像的底边宽\(W_c\)对应了鱼眼相机圆形视角的周长,而顶边则压缩为了一个中心点,鱼眼图像的半径\(r_0\neq H_c\)

2.因此鱼眼图像的半径只能通过全景图像的底边\(W_c\)来计算,鱼眼图像的中心位置\(C_x,C_y\)就知道了;

3.全景与鱼眼图像像素映射关系是从鱼眼图像的坐标开始,找到每一个像素\(x_f,y_f\)与全景图像上对应像素之间的关系\(x_c,y_c\),为了不产生空洞,因此是遍历鱼眼图像像素开始,找到对应的全景图像像素,赋值颜色即可。映射关系中有一个\(\theta\)需要根据所处的鱼眼图像坐标象限来判断才能展开到\(2\pi\)空间。

细节补充

​ 试验了一下发现部分全景图像转换的结果不是很好。尤其是第二章的鱼眼图像边缘不平滑。全景图像本身有问题的话,转出来的鱼眼图像也不好。

全景图像 鱼眼图像
其他
  • [ ]

可视化工具

  • web端展示,导入全景图像,输出可以360展示的VR视角图像。

相近名词解释

omnidirectional camera: 在一个水平面有360度视野的相机,或视野能覆盖半个球或近似整个球的相机;

Panoramic camera:全景相机

spherical camera:球面相机

catadioptric camera:结合了透镜和面镜的相机。广角相机的第二种类型。

fisheye camera:鱼眼相机

wide-angle camera:广角相机

全景相机品牌

GoPro Max、Insta360 (One X2,X3,RS 1-inch,RS Twin)、Ricoh Theta (X,Z1)、Trisio Lite2、Kandao QooCam 8K 360。

参考资料

  • https://mp.weixin.qq.com/s/0U4_jj1wrggVGY_1uvQXmw
  • https://mp.weixin.qq.com/s/aMJnwTvI87YrBKkmMaGQbQ (其中鱼眼相机2D到3D的变换公式存在错误)
  • https://mp.weixin.qq.com/s/TffJXlFjGwOKC1kIFs3sjQ
  • https://mp.weixin.qq.com/s/GwZ_NaG8u4q2odIS6sORAw
  • https://mp.weixin.qq.com/s/fo3CaWwtAvb6oUR3qt87Tw
  • https://mp.weixin.qq.com/s/zPvvAWFxWJxom6TJW7diIw
  • https://mp.weixin.qq.com/s/efiANlLdrcig6aDCrmeC4w
  • https://mp.weixin.qq.com/s/ygI6BC1JXcSP7QAwKa_Vqg
  • https://zhuanlan.zhihu.com/p/317673040
  • https://epsavlc.github.io/2019/10/21/fisheye_calib.html
  • https://jiangren.work/2019/09/13/%E9%B1%BC%E7%9C%BC%E9%95%9C%E5%A4%B4%E6%A8%A1%E5%9E%8B/
  • Mei的主页:https://www.robots.ox.ac.uk/~cmei/Toolbox.html
  • Omnidirectional DSO: Direct Sparse Odometry With Fisheye Cameras
| visits
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×