Kintinuous 算法精讲

理解本文需要有KinectFusion的基础,建议先阅读我的文章“KinectFusion 论文精析”对KinectFusion的讲解。


Kintinuous利用消费级RGB-D相机,实现了实时SLAM系统,该SLAM系统可以运用在几百米大的场景中,并且得到高质量的全局一致性表面重建。


Kintinuous的工作主要有以下三个亮点:

  • 1.利用基于GPU的3D循环缓存技巧将深度图(depth map)的fusion扩展到无界空间区域(unbounded spatial region);
  • 2.同时利用稠密的几何(geometric)相机位姿约束和光度(photometric)相机位姿约束,克服了大场景下相机位姿估计不准确的限制;
  • 3.根据场景识别(place recognition)和随后的闭环限制(loop closure constraint),使用尽可能刚性(但其实是非刚性)的空间变形(space deformation)来更新建好的地图。

下面,我们通过扩展尺度的场景融合、相机位姿估计、闭环检测三个部分来介绍Kintinuous算法:


一、扩展尺度的场景融合

1.场景表示

Kintinuous算法依然沿用TSDF建模空间场景,这在我之前介绍KinectFusion的文章[2]中详细说明过。相比于之前KinectFusion,这里的TSDF存储的内容稍有一些区别,每个体元中不光存储了两个字节的有符号距离值和一个字节的无符号权重,还包括了各一个字节的RGB三个通道的分量值,也就是说一个体元中存储了6个字节的数据。

2.体积移位(volume shifting)

KinectFusion只支持初始TSDF提供的固定大小的场景,Kintinuous将TSDF结构视为一个循环缓存,通过它的移位来表示相机在空间场景中的移动,从而扩展了重建区域。如图1所示。

图1.循环TSDF扩展重建场景。黑色箭头代表相机移动方向,当相机移动超过一定阈值时,红色部分被移出并raycast得到surface,新的蓝色部分加入TSDF。

TSDF移位的同时,相机的位姿也要更新,更新方式如图2公式,其中式1表示相机平移换算成的体元数,由于体元数是整数,所以该式做了取整处理;式2表示TSDF移位后相机的平移,由于式1做了取整处理,所以此时的相机平移并不等于零而接近于零;式3表示新的TSDF所处的位置。

图2.TSDF体和相机位姿更新公式

图3用二维形式演示了相机移动和volume shifting的过程。第0帧到第1帧相机的移动小于阈值m,TSDF没有发生移动,第1帧到第2帧相机的移动大于阈值m,TSDF移位到g2位置。

图3.volume shifting过程示意。
2.1算法实现方法

在算法的执行流程中,有两个过程需要访问TSDF中的体元,一个是体融合(volume integration)过程,也就是图1中将蓝色部分加入的到TSDF中,另一个是体光线投影(volume raycast)过程,也就是图2中红色部分生成surface的过程。
TSDF是三维的,它以一维的 形式存储在GPU的内存中,通过内存访问TSDF体元的方式如图4公式所示:

图4.访问TSDF体元。vs表示每一个维度上的体元数。

TSDF体移位反应在内存地址上的改变就如图5所示。

图5.取模运算实现volume shifting。
2.2surface提取

移出TSDF的红色部分需要生成surface,这里的surface并不需要以哪一帧相机的位姿为参考,而是直接以TSDF正交的三个轴向做光线穿过点云,用Raycasting方法生成surface,为了抑制噪声的影响,这里只提取有最小权重值的点。但是这样生成的surface可能会造成TSDF同一个体元生成两个或三个surface点,我们需要个一个网格滤波,即在提取出来的surface点上覆盖一个与TSDF体元大小相同的网格,每个网格生成一个点,用这个点代表落在这个体元中所有点的中心。
每次提取出来的surface都称为一个cloud slice,使用GPT算法增量式地把cloud slice生成mesh。每个cloud slice被提取时刻的相机位姿被称为与之相联系的相机位姿,如图6所示。

图6.与cloud slice想关联的相机位姿。其中大三角造成了volume shifting,因此成为了与cloud slice像关联的相机位姿,小三角虽然与cloud slice的点有关,但其不是cloud slice被提取时刻的位姿。

无论是否与cloud slice相关联,所有的相机位姿增量式的联系起来就构成了位姿图(pose graph),图7表示的完整的TSDF、cloud slice和pose graph(只画出了与cloud slice相关联的pose)。

图7.TSDF Volume、Cloud Slice与Pose Graph
3.dynamic cube positioning

按照前文所述,将相机置于TSDF中心,那么相机只能覆盖TSDF的一小部分体积,大部分区域都浪费了。根据相机的朝向动态的改变相机在TSDF中的位置则可以改善这一点。如图8所示。

图8.动态改变相机在TSDF中的位置。

TSDF中心位置相对于相机的计算方式可以图9公式就算:

图9.TSDF中心相对相机的位置。β表示相机绕y轴(即垂直纸面的轴)旋转的角度。
4.颜色估计

在估计surface的同时要估计surface的颜色,但仅仅是为了显示。颜色值融合到TSDF中和深度值相似,也是利用值截断和加权,但这里得到的颜色值不会参与相机位姿的估计。
通常在物体的边缘点,颜色估计是不准确的。边缘点在深度值上是不连续的,作者使用一个7x7的窗口,如果邻域中的深度与其当前像素深度值的差大于一定阈值就认为这一点位于边缘点。
作者使用surface法向与相机像平面之间的夹角为颜色值加权,夹角越大,即surface与像平面越平行,权重值也就越大。如图10所示。

图10.颜色估计权重值表示。左图中未处理的depth图,右图中红色部分表示边缘点,越亮的位置权重值越大。

颜色值估计的算法流程如图11所示。

图11.算法一

二、相机位姿估计

单纯的ICP算法对于类似走廊或者三维特征的场景会失效,因此Kintinuous算法使用ICP算法和直接法相结合的方法进行相机位姿估计。

1.ICP算法估计相机位姿

ICP算法估计相机位姿可以参考我以前的文章“Point-to-Plane ICP算法的线性近似求解”对相机位姿求解的方法,Kintinuous使用的ICP和这个原理上是相同的,这里就不在赘述了。

2.直接法估计相机位姿

直接法通过最小化前后两帧光度误差的方法来估计相机位姿。
直接法估计估计相机位姿的详细介绍可以参考我的另一篇文章“直接法估计相机位姿”。

3.直接法和间接法相结合

三、闭环

后续再更新


作者正在努力完成中……


持续更新,欢迎提出质疑或与作者就相关问题进行讨论。


*参考文献
[1]Real-time large scale dense RGB-D SLAM with volumetric fusion
[2]KinectFusion 论文精析

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容