首页 > 其他分享 >SLAM之相机模型

SLAM之相机模型

时间:2022-10-01 23:11:14浏览次数:57  
标签:prime matrix 模型 像素 相机 SLAM 归一化 cases

相机模型

描述了一束光线通过针孔之后,在针孔背面投影成像的关系。
相机透镜的存在会使得光线投影到成像平面的过程中产生畸变
因此,我们用针孔畸变两个模型来描述整个投影过程。这两个模型能够把外部的三维点投影到相机内部成像平面,构成相机的内参数

针孔相机模型

\[\frac{Z}{f}=\frac{X}{X^\prime}=\frac{Y}{Y^\prime} \]

整理得:

\[X^\prime=f\frac{X}{Z} \]

\[Y^\prime=f\frac{Y}{Z} \]

不过,我们获得的是一个个的像素,还需要对成像平面进行采样和量化。并将传感器感受到的光线转换成图像像素。

像素坐标

  • 像素坐标系的定义方式通常为原点\(o\prime\)位于图像的左上角,u轴向右与x轴平行,v轴向下与y轴平行。
  • 像素坐标系与成像平面之间,相差了一个缩放和一个原点的平移
    设像素坐标在\(u\)轴上缩放了\(\alpha\)倍,在\(V\)轴上缩放了\(\beta\)倍。同时,原点平移了\([c_x,c_y]^T\)。则\(P^\prime\)的坐标和像素坐标\([u,v]^T\)的关系为:

\[\begin{cases}u=\alpha X^\prime + c_x \\ v=\beta Y^\prime + c_y\end{cases} \]

将$X^\prime $ 和 $Y^\prime $ 代入,并把\(\alpha f\) 合并成\(f_x\),把$\beta f $ 合并成$ f_y$ ,得:

\[\begin{cases} u=f_x \frac{X}{Z} + c_x \\ v=f_y \frac{Y}{Z} + c_y \end{cases} \]

其中f的单位为米,\(\alpha\)和\(\beta\)的单位为像素/米,所以\(f_x\),\(f_y\)和\(c_x\),\(c_y\)的单位为像素。
最终,可得:

\[Z \left(\begin{matrix} u\\ v\\ 1\\ \end{matrix} \right)=\left( \begin {matrix} f_x& 0 &c_x\\ 0 & f_y &c_y\\ 0&0&1 \end{matrix} \right) \left(\begin{matrix} X\\Y\\Z\end{matrix}\right) \stackrel{\mathrm{def}}{=}KP \]

其中K称为相机的内参数矩阵K ,并且通常认为相机的内参在出厂后是固定的。可以通过标定的方法获得。
在此式中,我们使用的是\(P\)在相机坐标系下的坐标,所以与世界坐标系\(P_w\)的关系如下,其中相机的位姿由它的旋转矩阵R和平移向量t来描述:

\[ZP_{uv}=Z \left[\begin{matrix} u\\v\\1 \end{matrix}\right]=K(RP_w+t)=KTP_w \]

相机的位姿R,t又称为相机的外参数。
投影过程还可以从另一个角度来看,我们可以把一个世界坐标点先转换到相机坐标系,再除掉它最后一维的数值,即该点距离相机成像平面的深度。相当于将最后一维进行归一化处理,得到点P在相机归一化平面上的投影:

\[(RP_w+t)=\left[X,Y,Z\right]^T\rightarrow[X/Z,Y/Z,1]^T \]

这也代表着点的深度在投影过程中被丢失掉了

畸变模型

  • 将三维空间点投影在到归一化图像平面。设它的归一化坐标为\([x,y]^T\)。
  • 对归一化平面上的点计算径向畸变和切向畸变:

\[\begin{cases} x_{distorted}=x(1+k_1 r^2+k_2 r^4+k_3 r^6)+2p_1xy+p_2(r^2+2x^2)\\ y_{distorted}=y(1+k_1 r^2+k_2 r^4+k_3 r^6)+p_1(r^2+2y^2)+2p_2xy \end{cases} \]

  • 将畸变后的点通过内参数矩阵投影到像素平面,得到该点在图像上的正确位置

\[\begin{cases} x_{distorted}=f_xx_{distorted}+c_x\\ y_{distorted}=f_yy_{distorted}+c_y \end{cases} \]

总结单目相机成像过程

1.世界坐标系下点\(P_w\)
2.相机的运动由\(R,t\)或变换矩阵\(T\)描述,\(P\)的相机坐标\(P_{camera}=RP_w+t\)
3.这时的\(P_{camera}\)的分量为X,Y,Z将他们投影到归一化平面Z=1上,得到\(P\)的归一化坐标\(P_c=[X/Z,Y/Z,1]^T\)
4.有畸变时,根据畸变参数计算\(P_c\)发生畸变后的坐标。
5.P的归一化坐标经过内参后,得到像素坐标\(P_uv=KP_c\)。

标签:prime,matrix,模型,像素,相机,SLAM,归一化,cases
From: https://www.cnblogs.com/code-fun/p/16747845.html

相关文章

  • 待从机,因为模型“考虑模拟值。支持首先向总线上发出
    待从机,因为模型“考虑模拟值。支持首先向总线上发出Z埤}待从机,因为模型“考虑模拟值。支持首先向总线上发出a待从机,因为模型“考虑模拟值。支持首先向总线上发出http://ds.1......
  • Spring03:展现模型数据、处理及校验表单
    1展现模型数据1.1图解过程在上一节“Spring-02:构建并运行基础Spring应用”中,我们运行的基础应用所展现的视图home.html还未包含任何领域类的信息,如下图:想要构建真实......
  • 【SQL数据库】(二)关系模型与关系代数
    二.关系模型与关系代数2.1关系模型2.1.1关系数据结构1.关系:二维表就是关系;行对应关系的一个 元组,列对应关系的一个域(域名=属性名)2.关系数据库:表的集合,关系的集......
  • 从特斯拉人形机器人亮相看AI人工智能模型落地面临的两个难题
    当地时间9月30日,美国特斯拉公司的人形机器人-“擎天柱”(Optimus)亮相,这款机器人之前在一些媒体的报道中,有些功能已经展现了不俗的表现,令人叹为观止。​在这次的亮相中,又展现......
  • nohup训练pytorch模型时的报错以及tmux的简单使用
    问题:在使用nohup命令后台训练pytorch模型时,关闭ssh窗口,有时会遇到下面报错:WARNING:torch.distributed.elastic.agent.server.api:Received1deathsignal,shuttingdo......
  • graylog 插件模型之PluginModule
    graylog的PluginModule可以简化graylog插件的开发,方便我们进行扩展参考功能类结构从下图可以看出是依赖了guice进行的包装,代码中好多都是支持依赖PluginModule开......
  • 吴恩达机器学习复习1:监督学习、无监督学习、模型表示、损失函数、直觉Ⅰ、直觉Ⅱ、梯
    【说在前面】1.只是知道算法和数学,而不知道如何将算法实际运用于你所关心的问题并不是一件好事。2.花点时间做些有关算法每个步骤的练习,看看你能否理解它们是如何工作的......
  • threejs-模型点击以及添加CSS2DObject
    模型点击事件网上教程挺多的,官网好像也有demo,这里我就只记录我碰到的问题以及解决方案:首先要清楚一件事,就是模型的展示需要一个容器,当这个容器是body|window和非全屏的......
  • python sklearn 模型的保存与读取
    下载保存模块pipinstalljoblib导入模块import joblib保存模型joblib.dump(model,"model.joblib",compress=1)读取模型#加载模型文件,生成模型对象new_model=......
  • 模型参数选择
    抑制过拟合:四个方法1.添加正则项L1正则项(作为特征选择器,模型稀疏)尽可能是余项(w相关项)为0,(说明细胞是死掉的,模型就变得稀疏,这个细胞就没用,在模型进行压缩的时候可以......