在前面的章节中,传感器的概念是“用来获取温度和湿度等纯数据的电子零件”。温度传感器和加速度传感器等确实是用来获取简单数据的小零件,我们可以将其理解为构成智能手机等电子设备的一个要素。 然而,随着零件的小型化和高性能小型处理器的出现,市面上出现了具备先进能力的传感器。这类传感器能轻松地获取那些原来难以当成数据来处理的信息。这样的传感器与其说是零件,不如说是狭义上的设备,或者说是多个因素复杂协作的“系统”(图 4.1)。本章将会为大家讲解这些功能先进的新型传感器。

首先要说的是用于感测的设备。 就像各位在前文看到的那样,使用传感器能够制造出用以获取人和环境等相关信息的设备。例如,第 3 章就以冰箱为例,讲解了微控制器的应用。微控制器不仅能使制冷机和鼓风机运转,如果基于用传感器获取的信息来进行控制,还能设定冰箱的温度。这样一来,它就既能根据用途改变冰箱的设定温度,还能达到省电的效果。 那么,先进的感测设备到底是什么呢?就是把多个传感器和处理器组合在一起,从而获取更复杂信息的新型传感器。传感器已经不再是一个电子零件,而是一个具备强大信息获取能力的、更方便的物件了。然而,使用这种先进的感测设备时必须注意一件事,即传感器的进化可能会造成“信息获取过剩”(图 4.2)。

搭载了加速度传感器的智能手机可以检测人的行动,办公室和百货商店的厕所里也有自动开关灯的感测机制。 对于应用了传感器的系统而言,像这样用简单的传感器来获取必备的最低程度信息的设计是非常明智的。只要找到能用少量信息达成目的的方法,就无需大量传感器和高配置计算机,也减少了无意中侵犯隐私的可能性。 综上所述,在应用先进的感测设备时,我们就需要考虑到传感器能在无意中获取什么样的信息。 虽然谈了不少消极的方面,但先进的感测设备能比传感器感测到更多的信息,所以它才能够实现单凭以往的传感器无法实现的服务,才会极具魅力。毫无疑问,日益进化的感测设备丰富了我们的生活。接下来就一起看一下这些具有代表性的感测设备。 RGB-D 传感器 如果传感器能测量出人和物之间的距离,就能实现便民服务。如果传感器能帮我们自动测量房间大小和家具尺寸,那么我们在要买新家具的时候也不会发愁了。一进厨房灯就自动打开,同时不知何时起居室的灯就关上了……这样是不是很方便呢?至今为止,为了用传感器实现这些功能,开发者们付出了很多努力。 一般情况下,获取物品位置时使用的是测距传感器。然而,测距传感器只能获取某一点的距离信息,还不能分辨测量点上的是人还是物。 虽然我们也能通过把普通相机和图像处理结合起来进行分辨,但一般情况下,用这种拍摄获取的信息里不包括距离信息。因此,要同时实现这两个目的是非常困难的。不过近年来,为了解决这个问题,人们开发出了一种叫作 RGB-D 传感器的感测设备,这种设备已经逐渐得到普及和应用(图 4.3)。

RGB 是红( Red)、绿( Green)、蓝( Blue)这 3 个英文单词的首字母缩写,由这 3 种颜色能进一步变幻出各种各样的颜色。在用计算机等设备表示颜色的时候经常用到 RGB 色彩模式这个说法。最近,计算机上的绘图软件也都普遍使用 R、 G、 B 这 3 个参数来调整色调。 那么 RGB-D 又是什么呢?如刚才所说, RGB 表示的是 3 种原色,而 RGB-D 最后的 D 是深度( Depth)的首字母。说深度可能比较难以理解,请大家理解成“传感器到传感器所能捕捉到的物体的距离”。大多数情况下,就以往的图像数据(如位图格式等)而言,每个像素都有色彩信息。RGB-D 在此基础上还包括了距离信息。也就是说, RGB-D 传感器在相机原有的功能上又添加了测量距离的功能,它甚至能测量传感器到被拍摄物体的距离。 第 3 章讲过测距传感器的机制。请把 RGB-D 传感器想象成测距传感器和相机的组合强化版传感器。有几种方法可以实现 RGB-D 传感器,这里要讲的是 RGB-D 传感器的一般机制及其特征。 立体相机 很久以前就有人在研究如何用相机来测量距所拍摄物体的距离,立体相机便是其中历史最为悠久的一门技术。立体相机有使用胶卷的,也有连在计算机上使用的。这两种立体相机都有两个镜头(如图 4.4 所示)。这两个镜头就跟人的眼睛一样,利用双眼视差(左右眼看到的角度不同)来捕捉距离。

正如我们所知,人类对空间进行立体上的认知时,利用的是双眼视差原理(两眼捕捉到的图像有所偏差)。普通的立体相机利用的原理也跟它很相似。在此,我们来一边了解这个原理,一边思考立体相机的机制。 请看图 4.5。大家用双眼看物体时,左眼和右眼捕捉到的影像存在着微小的差异。这是因为左眼和右眼之间隔着几厘米的距离。凭借这段距离,人类就能获取捕捉物体立体影像时需要的信息。于是,从这两个有着微妙差距的位置中捕捉到的影像就在我们的大脑中得以合成,并作为立体影像被处理。

那么人类具体是如何感觉到纵深的呢?捕捉近处和远处的物体时,我们的眼睛里又发生了什么呢(图 4.6)? 看近处的物体和看远处的物体时,两眼视线形成的角度(辐辏角)相差很大。离得远,角度就小;离得近,角度就大。大脑负责把眼睛的转动信息与影像进行合成,这样我们才能感觉到远近。

与此相对,立体相机中两个镜头的角度通常是固定的。根据左右镜头拍摄的图像的差距,就可以测算出所拍摄图像中的距离(图 4.7)。首先,把用一个镜头拍摄下来的图像细分成一幅幅小图像。接下来利用图像处理的手法,调查一下分割好的图像相当于另一个镜头所拍摄图像的哪个部分。这样一来,就能知道图像某一部分会是另一个镜头中的哪一部分。虽然拍摄是在同一个地方,但镜头位置不同,所以会产生微小的偏差。对这个偏差进行几何学计算,就能算出图像中的距离。另外,对分割的图像分别地反复进行同样的操作,还能计算相机图像上任意一点的距离,从而制作出整体图像的距离分布模型。 立体相机是利用两个镜头来计算距离的。基本上,只要两个镜头里都有这个地方,就能对其进行测量。不过,如果两幅图像间重复的地方太多,或是有透明玻璃等无法拍摄出来的地方,就无法测量相机到这些地方的距离。另外,如果想提升测量的精确度,则需要基于两个镜头的距离关系,以及相机本身的规格来决定参数。 此外,也许是因为技术方面的成熟,近年很多汽车上配备的辅助功能(如快追尾时自动减速等)也应用了用立体相机测量距离这一测距方法

点阵图判断法 立体相机是利用两个镜头来测量距离的,其实还有用一个镜头就能测量距离的方法。这个方法就是点阵图判断法。点阵图判断法就是拿一幅叫作点阵图的图案来作为标志,从多个方向投影这幅图,再根据投影的变化检测出物体之间存在的纵深关系。 点阵图判断法本身不是 RGB-D 传感器,这门技术只能检测出纵深( D)。 不过拍摄中会用到镜头,所以可以跟图像相结合。请看图 4.8,使用点阵图判断法需要点阵投影部位、点阵识别部位、判断装置这 3 个要素。 通常这些模块都是集中在一台设备上的,所以操作起来并不困难。

下面来看一下点阵图判断法的原理。 一开始,点阵投影部位会发光,把点阵图投影在要测量的对象上。通常在投影点阵时使用的是红外线,所以我们用肉眼是看不到的。图.9 的左侧是投影出的点阵图的示意图。只要像这样把点阵图投影在物体(例如房间的墙壁)上,点阵识别部位就会将点阵检测出来。点阵识别部位通常采用能检测出红外线的镜头模组。此时,如果对投影的点阵图进行拍摄,平面上就会浮现出点阵图,这样一来就能不偏不倚地对其进行识别了。

如图 4.9 的右侧所示,在墙壁前面随便放个物体。这样一来,投影处的深度就发生了变化。这次是已识别的图案发生了变化,因为只有存在物体的那部分点的投影会比较近,所以位于投影位置旁边的点阵识别部位就会识别出点之间的距离发生了改变。也就是说,点阵图判断法利用的也是视差原理。因为投影点的模块和识别点的模块是不同的零件,所以设置位置是有偏差的(这跟我们的左右眼不可能存在于同一个位置是一个道理)。因此,点的位置会随着距墙壁前物体的距离而在左右方向上产生偏差。 点阵图判断法只有一个镜头用于识别,而判断装置负责存储原始的点阵图。这样一来,就能与设想的图案进行对比,寻找差距,从而判断物体的深度关系。 另外,点阵图判断法和立体相机一样,在有透明玻璃等时,无法正确判断距离。不过,只要是红外线点阵图能识别出来的场所,就算有很多地方相同,也能测出距离。 TOF 关于 RGB-D 设备的机制,最后要为大家介绍的是一种叫 TOF Time of Flight)的技术,直译过来就是“飞行时间”。它的原理也跟其名字一样,是通过测量从发射光线到光线反射回来的时间来求出距离。 前面给大家说明的立体相机和点阵图判断法都存在一个难点,即测量时容易受到干扰(扰乱控制的外部作用,如阳光、灯光、阴影等)。 因此如何在屋外使用设备就成了一个必须突破的难关,基本上多数产品都是以在室内使用为前提的。而 TOF 技术抗干扰性强,精确度也高,是 RGB-D 传感器当下最受瞩目的技术。 TOF 技术的原理非常简明易懂,不过解释原理和开发实现原理的设备完全是两码事。如此优秀的设备之所以能被商品化,其原因都在于工程师们的努力。这里来看一下 TOF 技术的基石:创意。 TOF 技术的传感器分为两部分:发光部位和内置有特殊传感器的相机部位。相机部位和普通的数码相机一样,镜头里都含有感光元件。传感器通过这个元件来感应光线,以此来记忆图像的各个点是什么颜色的,从而形成一张完整的照片。通常的数码相机到这一步就结束了,而采用 TOF 技术的相机会在此基础上向各个点追加距离信息。 为了获取距离信息,需要调查光反射回来的飞行时间。也就是说,只要测量出从发光部位发出光的瞬间开始,直到感光元件的各个点捕捉到光的这一段时间,就能判断每个感光元件拍摄了多远的物体(图.10)。实际上测量光的反射时间时,需要调查发射出的光和接收到的光这两者的相位差(两个波动的差),不过从思路上来说两者是没有差别的。

除此之外, TOF 技术还包含了利用超声波测距的技术。超声波与光不同,就算是透明玻璃之类的物体,也能测出到此物体的距离。 自然用户界面 RGB-D 传感器都用在什么方面呢? RGB-D 传感器最广泛最普遍的用途是用在一种叫作自然用户界面的设备上。自然用户界面就是利用了人类的手势和语音的用户界面,英语记作 NUI( Natural User Interface)。在实现 NUI 时,我们会用到很多GB-D 传感器的技术,下面就为大家介绍几个主要的 NUI。 微软 Kinect 现在各种各样的制造商都销售 RGB-D 传感器,其中最著名的产品就是微软公司的 Xbox 360 Kinect 传感器(以下简称 Kinect)(图 4.11)。

Kinect 是微软公司的游戏机 Xbox 360 的一种控制器,这款产品为GB-D 传感器的热潮又添了一把火。它支持语音识别,能够识别用户全身的动作,颠覆了以往“用双手拿着控制器才能玩电子游戏”的常识。 过去也有过不用手操作的控制器,比如玩跳舞游戏用的毯型控制器等,而 Kinect 就不需要与控制器有物理上的触碰。从这点上可以说,它是一款前所未有的控制器。虽然微软官方尚未公布准确的信息,但已知第一代 Kinect 内部装有 PrimeSense 公司的传感器模块,在三维空间识别方面应用了点阵图判定法。 虽然后续机型 Xbox One Kinect 传感器采用了 TOF 技术,但 Kinect强大之处不在于测距,而在于能够从距离图像中检测出人的位置和姿势。过去那些使用毯型控制器的游戏无法判断双手的位置,而 Kinect 却实现了用双手双脚来玩游戏。因为 Kinect 感测技术的详情并未公开,所以本书无法介绍其详细机制,不过笔者相信,今后会出现更加直观的传感器。真让人期待不是吗? Leap Kinect 的出现带来的冲击已经颠覆了人们以往关于传感器的常识,而给新型传感器时代的到来砸下定音之槌的则是 Leap( Leap MotionController,厉动控制器),它是 Leap Motion 公司于 2012 年公布的一款小型用户界面设备,从外表上看,是一个长约 8 cm 的立方体(图 4.12)。

把 Leap 放在桌子上,它就能高速且精密地追踪其上方半径约 50 cm围内的人类手指发出的动作,其精确度最高在 0.01 mm(图 4.13)。

那么 Leap 是如何捕捉手指动作的呢? Leap 配备有两个摄像头,一个用来捕捉照射在机体上的红外线光,另一个用来捕捉反射出的红外线光(图 4.14)。也就是说, Leap 和立体相机都是利用相同的原理去捕捉人手的,只不过 Leap 应用的是红外线。 另外,因为拍摄利用的是红外线,所以它有一个强大的机制来对抗外部干扰,比如从设备上方投射下来的房间内光线等。

这里介绍的 NUI 可以识别手势,也能够轻易地识别出人的动作。此外,作为 RGB-D 传感器而言, Kinect 操作简单且可用性强,也能够用作实验用途。