关键词:基于图像的三维重建
单目视觉
极简原理
总体框架
作者:李二
日期:14/04/2020 - 16/04/2020
本系列博客从这里开始,进入第二部分,也就是三维重建。
我觉得不能一下就陷入到具体的步骤或者流程中去,讲东西最好先给大家一个总的轮廓以及其核心原理,这样由浅入深,由粗到精,更容易接受与吸收。
本期博客仅仅介绍三维重建的核心原理,里面涉及的要素或模块,我将在后面的几期中逐个展开。
话不多说,还是恢复讲故事模式。话说李二在家喜欢上了写博客,天天在阳台上码字,家里人越看他越不顺眼,因为感觉他似乎并没有干什么正经事,于是就有了下面的对话。
1. 什么是三维重建
李二的老婆Mme.Zhang问:我说咱天天地也不出去溜达溜达,看你都快废了。前几天看你在朋友圈里面发二维成像与三维重建,费劲巴力的写了这么长时间,想干点啥? 话说什么是三维重建?
李二觉得难得老婆想了解自己做了点啥事,于是便高兴地说道:简单点说,三
维重建≈三维点云获取
。如果较起真来,三维重建=三维点云获取+几何结构恢复+场景绘制
。我讲的三维重建指的是
基于图像的三维重建
,直白点说,就是从一系列图像中恢复三维点云。
注意:点云构建之后的几何结构恢复(即三维格网化)和场景绘制(即纹理贴图),则不在本系列的scope之内。
2. 三维重建有什么用
Mme.Zhang:那三维重建有什么用处?
李二:太多了。根据重建到的三维物体,可以准确测量它的三维结构。
例1. 比如咱们去巴黎的时候,很遗憾的没有参观巴黎圣母院,他 不是被火烧了嘛。这时我们根据以前测量到的三维结构,就可以原汁原味的恢复它火烧之前的面貌。 例2. 再比如,现在虚拟现实、增强现实不是都很火嘛,关键就是把三维建出来。 例3. 还有关于我的近地面植被遥感工作,只有把树和作物的三维建立出来,才能更好地测量他们的一些参数,比如生物量、叶倾角之类的。 假如我们只看图像,它缺失了距离信息,扭曲了物体之间的角度信息,我们没法基于影像做一些准确的测量。
了解一下:计算机视觉包含两个基本方向,物体识别和三维重建。
图像识别
的突破性进展源自于2012年卷积神经网络的兴起(AlexNet)三维重建
是未来的必然趋势,我们生活在三维空间里,必须将虚拟世界恢复到三维,才能和环境进行交互。三维重建和图像识别将逐渐融为一体。
3. 需要什么设备来重建三维
Mme.Zhang忽然觉得李二每天也不是瞎胡闹了,倒是有点用处了,于是便问起来:那用什么设备能获取三维信息呢?
李二见老婆挺上道,话匣子便打开了:刚才我说了,三维重建其实可以认为就是获取三维点云,那么点云获取的方式有三种:
激光雷达LiDAR,直接对三维进行测量, 直接得到三维点云
;深度相机,比如Kinect,也是直接获取三维信息,其实感觉不能叫做三维,算是 2.5维
,得到深度图
;双目立体视觉,两个 标定好的相机
,通过同时拍照以及立体视差
获取三维信息,可以类比于人眼;摄影测量就是这么干的。单目视觉,也就是一个相机,通过 一系列照片
,根据某些算法,恢复三维。
(每一项的具体信息,不做展开了,各位看官请自行出门左转了解)
Mme.Zhang坚定的说:那还弄啥嘞,直接LiDAR上呀。
李二突然一下不知道该咋解释了,便含糊的说道:
LiDAR不是贵嘛,目前一般人买不起,等到跟相机差不多钱了可能就行了。 深度相机的左右距离有限,只能最多 3-5米
的范围吧。双目立体视觉需要 两个位置、姿态标定好的相机
,弄起来比较费劲,万一你磕了碰了弄弯了,还得重新标定。单目视觉就很方便了,一个相机,通过运动,就可以恢复三维,而且这个还有纹理与色彩信息,对于图像识别也是有好处的。
(我解释的可能不够,但是应该把主要问题包含了)
Mme.Zhang若有所思,突然说道:其实单个相机也不好,因为这样你们男生可以只用一个手机,准确计算出女生的三围、身高、体重了。 李二:这..... 唉.....
4. 基于图像的三维重建 - 极简原理
Mme.Zhang终于开始问点关键的了:那你大致说说怎么样基于一个相机恢复三维点云呀,就是你前面说的
基于图像的三维重建
。不过我是文科生,你别讲太深了。
李二自信满满的说:别说你是文科生,你就是初中生,我都给你讲明白了。核心原理十分简单,肯定能听懂。
(各位看官若是看不懂,评论区写差评)
李二开始了表演:
准备材料:我们刚刚说到,必须要
一系列的图像
才行,而且图像之间要有重叠
,不能拍的东西完全不同,否则咋重建。不妨拿四张图像来解释一下三维重建。
极简思路:假如这四幅影像是在不同视角拍摄的同一地物,由下图可以看出,这四幅影像同时看到了地物的一些相同的地方,比如我们知道每幅影像的拍摄位置(或者
光心(焦点)
位置) 以及姿态 (嗨,看官们,其实就是外方位元素),它们在不同视角都看到了点,那么就可以通过图像 的 、点对应的像素位置
恢复出视线(line of sight)
,一共四条视线。因为所有的视线都应该交于点 ,因此构成了6个空间三角形。
其实一个空间三角形,就能够确定点 的空间位置,就是 三角定位(triangulation)
。在极简思路中,你可以认为多出的空间三角形没用。(备注一下,是非常有用的,因为噪声的问题)。不一定在每幅图像中都必须出现点 ,理想情况下,两幅就够了,因为两幅图像的视线就可以构造一个空间三角形进行三角定位。(备注一下,事实上至少三四张,才能有理想结果)。 这四幅影像其实不止同时看到了点 ,他们可能同时也看到了其他很多点,这时就能够构成点云啦,也就恢复三维了
(如果仅仅想了解三维重建的核心原理的看官,看到这就够了。之后无非是怎么找特征点,确定同名点,三角定位确定三维点,因为误差所以需要不断优化调整,得到最终的三维点以及相机的内外方位元素)
Mme.Zhang很高兴,她觉得她已经已经理解了,便说:就这么点事呀,那你前段时间又买书又查资料的,又费劲巴力的写二维成像的博客。我的护肤化妆品钱都然你给造了。
5. 基于图像的三维重建 - 总体框架
李二梗着脖子,涨红了脸说道:哪有这么简单,实际中还有好多问题呢。比如我下面要讲这些,直到本世纪初,它们的技术才慢慢成形呢,2010年左右才正式到了应用层次。
Mme.Zhang拗不过我,便说:行行行,你自己玩耍吧,我去护肤化妆去了。
题外话:我一看见一桌子护肤品,就想到,相同的钱买点电子产品也好呀。我是人穷志气短呀!
李二看Mme.Zhang没有听下去的欲望,不知是为了表明这事情真不容易,还是因为其他原因,便自言自语地接着说了下去,在实际三维重建中我们会发现几个问题:
上面说到四幅图像都看到空间点 ,对应在图像上的像素点分别为 ,这四个像素点是你人眼识别出来的,但是现在得让计算机识别出来,而且识别出这四个像素点都对应同一个空间点 ,这就有点难度了。
特征点检测:图像中会有很多像素点,一些比较有特征的点更容易识别和表达出来,比如灰度变化剧烈的点,这些点被称为 特征点
或者关键点
,因此我们可以把每幅图像的这些特征点先提取出来,这就是特征点检测。
特征点匹配:每幅图像的特征点被检测出之后,我们需要知道图像与图像之间,哪些特征点是对应的(比如),称之为 同名点
,这就需要对特征点进行匹配。
误匹配删除:实际匹配结果可能存在 误差
,也就是很多错误匹配的点,因此需要通过某种方式对误匹配的点进行删除;
集束调整(或光束法平差):误差或者噪声何时何地都是存在的,在构建三角几何关系时,也不例外。实际情况中,不同图像对于同一空间点的视线并不一定能保证交于这一点,因此需要通过某种方式对视线进行调整,使其交于一点。在此过程中,基于成像模型,我们也恢复了相机的位置与姿态等外方位元素,同时实现了点云的构建;
稠密重建:由于一般特征点数量并不是特别多,因此重建出来的点云比较稀疏。但是有了相机位姿之后,每幅图像的每个像元对应的视线我们都知道了,这是就可以根据某种方式,建立稠密点云,形成比较完整的三维。 这就是基于图像的三维重建的各个模块,每个模块中涉及了很多内容,没有那么简单。但是三维重建的核心东西就是这些。
其实所有的商业或开源三维重建软件的技术路线基本都是一样,但是一些技术细节不同,造成结果的差异。说明具体的技术细节还是十分重要吧!正如对于世界上绝大多数国家来说,即使拿到DF-17的详细图纸,也不一定能造出来。
6. 后记
以上故事纯属虚构,如果Mme.Zhang看到,企盼理解,不要揍我。
接下来的几期博客,我可能不会讲的太细了,因为好多具体内容我自己也不了解,更不敢打肿脸充胖子给各位看官讲了。我个人认为:如果不是专门做这个的,仅知其大略或思路即可,不必苛求过深,思路对于我们的借鉴意义更大一些。