计算机视觉 3D 重建—侧重无人驾驶

人工智能 无人驾驶
这次分享虽然足够简单、足够细致,但是还是会有一定门槛的。需要具有基础的高等数学和线性代数方面的知识,只要这样你才能够理解文章出现的公式和概念。但不必过于担心,只是基础,无需深入,也就是不能再基础的概念有所了解。

最近沉浸了一段时间,沉浸不等于放弃,而是一种酝酿的过程。那么接下来我们就来分享一下这一段时间自己整理的干货。跟着我,相信会有所得,也希望自己也辛苦没有白费。代理如何从理论到实践来实现一个无人驾驶系统。这里说一下,分享内容会由浅入深,会做得足够细致,这样一来开始你可能会感觉有些枯燥,甚至乏味。不过只要大家耐着性子看下去,相信会有所搜索。

[[403100]]

对读者的一点要求

这里妄自称你们读者,其实各位都是我的朋友和老师。这次分享虽然足够简单、足够细致,但是还是会有一定门槛的。需要具有基础的高等数学和线性代数方面的知识,只要这样你才能够理解文章出现的公式和概念。但不必过于担心,只是基础,无需深入,也就是不能再基础的概念有所了解。

对自己的一点要求

这一次对自己也提了一点要求,不能只顾自己 high。自己除了继续专注内容,也会花一些心思在文章设计上,如何让自己文字读起来有趣同时,如何让逻辑上是环环相扣以便于大家阅读,如何将晦涩抽象内容说的浅显易懂。这些都是自己在随后文章逐渐改善和加强的方面。

会谈到哪些技术

我们主要专注于两个技术,分别是计算机视觉技术和 SLAM 技术,无论是深度学习在计算机视觉领域的应用还是 SLAM 技术其实都是基于计算机视觉,所以个人觉得很有必要先普及一下计算机视觉基础知识。

[[403101]]

3 维重建是自己相对于来说比较感兴趣的方向,所谓 3 维重建,就是基于单张图像或者多张图像来将 3D 环境重新构建出来。这部分内容虽然有趣,但是要想掌握这部分内容其实并非易事,因为这部分内容会涉及到许多领域的知识。这是一次从 3D 世界到 2D 世界的转换,或者说是映射。在转换过程中深度信息将会丢失或者是换一种表达方式。完成这个映射的就是摄像机。

小孔摄像机

将胶片直接放置在物体前方是我们将 3 维世界直接映射到图像上一种最简单,也是最直观的做法,不过这样做的问题也是显而易见,胶片上每一个点都接受到环境中多个的物体发送出光线(信息)。所以最终在胶片上的图像都是模糊的,很难记录下真实世界中物体的信息。

那么如何在摄像机和胶片间放上一个隔板,隔板的中间开上小孔,这样一来物体发射光线经过小孔后就不会发散,通过带有小孔的隔板就可以减少模糊,也就是物体上点与图像上的点形成了一一对应的关系,从而得到清晰的图像。

这里会利用到三角形相似法则,红色表示的成像平面就是像平面,那么像平面到小孔的距离为 f,f 也就是我们熟悉的焦距。这里小孔就是光圈,还就是我们通常研究的是和像平面关于小孔对称的虚拟像平面。小孔到成像物体的距离用 z 来表示。

那么根据三角形相似法则就可以得到上面的公式,从上面公式不难看出当相机(小孔)和物体之间距离 z 固定情况,调整焦距 f 也就是成像平面到小孔之间的距离,可以调整成像的大小。相机坐标系是在光心处建立的 3 维坐标系,而在像平面上建立的是坐标系 2 维坐标系。这里 p 点为相机坐标系中的点,x、y 和 z 表示 p 点的坐标,而 p prime 表示 p 点在成像平面中的对应地点,x 和 y prime 分别表示该点在成像平面的坐标。

我们从一个轴 y 来考虑一下成像平面 y prime 摄像机坐标系中 y 的对应关系。

通过这个关系就可以将空间点映射到像平面上的坐标。

通过上面的图,我们可以看出调整光圈的大小对成像的影响。上面图下标数值表示是在该大小光圈下拍摄的图像,我们可能会发现在 2mm 光圈成像是无法清晰成像的,而在 0.35mm 就可以清楚地看出字母 LUZ。光圈越小图像就越清晰,而调整光圈变大后图像就变得模糊,这是因为调整光圈变大后胶片上一个点就对应真实世界的多个点,所以造成模糊的效果。当缩小光圈时,到达胶片上的光线就变少了,所以调小光圈后图像就会变暗。

为了解决这个光线到达成像平面变少问题,才引入了透镜。

不过小孔成像的缺点就是,因为光线不足所以最终造成了成像平面会比较暗。通过引入透镜后成像物体的多条光线通过透镜后会聚集到成像平面上一点,这样也就解决了成像物体光线不足的问题。凸透镜两个特性是所有平行于光轴的光线都会会聚到焦点,焦点到透镜中心点的距离称为焦距。穿过透镜中心的光线的方向是不会发生改变的。透镜焦距是跟透镜球面半径 R 和透镜折射系数 n 有关系的,公式如下:

那么从透镜到成像平面距离为 b 这里随后就只会考虑。 b 而不会再去考虑 f 和 z_0 。虽然透镜解决了光线不足的问题,但是透镜成像并非完美,还存在同样透镜成像并非完美,通常也存在问题,接下来就会提及失焦和径向畸变的问题。

失焦

在第一图像中,成像平面放在焦点处可以得到一个清晰的小光斑,可以看到清晰成像物体,在第二张和第三张图像中成像片面分别位于焦点前方或者后方都会得到一个模糊的图像,这就是失焦的现象。

径向畸变

透镜的第二个问题就是径向畸变,图像像素点以畸变中心为中心点,沿着径向产生的位置偏差,从而导致图像所成的像发生形变。

 

这里分别列出枕形畸变(pincushion distortion)和桶形畸变(barrel distortion)。枕形畸变:又称鞍形形变,视野中边缘区域的放大率远大于光轴中心区域的放大率,常用在远摄镜头中(上图中)。桶形畸变,与枕形畸变相反,视野中光轴中心区域的放大率远大于边缘区域的放大率,常出现在广角镜头和鱼眼镜头中(上图右)。

像平面到像素平面

摄像机几何中,如何将像素平面上的点对应到摄像机坐标上,有两点需要注意,第一点是像素到米之间单位转换,相机坐标系通常是以米为单位,而在图像平面内是以像素为单位。第二点坐标点的位置,通常在图像中。

偏置

通常在图像平面我们喜欢以图像左上角作为原点,而在摄像机坐标系是以摄像头中心点为原点,这样摄像机坐标中心和图像的中心之间就存在偏差用来表示偏差,在摄像机的点 (x, y, z) 。

单位变换

这里 k 和 l 表示一米有多少个像素,这两个参数是摄像机感光元件所决定的。因为像素可能不是方形的,所以 k 和 l 值可能不相等。

可以用 alpha 或者 beta 来表示 fk 和 fl 一来可以简化公式的表达为如下公式:

(u,v) 与 z 不是一个常数,而是一个变量 u,v 与 x, y 不是线性关系,因为这里还有一个 z 是变量,那么我们就希望找到 u,v 到 x,y 线性变换,这里介绍一下齐次坐标的概念。

 

责任编辑:姜华 来源: 今日头条
相关推荐

2016-12-20 09:55:52

卷积神经网络无人驾驶

2020-02-07 16:31:39

开源技术 趋势

2017-01-20 08:16:08

无人驾驶亚马逊

2020-11-17 18:10:02

无人驾驶视觉障碍

2023-06-02 10:33:35

2018-09-04 16:00:23

2020-11-26 15:53:30

计算机3D 技术

2022-07-13 10:20:14

自动驾驶3D算法

2019-07-29 14:30:53

自动驾驶汽车行业无人驾驶

2022-01-20 11:17:27

自动驾驶智能汽车

2022-05-23 10:26:10

人工智能机器学习机器视觉

2020-05-11 20:16:03

无人驾驶AI人工智能

2023-04-24 16:25:47

3D开发

2020-12-07 18:10:06

无人驾驶人工智能交通

2020-05-19 20:03:43

自动驾驶人工智能AI

2021-11-01 08:16:19

无人驾驶元宇宙交通

2019-10-23 19:46:31

无人驾驶谷歌自动驾驶

2017-09-13 16:43:06

智慧小镇无人驾驶智能网联汽车

2023-11-24 16:38:38

无人机计算机视觉

2012-02-13 13:45:44

超级计算机3D模拟炸行星
点赞
收藏

51CTO技术栈公众号