日更 SLAM 一边理论一边实践第二天—基础知识(1)

515 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情

前言

之前也参加过更文挑战的活动,自己本人对这个活动还是挺喜欢的,督促自己每天都去学点东西、或者整理点东西,然后组织语言呈现给大家,本次自己有点计划,希望用一个月时间把自己带入 SLAM 这门技术,希望能够对 SLAM 有一个整体了解。不仅包括基础知识,理想情况是学着用 python 实现 SLAM 小 demo,虽然小,对于自己应该是一个全新的挑战了,感兴趣朋友可以跟着我一起了解 SLAM。

摄像机成像原理

屏幕快照 2022-07-28 下午5.47.03.png

  • 先看左上角图,我们想要对物体进行成像,那么在物体前面放一张感光胶片,是不是我们就能够得到一张物体的图像,显然是不行的。这是因为在胶片上每一个点都会接受到目标不同位置发射的光线
  • 在来看右上角的图,最早的照相机就是小孔成像,在目标物体和胶片之间放置一个隔板,然后在隔板上开一个小洞,这样从物体上发射过来光经过小孔就有了确定性,只会投射到胶片上某一个位置
  • 在左下角图中,通过小孔成像原理可以制作出一台简易的照相机,胶片到小孔距离为焦距,因为光线经过小孔是一条直线,这样一来在胶片上呈现的图像就是与物体具有相反方向的反过来的影响,这样并不利于观察和研究
  • 在右下角的图中,我们对小孔成像进行抽象化,同时来介绍一个概念,以相机为中心叫做相机坐标系,然后成像平面叫做像平面,像平面到摄像机中心为焦距ff,目标 pp 在像平面上成像点为 pp^{\prime} 用字母 oo 表示表示摄像机坐标原点,然后 i、j 和 k 分别表示摄像机坐标系三个坐标轴。
屏幕快照 2022-07-28 下午7.34.04.png

根据相似三角形,在右侧目标点为 p(y,z)p(y,z) 映射到左侧像平面上点 p(y,f)p^{\prime}(y^{\prime},f) 可以计算出 pp^{\prime} 点的 y,xy^{\prime},x^{\prime} 坐标。

yf=yzy=fyz\frac{y^{\prime}}{f} = \frac{y}{z}\\ y^{\prime} = f \frac{y}{z}

那么在摄像机坐标系下 3 维点 pp 到像平面上 2 维点坐标

p=[xyz]p= \begin{bmatrix} x \\ y \\ z \end{bmatrix}
p=[xy]p^{\prime} = \begin{bmatrix} x^{\prime} \\ y^{\prime} \end{bmatrix}
x=fxzy=fyzx^{\prime} = f \frac{x}{z}\\ y^{\prime} = f \frac{y}{z}\\

光圈(Aperture)

光圈就是小孔大小,当光圈比较大的时候,进入摄像机光就比较充足,不过这时候图像也发虚,随着光圈逐渐减少,成像效果越来越清晰,不过因为进光不足也就是造成成像比较暗。

aperture.jpeg

凸透镜成像

可以用凸透镜来解决上面问题,因为凸透镜可以将目标上一点发射多条光线聚焦到胶片上一点,这样就解决了小孔成像为了清晰还需要缩小光圈的问题。

convex_lens_imaging.png

所有平行于光轴的光线都会聚到焦点上,例如下面图右侧图,这个平面叫做焦平面。焦点距离到透镜中心的距离叫做焦距,也用 f 表示,不过以后我们研究焦距不是透镜的焦距而是摄像机的焦距也就是成像平面到透镜中心的距离

根据折射定律

f=R2(n1)f = \frac{R}{2(n-1)}
  • RR 为透镜球面的半径
  • n 为透镜折射系数

convex_len_image.jpg