当下越来越火的自动驾驶汽车,它们获取的地图信息大多是通过汽车上的相机捕获的。相机捕获的一般是2D平面图像,然后将其转化为3D,只是这样转化后会导致数据的丢失,比如无法精准识别汽车周围的路障等。不过现在很多驾驶系统已经实现了对3D信息的采集和处理,其中的点云技术备受关注。
3D信息捕捉——没你想的那么简单
大家知道3D信息是立体数据,这样捕捉到得信息符合我们双眼在正常世界看到的景象。显然如果自动驾驶系统捕捉到的周边环境如果也是3D信息,那么在人工驾驶基础上发展起来的自动驾驶系统就可以更好实现对周围路障如周边人、其他汽车等进行更精准的识别和避让,从而让驾驶系统更安全。
不过3D信息的捕捉并不是一件简单的事情,传统的3D数据捕捉是借助“Stereo”(双目视觉)方式获取的。这种方式是通过布置两个或者多个相机对同一个场景进行多角度的捕捉,然后通过不同图像、匹配对应的像素,并计算每个像素的位置在图像之间不同,从而计算出这个像素在3D空间中的位置,通过这种方式来获得特定物体的3D数据(图1)。
图1 双目视觉方式图解
不过这个方式有个很大的不足,因为驾驶系统经常处在一个快速运行的环境中,并且需要很精准地对对象进行识别。但是使用这个方法获得数据,我们需要使用视觉细节来匹配相机图像之间的对应点,这种计算方法数据量非常庞大,而且在缺乏纹理或视觉结构重复的环境中容易出错。在自动驾驶系统中,现在很多厂商使用的是LiDAR(激光雷达)方式来捕捉3D数据。在这些自动驾驶车顶上配备了激光雷达相机,它会向周围发射高频激光脉冲,如果遇到物体的遮挡,这些激光脉冲就会反射返回,系统通过计算返回的时间来测量出物体和汽车的实际距离。比如探测到前方的信号灯,通过返回光束就可以探测车辆和红绿灯之间的实际距离了(图2)。
图2 LiDAR(激光雷达)探测图解
一台自动驾驶汽车配别多个3D LiDAR传感器,它们能快速旋转以观察传感器周围的所有方向,这些雷达通过每秒发送数百万光束,然后通过返回的光束时间就可以推断出与周围任何物体的精确测量值(最大约60米),从而实现驾驶系统对周边物体的精准探测(图3)。
图3 自动驾驶汽车配备的多个3D LiDAR传感器
3D信息识别和处理——点云模式和深度学习
通过上述方法,自动驾驶系统捕捉到3D数据后如何让驾驶系统进行3D物体的识别?这里驾驶系统使用的是“点云模式”方法进行识别。驾驶系统根据3D LiDAR得到的三维数据,包括物体的三维坐标(XYZ)、激光反射强度(Intensity)和颜色信息(RGB)。这样系统在获取物体表面每个采样点的空间坐标后,得到物体在空间坐标上的一个个数据点,这些点组成点集合,整个集合形成一个3D物体,从而让系统可以实现对物体的精准识别。
图4 点云模式图解
比如激光探测到前方路障,通过返回的信息集合点就可以在驾驶系统中形成一个周边环境的3D地图。3D LiDAR绘制的地图不仅可以让系统准确了解自己在世界的哪个位置进而帮助您进行导航。同时它还可以识别和跟踪汽车,行人等障碍物,随着识别技术的发展,现代LIDAR使你可以识别一个骑自行车的人和一个行走的人,甚至可以测量他们改变方向和行进的速度。这样对于自动驾驶系统,它就像在驾驶室里坐着很多个视力极好的驾驶员,他们分别对汽车的前后、上下、左右进行全向观察,从而实现又快又安全的自动驾驶(图5)。
图5 谷歌汽车3D LiDAR绘制周边地图图解
当然在实际驾驶环境中,每种路障大小、位置、距离都是不同的,只是简单采集并识别3D物体,这还无法让自动驾驶系统可以安全在复杂的地理环境下安全、自动进行驾驶。为此科学家引入了深度学习机制,他们首先建立一个模型,然后将3D LiDAR捕获的不同的图形让驾驶系统学习,通过不断学习,自动驾驶系统可以“认识”到不同捕捉的物体。同时借助深度学习神经网络让系统实现自主学习,最终生成一套复杂的算法,让驾驶系统可以精准实现周边复杂环境的物体,实现安全的自动驾驶(图6)。
图6 深度学习图解
3D信息处理的更多应用
上述我们主要介绍3D信息处理在自动驾驶中的应用,这个领域的应用和我们的生活有点距离。不过3D信息处理还在很多领域有非常多的应用,比如在医学领域,配备了3D信息识别设备医疗设备,通过激光探测,医生们无需在我们体中插入传统的探测设备如胃镜等,他们就可以非常快速且精准对病灶物体进行详细全面的查看,省去现在传统检测中的那些痛苦。
在日益火热的VR游戏领域,3D信息处理技术也有很多的应用,通过类似3D激光扫描和识别,以后的VR游戏可以非常方便将当前物理环境无缝融入到游戏环境中,让我们的游戏体验更为真实、刺激。我们期待随着技术的进步,3D信息处理可以给我们生活带来更多的便利!