AR大爆炸计算机视觉带你纵览过去现在和未来

author
2 minutes, 19 seconds Read

我是凌海滨,亮风台信息科技首席科学家。我要声明一下:本文主要是想给大家介绍一下AR的一些概念和技术科普,并非一篇严谨的学术论文。各位学术界的朋友们,希望能够保持你们一贯的宽容和友好态度,不要提出与本文无关的意见哦。如果你对AR的技术要求比较高,可以参考一下王涌天老师的《增强现实技术导论》。

在这里,我要和大家聊聊增强现实(Augmented Reality,简称AR)和虚拟现实(Virtual Reality,简称VR)的概念。其实,这两个概念诞生已经有几十年的历史了,但是最近却在科技媒体上热度不断上升,越来越受到各方面的关注。本节中,我要简单介绍一下这两个概念的历史,同时告诉大家它们的区别。 首先,我们需要明确现实是什么。也许这是一个深奥的哲学问题,但我们在计算机领域中可以把现实定义为:“眼见为实”。具体来说,就是我们所能感知到的世界。 接下来,我们需要搞清楚的是AR和VR的区别。AR是指把“数字信息”叠加到我们的现实中,使得我们可以看到更多的信息;而VR则是创造一个完全虚拟的环境,让我们好像身临其境一样。两者的区别在于AR只是在现实中加入了数字信息,而VR则是创造出了一个全新的虚拟世界。 以上是关于AR和VR概念的简单介绍,接下来我们将更深入地探讨它们的过去、现在和未来。我认为现实就是以影像的方式展现给我们视觉系统的信息,即我们所感知到的真实世界的影像。这个定义似乎给了计算机高手们一个巧妙的途径:如果能够创造出一种足够逼真的影像,那么是否就能够愚弄人们的眼睛、甚至整个大脑呢?毫无疑问,这种虚拟出来的现实就是虚拟现实(VR)的定义。当然,现在的技术水平还远远无法实现《黑客帝国》中那种神奇的沉浸感。从虚拟现实技术的最早原型——Morton Helig于1962年发明的虚拟现实3D个人影院Sensorama(图1),到现在广受欢迎的Oculus,虚拟现实技术所带来的沉浸感仍然需要用户有一定的主观意识。但对于许多应用来说,这并不是什么问题。正因为如此,才有了各种热门的VR产品和倍受资本青睐的众多VR企业大佬和新秀的崛起。作为一名技术工作者,我经常会收到热心朋友们的夸赞,“你们公司的VR做得真棒”,这些夸奖虽然让我感到非常高兴和满足,但同时也让我有些尴尬。因为很多时候我真的很想说:“亲爱的,我们做的是AR啊,是增强现实啊!”给大家提供一份维基百科的定义:AR就是指通过手机屏幕等设备将“数字信息”叠加到人类现实感知信息之上的一种技术。这样,我们就可以看到更丰富的信息。另外,AR有一个重要的特点,就是它是针对现实场景的,也就是AR所呈现的数字信息会随着现实场景的改变而改变,比如说我们可以通过AR看到为某件家具选择不同的摆放位置后的效果。总体来说,AR可以更好地增强人们对现实世界的感知,给人们带来更多可能性。我想要指出这里的定义中提到了“physical, real-world environment”,也就是说AR中的R是真实的现实场景,这点与VR有所区别。因为在VR中,我们所看到的场景是完全虚拟的。AR的概念比较宽泛,它能够将现实场景中的信息增强,让我们看到更多的细节。比如说,像HoloLens这样的设备可以在我们看到的画面上叠加各种花哨的信息。而在一些实用系统中,比如ADAS,AR技术也会应用到车辆行驶的实时信息中,为我们提供更多的辅助信息。AR技术的应用非常广泛,例如,在辅助生产系统中,我们可以看到AR头盔显示的指引线和提示箭头等等,这些都可以算作AR的应用。值得注意的是,AR中的信息是叠加到真实场景中的,而不是虚拟场景(即VR)中的。另外,也有一种有趣的小众研究方向,叫做增强虚拟化(AV),它的目的是将一部分真实场景中的内容叠加到虚拟场景中来,这样可以更好地给用户提供体验。 我想说的是,上方的图2例子可以更好地说明AR与VR之间的区别。上面的图显示的是典型的VR设备和通过它看到的虚拟场景。而下面的图则是AR设备和AR所呈现出来的真实场景。我们可以明显的看到AR技术是将虚拟信息叠加到真实世界中,而VR技术则是放弃真实场景,让我们置身于虚拟的世界中。从我的角度来看,AR和VR之间有一个非常显著的不同点,那就是VR完全隔绝人和真实世界,让我们置身于虚拟的世界中。而AR则相反,它将虚拟信息叠加到真实场景中。关于它们的优缺点,在这里就不多说了。我相信像你这样聪明的人,一定不想被虚拟的假象蒙蔽双眼,对吧? 对于AR和VR的市场前景,Digi-Capital有如下预测:到2020年,AR/VR的总市场规模将达到1500亿美元,其中AR占据了1200亿美元的份额,而VR则只占了300亿美元。 从另一方面来看,AR和VR也有一个显著的相似之处,那就是它们都是通过影像的方式实现人与计算机之间的互动。因此,它们都需要具备生成或者加工影像的能力,以及将影像呈现给人眼的方式。在这两个方面,AR和VR基本上是一致的。但是,它们的前者却非常不同,VR基于虚拟生成,而AR则是基于对现实场景的加工。这也是行外人士难以区分AR和VR的原因所在。简单来说,VR和AR的主要区别在于:现在,我想把重点放在AR上,讨论AR和VR之间不同的那一部分。那么,我们应该如何看待AR的发展呢?一般来说,AR的创始人是哈佛大学的Ivan Sutherland教授。在1966年,他发明了光学透射式头盔显示器(STHMD),该设备使得虚拟和实际的结合成为可能。增强现实这个术语最早是由波音公司的研究员Thomas P. Caudell在90年代初提出的。 1992年,美国空军的Louis Rosenberg和哥伦比亚大学的S. Feiner等人分别提出了两个早期的原型系统——Virtual Fixtures虚拟帮助系统和KARMA机械师修理帮助系统。 这些系统都是AR的早期原型,为AR技术的开发奠定了基础。随着技术的发展,AR得以不断创新和应用,如今已经广泛应用于游戏、教育、医疗等领域。相对于VR的虚拟生成,AR更着重于对现实世界的加工和改进,因此也更受用户喜爱。总的来说,AR是一种比较实用的技术,可以将虚拟和现实结合起来,超越现实。早期的AR系统多用于工业制造维修等领域,由于计算能力和资源不足,画质粗糙,而且笨重。同时,算法技术发展也尚未到位,移动数字影像设备还未普及到一般个人用户。随着计算能力、资源、算法技术的迅速发展,以及移动数字影像设备的广泛普及,AR应用和研究得到了长足的进步。尤其值得一提的是,2000年Bruce Thomas等研发的ARQuake系统和2008年推出的Wikitude,前者将AR推向了移动可穿戴领域,后者将AR直接落户到了手机端。目前一些新兴的AR设备,如HoloLens和Magic Leap,引起了非常高的关注和兴趣。这些新设备和技术将AR推向了一个前所未有的高度和视野。现在我想从软件技术和智能理解的角度来介绍AR。接下来,我将重点介绍AR中的视觉技术。 视觉技术在AR中起着非常重要的作用,其原则是把真实世界中的场景采集到计算机中,进行图像处理和分析,从而达到将虚拟物体与真实场景进行融合的目的。其中,视觉标记技术是AR应用较为广泛的技术之一。视觉标记技术是指通过摄像头对真实的场景进行扫描,识别图像和模式,然后将其映射成计算机中的虚拟物体。这样,用户就可以通过AR应用在真实场景和虚拟物体之间自由切换了。 此外,跟踪技术也是AR实现的必备技术之一,主要通过对真实场景中特征点的识别和跟踪,来确定虚拟物体在真实场景中的位置,从而实现虚拟物体与真实场景的融合。同时,还有深度识别技术和SLAM技术等,都可以帮助实现AR应用的高质量和高体验。在1997年,Ronald Azuma总结了增强现实系统的三个主要特征:虚实结合,实时交互和三维配准(即注册、匹配或对准)。我认为这三个要素在AR系统中仍然不可或缺,至今已有近二十年的发展历程。 在AR技术流程中,首先要考虑的是虚实结合。这是指将虚拟的物体和真实的场景有机地结合在一起,使得用户可以真实地感受到虚拟物体的存在。其次是实时交互,即用户可以通过AR应用与虚拟物体进行互动。最后是三维配准,这个过程指的是将虚拟物体与真实场景进行精确定位,确保它们在同一坐标系下,实现高度的精确度。 虽然AR技术已经有了长足的发展,但这三个要素仍然是AR系统中实现的难点和重心。因此,当我在设计AR应用时,我会牢记这三个要素的重要性,以确保我的应用可以实现真正的增强现实效果。我看到了一张图,它描述了一个典型的AR系统的概念流程。这个流程始于真实世界,经过数字成像,然后系统通过影像数据和传感器数据一起对三维世界进行感知理解,并同时了解对三维交互的需求。 而3D交互理解的目的就是告知系统要“增强”的内容。例如,在AR辅助维修系统中,如果系统识别出我翻页的手势,就会自动叠加下一页的虚拟手册给我。而3D环境理解的目的是告知系统要在哪里“增强”。也就是说,系统需要实时准确定位周围真实3D环境,以使得虚拟内容与真实环境地位和位置完全一致,并给人以真实感。 一旦系统知道了要增强的内容和位置,就可以通过渲染模块来完成虚实结合,最后,合成的视频被传递到我的视觉系统中,从而实现了AR的效果。这个流程中数字成像、感知理解和虚实结合都是AR技术的关键,只有在这些环节精准、可靠、高效的情况下我们才能看到真正的AR应用。我了解到,在AR技术流程中,数字数据的采集和显示渲染的技术已经相对成熟,但是对于环境和交互的精准理解却是目前的瓶颈。这是因为中间这一环节需要兼顾多种因素,包括影像和传感器数据,所以相比于其他环节更加难以精准理解。 可能有些同学会觉得,为什么不用简单的虚拟生成内容来替代这一环节呢?但是这样就要涉及到VR的领域了。虽然在国内VR市场已经相当火爆,但是本文讨论的是AR,而中间的环境和交互理解是AR技术中耗时耗力且充满各种困难的领域,这也是让一些人望而却步的原因。 不过,这也意味着对于AR技术的研究和发展有着巨大的机会和潜力,如果我们能够克服这些困难,将AR技术应用到更广泛的领域中,那么它一定能为人们创造更多的便利和惊喜。我发现,在AR的环境与交互理解领域中还存在一些困难,下面我来具体谈一下: 首先,环境坑是一种常见的困难。这是因为人的大多数脑细胞都用来处理和理解双眼所获取的视觉信息,使得我们能够对各种不同的环境变化做出适当的反应,例如利用光照和阴影来推断三维关系。但是对于计算机来说,这些变化可能就是大坑或者坑。因此,有时即使看起来非常漂亮的demo应用,在实际使用中可能会面临各种环境变化,例如光照的变化、形状和纹理的变化、相机及其姿态的变化、背景和前景元素的变化,以及实现阴影和遮挡等效果时可能会遇到的问题。 除此之外,交互坑也是AR技术中的一大难点。这是因为在AR环境中,用户的交互通常需要同时涉及到虚拟和现实环境之间的切换,而这种切换也可能会遇到困难,例如手指的精准检测、手势和表情的识别、对话和语音识别等。此外,交互坑还包括关于用户行为的预测和解释,和如何将虚拟内容无缝地集成到现实环境中等困难。这些都需要我们不断地探索和实践,才能进一步提高AR技术的水平。我认为,在AR技术的发展过程中,有两种主要的难点:环境坑和学术坑。 首先说环境坑。它指的是我们在进行计算机视觉算法和AR应用开发时,往往会受到成像环境变化的影响,例如光线、噪音、干扰、畸变等等。这些对于我们的人类视觉来说可能毫无影响,但对于计算机视觉算法和AR应用来说却是一个大大的坑。这也是为什么很多小白用户会质疑我们的工作能力,并产生想要亲自尝试的想法。总的来说,环境坑是一个很困难的难点,需要我们花费大量时间和精力去研究、探索、实验,从而提高计算机视觉算法和AR应用的水平。 接下来是学术坑。这是因为环境和交互的理解重建基本上属于计算机视觉的范畴,而计算机视觉是一个经过半个世纪积累的学术领域。凡是和AR相关的学术成果可以说是数不胜数,每年都有成吨的文章和论文发布。如果感兴趣的话,可以参考一些CVPR等带有“tracking”类似关键词的论文,每年都会有几十篇。不过要注意的是,这些文章都包含着各种各样的坑,大大小小的深浅不一。这是为什么呢?因为要发表一篇CVPR,我们需要设计出新的方法、理论强、公式繁、结果好、速度还不能太慢,而程序数据不过拟合真实,撰写的文章不藏限制性条件真的很难。所以学术坑也是我们需要在AR技术研究领域努力克服的一个重要方面。我发现,在AR技术的发展过程中,存在三种主要的坑:学术坑、上帝坑和环境坑。 首先,学术坑指的是我们在使用计算机视觉算法和AR技术时,可能会遇到一些学术上的难点。虽然这些学术成果都是经过半个多世纪的积累和完善而来,但有时它们仍然不能满足我们的需求。因此,我们需要更多地思考、实践和探索,从而创造出一些新的解决方案,以应对不断变化的需求和挑战。不过,需要注意的是,对于新的论文和算法,我们需要仔细地审视其中的设定和隐含信息。同时,建议没有相关经验的观众在有相关训练的成熟观众陪伴下观看相应的计算机视觉论文。 其次,上帝坑是指来自于用户的需求和挑战。例如,当用户要求我们开发一个可以在视频中准确判断性别的算法,并且要求其准确度达到80%以上,而你需要进行的交易费用高达100万元,这时你就需要用各种时髦的方法来轻松超额10%,才能满足用户的需求。但是,当你在交货的时候,用户表示你的系统无法准确地辨识出他们家小宝贝的性别时,这就好比是上帝为难我们开发者。为了克服这种坑,我们需要不断地从用户角度出发,研究不同的需求并且进行相关的实践。 最后,环境坑是在使用计算机视觉算法和AR技术时常常遇到的问题,可能来自于环境的光线、噪声、干扰和畸变等因素。这些因素对于我们人类的视觉系统来说可能没有什么影响,但对于计算机视觉算法和AR技术来说,会产生很大的影响。因此,在设计和开发AR应用时,我们需要花费更多的时间和精力,从而尽可能地克服环境坑的困难。我发现,在使用计算机视觉算法和AR技术时,常常会遇到各种坑,其中有一种比较特别,就是学术坑。为了解决这种问题,我们需要有强烈的假设,并及早教育用户,以及尽量明确需求。如果这些还不够,我们就需要请上帝再加点工钱啦。 除了学术坑以外,还有其他类型的坑,比如开源代码坑,这里就不再赘述。但是,为什么人们还会热衷于探索AR技术呢?最重要的原因就是这个领域巨大的应用前景和钱景。很多具体的应用领域,比如游戏,已经成功地引入了AR元素,而从更大的角度来看,AR的终极形态可能从根本上改变当前的非自然人机交互模式(请脑补微软Win95的成功和现在的HoloLens)。在很多应用上,我们可以避免或者减少这些坑的出现。例如,在某个AR游戏中,我们需要在跟踪的Marker上进行游戏内容的叠加,在这种情况下,我们需要加强对Marker的识别处理,这样就能最大程度地减少坑的出现了。我发现,在使用AR技术时,有时会遇到跟踪精确性难以保证的问题,从而导致影响用户体验的抖动。在这种情况下,我们可以通过制作动感十足的内容来减少用户感受到的抖动程度,从而提高用户体验。当然,我们也可以从渲染端入手,或者进行算法层面的优化来解决该问题。这也说明了一个好的AR应用需要算法工程实现、产品设计和内容制作等多方面的深度结合。 好了,现在我们开始进入技术层面,主要讲解一下跟踪配准方面的技术发展。为什么要讲这个?一是这些技术在AR中的核心重要性,二是其他方面我不太懂(看我多谦虚,呵呵)。 在AR技术中,跟踪配准技术是至关重要的。这项技术的发展经历了多年的积累和完善,从最初的基础模型到现在运用多种传感器及复杂算法实现高精度定位跟踪。现如今,AR技术中常用的跟踪配准技术包括基于图像的跟踪、基于惯性跟踪和深度估计跟踪等。这些技术在应用中可以相互结合,以获得更好的跟踪效果。 基于图像的跟踪是AR技术中最为常见的跟踪方式,其基本原理是通过图像识别和跟踪来实现实时追踪物体的运动轨迹,从而进行真实世界和虚拟世界的叠加。基于图像的跟踪技术又分为特征点跟踪和模板匹配跟踪两种。 基于惯性的跟踪则是通过手机等移动设备内置的加速度计、陀螺仪等惯性传感器来获取设备的姿态信息和加速度信息,再通过融合算法来计算出设备的运动状态和位置信息。 深度估计跟踪是将深度传感器技术应用于AR技术中,通过精确的深度传感器获取到场景中物体在三维空间中的位置信息,从而实现更加准确的跟踪配准效果。 综上所述,跟踪配准技术的不断发展为AR技术的广泛应用奠定了坚实的技术基础。我认为,在AR技术中,三维配准是连接虚实的最核心技术,没有之一。大致上来说,配准的目的是对影像数据进行几何上的精确理解,这样一来就可以确定要叠加数据的定位问题。比如,在AR辅助导航中,如果我们想把导航箭头“贴在”路面上,就需先确定路面在哪里。在这种情况下,每当手机摄像头获取到新一帧图像,AR系统需要首先将图像中的路面定位,确定地面的位置,并在某个设定的统一的世界坐标系下显示出来,再通过与相机相关的几何变换将箭头画在图像中相应的位置,从而实现箭头位置的呈现。 三维配准技术的实现需要结合多种技术手段和算法。在AR应用中,常用的三维配准技术包括基于视觉SLAM技术的配准、标记跟踪技术的配准、深度估计技术的配准等。这些技术的不断发展使得AR技术在三维配准方面的表现越来越精准,为AR技术在实际应用中的推广和进一步发展奠定了坚实的基础。 综上所述,三维配准技术在AR技术中占据着重要的地位,是链接虚实的核心技术之一。在实际应用中,配准技术的表现对于提高AR应用的稳定性和用户体验至关重要。我了解到,在AR技术中,三维跟踪配准存在着很多挑战。尤其是在考虑到移动设备有限的信息输入和计算能力的情况下,技术上更是面临着很大的困难。因此,在基于视觉AR的发展历程中,经历了从简单定位到复杂定位的几个阶段。 具体来说,AR技术中的二维码被广泛使用,其主要功能是提供稳定快速的识别标识,并帮助进行易于跟踪以及对于平面进行定位。AR二维码与普通二维码不同的是,其模式更简单,可以更加精确定位,这也是AR二维码在实际应用中得到推广的重要原因之一。下面是一个AR二维码的示例(见图6)。 在AR技术中,除了二维码定位方式之外,还有许多其他的三维跟踪配准技术被广泛应用,如基于视觉SLAM、深度估计和全局定位等。这些技术相互结合,可以实现更加准确、稳定的AR体验。我知道,在AR技术中,二维码的应用很受限制,因为它们不是自然的人工制品。不过,我们可以使用二维图片来拓展应用范围,这些图片可以是纸币、海报、相片卡等等。实际上,二维码本身也是一种二维图片,所以我们可以将二维码的方法直接应用于二维图片中。不过,这样做需要更强大的算法,因为一般的二维图片并不具备良好的识别定位性能。此外,并不是所有的二维图片都可以用于进行AR定位。极端情况下,如果一个纯色的二维图片没有任何花纹,就不可能用于AR定位(见图7)。同时,AR技术也在不断发展,也许以后会出现更多的可以用于AR定位的二维图片,我们也需要持续关注技术发展的趋势。我了解到,在AR技术中,图片是无法使用视觉方法进行定位的。例如,在图7的例子中,两张卡牌被用来定位两个虚拟的战士。此外,三维物体是二维图片的自然扩展。一些简单的规则三维物体,如圆柱状可乐罐,也可以用作虚实结合的载体。稍微复杂一些的三维物体也可以用类似的方法处理或分解成简单的物体进行处理,例如在工业修理中。然而,对于一些特定的非规则物体,例如人脸,由于多年的研究经验和大量的数据支持,已经有很多算法可以进行实时精准对齐。但是,如何处理通用的物体仍然是一个难题,需要更多的研究和技术的发展(见图8)。我了解到,在AR技术中,整个周围三维环境的几何理解一直是一个巨大的挑战。虽然在无人车和机器人等领域的应用已经取得了成功的效果,但是在AR中,使用的计算资源和场景先验常常捉襟见肘。因此,为了解决这个问题,AR中的三维场景理解研发主要有了两种思路:一是多传感器的结合,二是对于应用的定制。两种思路的结合也是实用中常见的手段。在技术方面,二维码和二维图片的识别跟踪技术已经成熟,并且已经得到了广泛应用。而对于三维物体和三维场景的识别和理解,目前还有很大的探索空间,需要进一步的发展和提高稳定性,以拓宽适用范围(见图9)。我了解到,在AR技术中,loLens所展现的跟踪稳定性虽已令人惊艳,但是从追求完美的角度还有很多可以提升的空间。由于识别跟踪的重要性,下面我简单介绍一下AR中的二维图片跟踪和三维环境理解。在二维图片识别方面,二维码技术已经非常成熟,但其应用受到较大限制。而在三维物体识别方面,其技术介于二维图片和三维场景之间,因此会相对复杂一些。但是,在这里简单介绍就好了,不会深入探讨(见图10)。我了解到,一般情况下,AR中二维平面物体的跟踪可以归结为如下问题:给定一个模板图片R,在视频流中时刻检测该图片的(相对相机的)三维精确位置。比如在图8的例子中,我知道R是一个人民币的图片,视频则是从手机端实时获取的,通常记为It(表示在时间t获得的视频图像),而需要得到的是R在It中的几何姿态(通常包括三维旋转和平移),我用Pt来表示。换句话说,模板图片R通过由Pt表示的三维变换就可以被精准地贴到图像It中正确的位置上。跟踪结果有很多用途,比如我可以用一个美元的图片以同样的姿态叠加到视频中来替换人民币,从而达到6倍以上的炫富效果。虽然例子中没有那么俗气,但我也可以叠加一个庄严的视频。我看到这张图片,那么,上面例子中的跟踪定位是如何做到的呢?主流的方法大致有两类,一类是直接法(direct method,有时也称为全局法),另一类叫控制点法(keypoint-based)。

 

我先来给大家介绍一下直接法:直接法里的“直接”是指直接用优化方法去找最好的目标,即姿态Pt。这里牵涉到三个主要元素:

(1)怎么定义好和不好;

(2)怎么设计目标函数;

(3)怎么最小化目标函数。

对于(1),我想说的是:一个直观的办法是:假设模板图按照姿态Pt变换后对应图像It上的一个小区域,那么这个区域可以抠出一个图像T,T(经过归一化以后)应该和模板R长得越像越好。

 

对于(2),我的想法是:我们可以在所有可能的姿态中去找Pt。不过这个策略显然是很费时的,考虑到在视频中相邻图像帧的变化有限,所以我们通常是在上一时刻的姿态(通常记为Pt-1)附近去寻找。至于怎么找,这就转化成一个优化问题了,简单的说,就是要在Pt-1的一个邻域里面找一个Pt,使得通过Pt抠出来得图像块T和R最相似。当然,在实际操作时,上面这三个部分都各有讲究。比如(1)中对于T和R是否相似可能会根据不同的应用需求做出不同的设定。

自实现,同时具有较高的运算效率和较强的稳定性,因此被广泛应用于实时跟踪。

对于(1)中我们要考虑光照的变化,这是因为光照的变化会影响到图像中的颜色和亮度,从而使得相同物体在不同光照下的图像不相似。为了解决这个问题我们需要使用色彩不变性技术,使得在不同光照下,图像仍然具有相似的色彩特性。

对于(2)中如何定义姿态空间的邻域以及合理的邻域大小,这涉及到不同跟踪算法的具体实现和解决方案。有些跟踪算法采用的是固定大小的邻域,而有些跟踪算法则采用可变大小的邻域。邻域的大小一般受到图像大小、跟踪精度以及所采用算法效率的影响。

年10月10日/57d8c5b5b607a.png />

我了解到,L-K光流法是一种用于计算视频序列中像素点移动速度和方向的计算方法。这种方法首先假设像素在短时间内的位移非常小,然后通过迭代计算相邻帧之间的亮度误差,来得到像素点的位移。L-K光流法在实际应用中存在一定的局限性,因为其对于图像中像素移动的大小和类型有一定的限制。

控制点法则是基于控制点的匹配来计算图像姿态的方法,通常采用角点等特殊点来建立模板和视频帧之间的映射,通过建立方程组来解算姿态。这种方法实时性高效,因此成为了目前业内主流方法,并且在实际场景中应用广泛。改进算法则针对不同的实际场景(如强光照或运动模糊)进行了调整,使得控制点法的应用范围更加广泛。

典型的控制点法流程如图9所示,通过对图像中的控制点进行匹配得到方程组,进而求解出姿态。这种方法在应用中不需要匹配所有像素点,可以通过控制点的方式来定位,因此具有较高的实时性和效率。

我了解到,图像姿态的求解可以使用控制点法。控制点法将图像中的控制点与模板图像中的特定点进行匹配,得到一些线性方程组,最终通过求解这些方程组来求得姿态参数。这种方法在实际应用中具有高效、实时的特点,因此成为了目前业内主流的方法。

控制点法包括三个主要元素:控制点提取和选择、控制点匹配、姿态求解。其中,控制点提取和选择是指在图像中寻找到一些特殊的点,如角点,作为控制点;控制点匹配是指将这些控制点与模板中的对应点匹配起来,求得线性方程组;而姿态求解则是通过求解这些方程来得到最终的姿态参数。

更加数学的解释是:由于姿态参数一般有8个,因此我们需要8个线性方程来求解这些参数。首先,我们需要将模板图像中的点通过姿态参数变换到图像中,然后找到与图像中对应的点,通过这些点对得到8个线性方程。这些匹配的点即为控制点。

我了解到,为了使用控制点法求解姿态参数,我们需要寻找一些特殊的点作为控制点,并将它们与模板图像中的对应点进行匹配。这里控制点的基本要求是必须能够准确地从周围环境中区分出来,并且能够稳定地出现。各种图像中的角点因此成为了治理点提取的热门方法,如SIFT、SURF、FAST等。这些方法按照能力排序,能力越强的方法越靠前,速度越快的方法越靠后。在实际应用中,我们也需要结合用户机型等因素来选择适合的方法。

然而,提取控制点后不能直接使用,我们还需要进行点的取舍。一方面,我们需要去除一些没用的点,例如outlier;另一方面,我们需要使得选取的点尽可能地均匀,以降低计算误差,同时也要防止点过多带来的计算量过大。

控制点匹配的目的是寻找两个图像中的控制点集中相互匹配的点对,例如鼻尖对鼻尖,眼角对眼角。这个过程通常是通过控制点之间的相似性以及空间约束来协同完成的。在匹配过程中,我们可以采用简单的紧邻匹配方法,也可以使用复杂的基于二分匹配的算法来进行。当匹配完成后,我们就可以得到一组匹配的控制点对,为后续的姿态求解奠定基础。

我了解到,通过控制点法最终可以求得姿态参数Pt。由于我们提取到的控制点通常远多于最小需求,因此用这些控制点得到的线性方程组的数目也远大于未知变量数目,所以我们需要使用最小二乘法等方法来求解方程组,从而得到最终的姿态参数。

尽管以上三个步骤表面上看起来有明显的分离,实际使用时却常常会交织在一起。因为很难保证控制点的准确性和可靠性。在控制点中,有许多不可靠的点混淆在真正可靠的点中,因此我们经常需要在这三个步骤之间进行迭代,使用RANSAC等方法选择可靠的控制点以获得正确的姿态。与直接法不同,控制点法的基本算法框架相对成熟,而工程实现的细节对算法的最终效果有很大的影响。

这两种方法的相对优缺点会随着具体实现而略有不同,但一般来说,控制点法在计算速度和鲁棒性方面更加优秀,但需要对控制点的提取和匹配进行细致的处理。而直接法则在精度和不同应用场景下的适应性方面表现更佳。

我了解到,控制点法和直接法这两种方法有不同的优点和不足,这些优缺点之间有很明显的互补性,因此我们可以考虑将它们结合起来使用,具体的方式有许多不同的变体,这里就不多做详细说明。

三维环境下的AR跟踪

对于三维环境的动态实时理解,这是当前AR技术研究中最活跃的问题。其核心思想是最近非常热门的“即时定位与地图构建”(SLAM,Simultaneously Localization And Mapping)技术,该技术在无人驾驶、无人机、智能家居等领域也得到了广泛应用。

 

我了解到,在AR技术中,SLAM对于无人驾驶、无人机和机器人等领域起着核心作用。不过,AR中的SLAM问题相比于其他领域更加困难,主要是因为移动端的计算能力和资源比其他领域要弱得多。目前,AR中视觉SLAM仍然是主流,而其他传感器则是辅助手段,尽管这种情况正在发生改变。下面的讨论主要限于视觉SLAM。

标准的视觉SLAM问题可以描述为:将你投放到一个陌生的环境中,然后你需要解决“我在哪”的问题。这里的“我”基本上指的是相机或眼睛(由于我们只使用单目相机,所以我们可以将自己想象成独眼龙),而“在”则是指需要定位(即定位技术,Localization),而“哪”则需要构建一张地图(即地图构建技术,Mapping),这张地图原本并不存在,需要你来创建。在走的过程中,你需要通过这只眼睛来了解周边环境(进行地图构建),同时也要确定自己在所建地图中的位置(定位),这就是SLAM的基本流程。换句话说,当你走的时候,一方面你需要把所见的地方(相机拍摄到的)连成一张地图,另一方面你需要在这张地图上找到你已经走过的路线。

到我了解到,SLAM过程大致需要哪些技术。首先是mapping技术,它是从连续获得的图像序列中反推出三维环境的过程,在计算机视觉中属于三维重建的范畴。在SLAM中,我们需要从相机的运动中获取一系列图像序列来进行重建,因此相关的技术叫做基于运动的重建(SfM,即Structure from Motion)。顺带一提,SfX是视觉中泛指从X中进行三维重建的技术,除了运动以外还可以有其他的方式(如Structure from Shading)。如果相机不动怎么办呢?这很困难,因为如果独眼龙就这样站着不动,很难了解周围的三维情况。在原理上,一旦获取到两张图像之间的运动,就相当于有两只眼睛同时看到了场景(假设场景不动),这样一来就可以进行立体化了,这就用到了多视觉几何。进一步地,在运动过程中我们获得的是一组图像,而不仅仅是两张图像,因此我们可以使用它们来进行优化处理。据我的了解,集束调整(Bundle Adjustment)是一个让小白们感到困惑的高精度方法。

对于定位问题,我们需要有一个地图作为参考系,就像前面提到的2D跟踪一样,只不过更加复杂了。在基于控制点的方法中,我们需要在三维空间中寻找并跟踪控制点,从而进行计算。巧合的是,在多视觉几何中也需要使用控制点进行三维重建,因此这些控制点经常是共用的。另外,我们是否可以使用直接法进行定位呢?是的,我们可以使用,但是,正如后面会讲到的,由于目前AR中的计算资源非常有限,使用控制点法更加经济实惠。

我们可以从三维重建的方法和结果来大致将SLAM分为稀疏、半稠密和稠密三类。图10中给出了一个典型的示例。

ONG>稠密SLAM:我的理解是,稠密SLAM的目标是对相机采集到的所有信息进行三维重建。换句话说,就是计算每个空间点到相机的方向和距离,或者确定它在物理空间中的位置。在AR领域,最具影响力的技术是DTAM和KinectFusion,前者是基于视觉的,而后者则使用深度相机。由于需要计算几乎所有采集的像素点的方向和距离,所以稠密SLAM的计算量是非常大的,因此不适用于普通的AR应用(比如一般的智能手机,即使你使用iPhone 6S、三星S7或华为Mate8等高端手机,也仍然只能算是“一般”)。

QUOTE>对于稀疏SLAM,它的三维输出是一系列点云,比如立方体角点的点云。相对于实心的三维物体,点云提供的三维重建是稀疏的,因此被称为稀疏SLAM。在实际应用中,我们基于这些点云提取或推断出所需要的空间结构,比如桌面,然后就可以在这些结构的基础上进行AR内容的渲染和叠加。与稠密SLAM相比,稀疏SLAM关心的点数少了两个维度(从面变成了点),因此成为普通AR的首选。目前比较流行的稀疏SLAM是基于PTAM框架的一些变种,比如最近很热门的ORB-SLAM。

至于半稠密SLAM,顾名思义,它的输出密度介于上述两者之间,但其实并没有明确的界定。最近的半稠密SLAM代表是LSD-SLAM,但目前在AR中的应用还没有像稀疏SLAM一样受到广泛关注。

我将简要介绍一下PTAM和ORB-SLAM,因为稀疏SLAM在AR中很受欢迎。在2003年,A. Davison提出了单目SLAM,开创了实时单目SLAM的先河。这个工作的基本思想是基于机器人等领域的SLAM框架。简单来说,对于每一帧新的图像,进行“跟踪-匹配-制图-更新”的流程。但是这个框架在移动端(手机)上的效果和效率都不如人意。

 

针对移动端AR的SLAM需求,Klein和Murray在2007年的ISMAR(AR领域的旗舰学术会议)展示了惊艳的PTAM系统,成为单目视觉AR SLAM的框架之一,也是最常用的框架之一。PTAM的全称是Parallel Tracking And Mapping,与之前的SLAM框架不同。

此外,目前流行的稀疏SLAM之一是ORB-SLAM,这也是基于PTAM框架的一种变体。

我们都知道,SLAM需要对每一帧进行两个方面的运算:定位和建图,但这两种运算都需要消耗大量的资源,很难实时地对每一帧都充分地进行。我们是否一定要每帧都同时进行定位和建图呢?对于定位,我们必须每帧都进行,否则我们就不知道自己在场景中的位置。那么建图呢?幸运的是,我们并不需要每帧都进行建图,因为我们仍然可以通过SfM来感知场景,虽然需要间隔几帧来完成。试想一下,如果把你置身于一个陌生的场景中,让你边走边探索周边环境,但每秒钟只让你看10秒钟,除非你飞奔,否则这个任务仍然可以完成。PTAM的核心思想就在这里,不是同时定位和建图,而是将它们分开,以parallel的方式各自独立实现。定位主要以逐帧跟踪为主,因此有了“tracking”这个词;而建图不再每帧进行,而是根据计算能力来定时定量的处理每一个帧。我来谈谈我对PTAM和ORB-SLAM的看法。PTAM展现了华丽的demo效果,虽然和实际运用还有不小的差距,但在PTAM的思想指引下,研究人员不断进行改进和更新。ORB-SLAM就是其中的佼佼者。它由Mur-Artal、Montiel和Tardos在2015年发表在IEEE Transaction on Robotics上,由于其优异的性能和贴心的源码,迅速获得了在工业界和学术界广泛的认同和赞誉。不过,如果想要通读ORB-SLAM的论文,就需要先做好被郁闷的心理准备。不是因为有太多晦涩的数学公式,相反的,基本上没有什么公式,而是充满了让人不明觉厉的名词。为什么会这样呢?其实和ORB-SLAM的成功有很大的关系。因为ORB-SLAM基于了PTAM的思想,在实现过程中注重去除冗余信息,保留核心思想。因此,就需要用一个新的术语系统来描述这种思想并解释其优点,这也是我们所看到的实际应用和学术界论文的现状。我认为ORB-SLAM是基于PTAM的基本框架,然后做了许多的改进和优化,变成一个包罗万象的系统。因此,只有17页的IEEE双栏论文是无法详细说明细节的,大部分的细节都在参考文献和源码中。在众多的改进中,重要的改进包括使用更为有效的ORB控制点、加入第三个线程做回环检测校正(另外两个分别是跟踪和制图)、使用可视树来实现高效的多帧优化(还记得集束约束吗?)、更好的关键帧管理等等。有些朋友可能会问:既然ORB-SLAM是基于PTAM的框架,那为什么不叫ORB-PTAM呢?其实是这样的:虽然从框架上看,PTAM已经和传统SLAM有所不同,但由于各种历史和技术原因,SLAM已经成为这一类技术的统称。也就是说,PTAM被认为是SLAM中的一个具体算法,准确地说,是单目视觉SLAM的一个算法。因此,ORB-SLAM和PTAM相比,不仅是在算法上有具体的改进,更是在SLAM技术的衍化上有所不同。我认为B-PTAM这个算法被改名叫ORB-SLAM了。虽然近年来的进展使得单目SLAM已经能在某些场景上给出不错的结果,但是在一般的移动端上,单目SLAM还远远达不到理想的效果。计算机视觉中存在着各种不同程度的问题。在AR中,大家比较关注的问题包括:

初始化问题: 单目视觉对于三维理解有着与生俱来的歧义。虽然可以通过运动来获得有视差的几帧图像,但是这几帧图像的质量并没有得到保证。如果用户拿着手机没动,或者只是稍微转动一下,算法基本上就挂掉了。 

快速运动:相机快速运动通常会带来两方面的挑战。一是造成图像的模糊,控制点难以准确获取,甚至很多时候人眼也很难判断。二是相邻帧匹配区域减小,甚至在极端情况下没有共同区域,对于建立在立体匹配之上的算法造成很大的困扰。

我了解到,在AR行业中,有些朋友可能会有些疑惑,因为上面说的这些问题看起来好像很难,但是HoloLens等设备的效果却很不错。没错,不过需要注意的是,我们上面所说的是指单目无传感器的情况。需要指出的是,一个HoloLens的价格甚至可以买五个iPhone 6S+,那么多传感器不是免费的。不过话说回来,利用高质量传感器来提高精度必然是AR SLAM的重要趋势,不过由于成本的问题,这样的AR可能还需要一定时间才能从高端展会走到普通用户中。 至于以上提到的问题,例如:
纯旋转运动:当相机做纯旋转或近似纯旋转运动时,立体视觉无法通过三角化来确定控制点的空间位置,从而无法有效地进行三维重建。

 

动态场景:SLAM通常假设场景是基本上是静止的。但是当场景内有运动物体时,算法的稳定性很可能会受到一定程度的干扰。

我发现,虽然单目AR(基于单摄像头的AR)市场很大(想想数亿的手机用户就知道),但是还需要解决很多技术难题,有的技术甚至是超越单目AR能力范畴的。我相信任何一个有理想、有追求、有情怀的AR公司是不会局限于传统的单目技术框架上的。那么除了单目AR已经建立的技术基础外,AR前沿上有哪些重要的领域呢?纵观AR和相关软硬件技术,有一些领域越来越备受关注,尤其是SMART。

SMART是一种语义驱动的多模态增强现实和智能交互技术,目前正成为AR技术的重要发展方向之一。通过智能地采集目标物体的一些生命周期信息,SMART能够更好地理解和感知周围环境,同时也能够为用户提供更符合场景和目标物特性的服务和内容。

SMART所涉及的技术包括:追踪和检测技术、自动学习和推理技术、语音和图像识别与理解技术等。其中,自动学习和推理技术可以使系统不断地学习和适应不同的场景和需求,从而提高服务的准确性和实用性。语音和图像识别与理解技术则可以帮助系统理解用户的需求和意图,并向用户提供相应的服务和内容。

总的来说,SMART技术的发展对未来的AR应用将产生深刻的影响。我相信,在不久的将来,SMART技术将成为AR技术的重要发展方向,许多AR应用也将更加智能化、个性化,为人们的生活和工作带来更大的便捷和创新。

当我看到各路AR公司的技术方向时,不难总结出AR发展的三个主要方向:语义驱动、多模态融合和智能交互。为了方便起见,业界以 “语义驱动的多模态增强现实和智能交互” 这个术语来概括这三个方面,即SMART技术。由于这三个方向都还在快速发展,技术更新换代很快,因此我在下面浅谈一下这三个主要方向的含义,意在介绍它们的技术本质,请勿过于钻牛角尖。 语义驱动是一种引入语义概念的AR技术,与传统以几何为主的AR有所不同。语义驱动的技术核心在于对场景语义的理解。为什么要有语义信息?答案很简单,因为人类所理解的世界可以说是充满着语义。如图11所列,我们所呈现的物理世界不仅由各种不同的几何形状和颜色组成,还包括许多有特定含义的物体、地点和事件等。语义驱动的AR技术主要通过智能采集目标物体在各个生命周期阶段的信息,从而更加精准地理解和感知周围环境,并根据场景和目标物体属性为用户提供更符合期望的体验和内容。 多模态融合是指将不同的传感器和信息源进行有效的结合,从而提高AR系统对环境和目标物体的感知和理解能力,增强用户的AR体验。例如,多模态技术可以将图像、声音、视频、触觉等不同的感知手段结合在一起,将AR生态系统的管道打通,达到更加全面和准确的感知效果。 智能交互是指AR系统能够更加自然地理解和响应用户的行为,从而实现更加智能、便捷和个性化的交互。智能交互主要通过自然语言处理、手势识别、人脸识别、追踪和定位等技术来实现。当AR系统能够智能感知和响应用户的行为时,用户的AR体验将会变得更加流畅和自然,从而达到更好的用户体验。在AR技术中,我们能够将虚拟物体叠加到真实世界的物体上,其实这背后依靠着对场景信息的理解,而这种理解中又涵盖了两种模式:几何理解和语义理解。几何理解指的是我们通过几何属性来理解环境和目标物体,例如墙壁的高度、宽度、位置等等。而语义理解则更倾向于对视觉信息的理解,这种理解内容更广泛,在AR技术中也有着更多的应用。因为语义理解能够更加准确地理解物体的含义,做出更精准的匹配,为用户提供更好的AR体验。 为什么我们在现在强调语义理解的重要性呢?其实,并不是因为我们比之前的先贤更聪明,而是因为在技术的发展中,语义理解变得更加实用和成熟了,它能够承载更多的AR应用。当然,通用场景的完全语义理解仍是一个难题,但是在一些特定的应用场景下,语义理解已经成为了AR应用中不可或缺的一部分,比如AR辅助驾驶和AR人脸特效等。 在语义理解的应用中,我们不仅可以将虚拟物体叠加到平面上,还可以将虚拟物体放在更加具有语义的场景中,例如将虚拟菜单叠加到窗户上,或根据正在播放的电视节目显示相关广告等。通过语义理解,AR技术在处理真实场景时能够更加准确、自然地感知和响应用户的需求和行为,从而实现更好的AR体验。在AR技术中,多模态融合是一种常见的技术手段,随着各大AR厂商陆续推出不同类型的硬件设备,这种技术已经成为AR专用硬件的标配,例如双目摄像头、深度摄像头、惯性传感器和语音识别等。利用这些硬件的信息,AR技术能够更加全面、准确地感知和理解环境和交互行为,从而提升AR体验的质量。 在AR技术中,环境跟踪和理解是核心的技术挑战之一。为了解决这个问题,AR技术开发者不断尝试使用不同的算法和技术手段,例如利用非视觉信息来补充视觉算法的不足。这种情况下,多模态融合就显得尤为重要,非视觉的传感器数据可以帮助AR系统更好地理解和跟踪环境和物体。因此,多模态融合技术在AR系统中具有着广泛的应用前景,是提升AR体验质量的重要手段。在AR技术中,姿态传感器起到了重要的补充和支持作用。例如,在快速移动相机的情况下,由于图像模糊导致跟踪算法失效,但是此时姿态传感器仍能提供可靠的信息,可以帮助视觉跟踪算法度过难关。 我认为,智能交互是AR技术的重要一环。随着机器智能技术的发展,计算机系统对人类自然交互的理解越来越准确,智能交互也因此有了更加实用的机会。在AR系统中,从实时视觉和相关信息来理解人类的交互意图显得尤为重要。手势识别技术作为AR技术的热点之一,得到了广泛的关注和应用。手势技术具有很强的可定制性和成熟的技术基础,可以为AR系统提供精准的交互方式。 需要科普的一点是,手势识别技术并不仅仅是简单地识别一些基本的手势动作。相反,基于手势的交互技术涉及到更加庞大和复杂的技术体系,涉及到数据处理、机器学习、人类行为学等多个领域的交叉。因此,手势识别技术的应用领域和实现方法需要长期的研究和实践。我认为,手势估计和手势识别是AR技术中紧密相关但不同的概念。手势估计是通过图像或深度数据得到手的精确姿势数据,例如手指关节的3D坐标。而手势识别则是根据手的动作或姿态判断代表的语义信息,例如“打开电视”等命令。手势估计一般可作为手势识别的输入,但在手势指令集不大的情况下,也可以直接进行手势识别。更准确地说,手的姿势估计是手势估计的一种。 上图展示的是手势识别和手势估计在AR技术中的应用场景。图中通过摄像头获取手部的图像数据,进行手势识别和手势估计,进而实现了手势交互操作。手势识别和手势估计技术的结合,使AR技术能更加准确地理解和响应人类的交互意图,进一步提高了AR技术的应用体验。我认为,增强现实的再度兴起是近年来软硬件的进展成果,并且科学技术人员多年的努力是推动了这一进展的。我们很幸运能够赶上这个时代提供的机会,但同时我们也需要警惕过度的乐观,需要脚踏实地地解决每一个问题。只有在持续的努力和创新下,增强现实技术才能不断地向前发展,实现更加广泛的应用和更好的用户体验。

Similar Posts