如今,微创手术已进入3D 时代。比如3D腹腔镜就可以提供三维立体视觉,医生佩戴3D眼镜进行手术操作,具有全高清的立体感和空间感,操作起来安全可靠,不容易损伤人体的正常组织。
再想象一下,在未来自动驾驶环境中,高速行驶的智能汽车,将通过立体视觉生成的深度图实时获得前方车辆的距离、位置及相对速度等信息,以保持安全距离,确保安全行驶。
自动驾驶汽车可保持安全距离
以上提到的“立体感”“立体视觉”,到底是什么?为何它可以提供更精准的距离信息?
立体感
近年来3D电影越来越受欢迎,简直可以说“无3D不电影”。我们喜欢看3D电影,是因为它比2D电影更让我们感到真实。换句话说,就是3D电影具有“立体感”。那么,我们是如何感受到“立体感”的呢?
要想感受到“立体感”,最少需要两只眼睛,靠一只眼睛是无法完成的。当我们注视某一物体时,双眼的视线会自然地交叉于一点。这一个点,被称作“注视点”,从注视点反射回视网膜上的光点是对应的。许许多多对应的光点形成两幅图像,视网膜再将两幅图像传送到大脑的视觉中枢,合成一个立体的像。而比如牛、马等眼睛长在两边的动物,因为双眼的视野不能重合,它们也就只能看到2D的图像了。
感受到立体感的原理
再回到3D腹腔镜和智能汽车,它们之所以有更好的立体感,并凭其准确判断出距离,就是因为它们有一双“眼睛”——两个摄像头,而且这两个摄像头所拍摄的图像有重合,同人的立体视觉的实现如出一辙。机器立体视觉的实现,我们称为“双目立体视觉”。
双目立体视觉如何测距
双目立体视觉(Binocular Stereo Vision)是机器视觉的一种重要形式,它是基于视差原理并利用成像设备从不同的位置获取被测物体的两幅图像,通过计算图像对应点间的位置偏差,来获取物体三维几何信息的方法。
我们换个说法,双目立体视觉通过立体匹配得出的视差值,可以求解出目标和摄像头之间的距离实现测距。
1、双目测距的原理
双目立体视觉融合两只“眼睛”获得图像并观察它们之间的差别,可以获得明显的深度感,建立特征间的对应关系,将同一空间物理点在不同图像中的映像点对应起来,这个差别,我们称作视差(Disparity)。
通过对两幅图像视差的计算,直接对前方景物(图像所拍摄到的范围)进行距离测量,而无需判断前方出现的是什么类型的障碍物。所以对于任何类型的障碍物,都能根据距离信息的变化,进行必要的预警或制动。
双目摄像头的原理与人眼相似。人眼能够感知物体的远近,是由于两只眼睛对同一个物体呈现的图像存在差异,也就是“视差”。物体距离越远,视差越小;反之,视差越大。视差的大小对应着物体与眼睛之间距离的远近,这也是3D电影能够使人有立体感的原因。
视差原理
2、双目测距的难点
在获得立体感的过程中,计算机需要对两幅有视差的图像特征提取算法,获取特征点,然后再对两幅图像上的这些特征点进行匹配。整个过程计算量非常大,对计算单元的性能要求非常高大。
而FPGA具有灵活高效、可重复编程特性,可实现定制性能、高吞吐量和低延迟,是十分灵活且强大的计算加速器。所以,很多研究机构将算法进行简化后,使用FPGA进行处理。
创新中心展厅展示的基于FPGA的超低延时双目测距成像系统,由南京图格医疗科技有限公司研发。该产品采用FPGA和两个200万像素的传感器,经过实时运算,获得稠密的深度图,再映射成准确的距离信息。
由于采用了复杂但是精准的立体配和优化学习方法,系统延迟小于10ms,带宽占用极低,在算法性能、资源和时序获得了深度的优化提升。首先对镜头进行实时标定,采用自主设计的块状堆叠存储和差分累积等机制,继而采用立体匹配和全局修正算法获得稠密的深度图,最后进行距离映射。
如果说双目立体视觉已然是一双“慧眼”,可以看得清、测距准,那么FPGA就像是一双翅膀,插上FPGA翅膀的“慧眼”可以更快地完成测距。
目前,该产品已经在多家知名自动驾驶平台上采用,并在量产车型中得到系统验证,而且正向高铁视觉检测等方向落地,超低延时为高速行驶车辆的视觉辅助提供了感知基础。