最近的科技圈里,一篇关于最神秘的创业公司MagicLeap造假的报道一夜之间传开。甚至在有些媒体的渲染之下,很多吃瓜群众觉得谷歌、阿里巴巴砸的钱打水漂了,MagicLeap一文钱不值了。
其实,报道的原文指出,MagicLeap的demo视频中“至少一条”是特效;而体育场的鲸鱼,只是个“展望未来”的特效,其实也早已是不争的事实。
(图片来自MagicLeap官网演示视频)
就算MagicLeap目前公布的全部视频都是特效,如果你探究一下MagicLeap究竟想要做的是什么事情,在研究的是什么技术,你就会为这技术的难度而敬畏,为它未来的前景而惊叹,从而不再诟病那几条特效视频了。(当然,很多人相信这技术太难了,以至于10年之内根本不可能达到,从而继续诟病MagicLeap的不切实际。但笔者本人向来是相信所有敢于尝试不可能的人的。)
那么MagicLeap到底要搞啥?不是计算机视觉,不是环境建模,不是图像处理——那些留给软件公司去搞就好。
MagicLeap的核心只有一样,光场显示。
想象一下,如果把你家里的窗户玻璃换成一幅高分辨率的照片,一幅精心调整好大小、比例、亮度和色彩的照片,照片上是原本窗外的景色。请问多长时间你能够发现窗户被动了手脚?你肯定觉得,这不可能瞒得过你的眼镜。
如果把照片换成一块高分辨率显示屏,同时增加眼跟踪功能,画面会根据你眼睛的位置实时渲染,就像《碟中谍4》里面展示的装备那样。那么你多久能发现窗户的破绽?其实如果从远处看,你几乎不会发现破绽,直到你决定走到窗前远眺风景思考人生的时候,或者你和家人两个人一起远眺风景的时候,一定会发现破绽(就像《碟中谍》电影里那样)。
(带头追踪的伪装投影——图片来自《碟中谍4》)
然而,如果把窗户换成一块光场显示屏,就是MagicLeap想做的那种,那么你可能永远不会发现其中的破绽,即使多人观看也不会。对于文章开始提到的出名的“体育场鲸鱼”视频,如果能在体育场的观众面前放一大块光场显示屏,那么完全可以展示足以乱真的的鲸鱼。
什么是光场显示?
我们先从普通的头显(Head Mount Display,HMD)开始,看看他们是什么原理。从15块钱的纸板头显,到高端的Vive或Rift,其光学原理都是(每只眼睛)一个凸透镜加一个显示屏。
(Vive的一个“眼睛”——图片来自iFixit)
如果回忆一下中学的几何光学,原理如下图所示。由于凸透镜的存在,人眼观察到的是显示屏的一个放大的虚像。虽然显示屏距离人眼只有几厘米,但这个虚像位于几米或者更远的位置,同时其大小超过了人眼转动的范围(eyebox),从而人眼看不到它的边界,好像画面无限大。
然而它是在一个固定距离位置的一块虚拟屏幕(平面)。人眼看到的光,全部从这块虚拟屏幕(平面)发出来。如果暂不考虑双目视觉,单用一个眼睛去看,你看到的是一个大平面,毫无立体感。
下面来说光场。
假设你前方的视野中有两个彩色的灯泡(点光源),一个红色,一个绿色,正如下图a)中的情况。它们发出的光线被你的眼睛接收到,从而你看到了两个真实灯泡的存在。请注意,图中只画出了11条光线,这只是示意。实际情况中,点光源发出的光线比图中“密实”的多,完全填满了图中的缝隙。
如果在眼睛和灯泡之间放一个平面,那么透过平面的光线就是图中b)中实线的样子。假设我们去掉灯泡,而是在原来平面的位置模拟出和原来相同的光线(相同的颜色、相同的强度、相同的方向),即那些实线,那么人眼看上去就会认为真的有两个灯泡,而且它们的位置恰好和之前相同。透过平面的光线的颜色、强度、方向,就是光场。能模拟出颜色、强度、方向的平面,就是光场显示器。这就像图中b)的样子。
而普通显示器,包括普通HMD中成像在远处的虚拟显示屏,则不是这样工作的。首先,要表现的两个光源会被投影到屏幕所在的平面上(这时因为拍摄图像时,就只记录了一个投影),而光线则是从屏幕平面发出的,就像图中c)那样。
如此的差异,是因为普通显示器只能再现光的强度,而丢失了方向信息。事实上,普通显示器的每一个像素点,只能类似一个点光源那样向所有方向发光。而光场显示器的每一个“像素”,可以向不同的方向发射不同强度和颜色的光线,从而可以完整再现光场原有的样子。
光场显示有什么好处?
首先,如果有一块足够大的光场显示屏(比如你的窗户那么大),那么双目视觉将自动呈现出不同的,物体的遮挡关系会自动随着观察位置的移动而改变。因此,3D眼镜、头部追踪,统统都不需要了。这就是MagicLeap体育场鲸鱼所展望的那样。
可惜,目前貌似还没有像窗户那么大画幅的光场相机,更不要说显示了。看起来MagicLeap目前似乎也只是想开发带有光场显示的HMD。看看MagicLeap展示出来的小片片。
(MagicLeap创始人展示一片神秘的片片——图片来自Wired)
这样一来,虽然头部追踪、双目视觉,还是要靠计算的,但是光场显示仍然可以带来两大好处。
首先,是个不那么重要的,就是光场显示屏可以直接放在距离人眼几厘米的地方,而无需再通过透镜成像。这是因为人眼聚焦的是显示屏显示的虚像,而不是显示屏本身。这使得HMD可以做的非常轻薄,就像普通眼镜一样。
更重要的优势是3D效果。数字叠加的影像的焦距(或“深度”),是可以自由连续变化的。因此,观察者眼睛的焦距(晶状体的焦距)可以更自然的切换于不同深度的虚拟物体上,或者深度相同的虚拟物体与真实的背景物体。你不会感觉虚拟物体好像笔直地悬在空中,而是真正叠加在环境里。这种体验是单纯靠双目视觉无法满足的。(斯坦福SCI组的教授讲,特别是在75cm手臂距离内,焦距和双目视觉相比对3D效果的体验起决定性作用。)
然而,即便是这样小的一块光场显示屏,也足以消耗一群世界上最聪明的头脑,以及数以亿计的资金,才有一丝丝可能完成。况且目前MagicLeap的研发看起来走的并不顺畅。
光场和全息
其实光场的记录和再现,最传统的方式就是全息摄影(Holography)。在一些信用卡或包装盒上,有激光防伪标志,看起来好像一个立体的标志悬浮其中,那就是全息技术。然而全息摄影,只能通过全息胶片作为记录和再现的载体,直到一款光场相机的面世,名为Lytro。
Lytro通过微透镜结构,可以数字化地记录光场。然而,Lytro推出的这么多年,就只有一个杀手锏应用,即拍照时无需调焦距,可以后期调节焦距,选择前景或背景的虚化。遗憾的是,这个功能很快被双目带深度的摄像机加后期处理达到,再后来甚至被通过纯软件实现了。时至今日,恨不能手机都做了个“后期调焦”的功能,美其名曰“光场摄影”。其实那和光场没半毛钱关系,“后期调焦”只是光场的一点点应用罢了。
(Lytro光场相机Illum——图片来自网络)
Lytro的尴尬在于,拍下了完整的光场数据,却苦于没有再现它的手段,只能玩玩“后期调焦”的小把戏。而光场显示技术,正是完成这一闭环的另一片拼图。
有没有其它做光场显示技术的团队?据我查找,还有两个。一是NVIDIA,采用了和Lytro类似的微透镜技术,通过完全相反的光路,实现光场的再现。另一个是斯坦福SCI组利用有一定间距的两层LCD做的系统(http://www.computationalimaging.org/publications/the-light-field-stereoscope/),后面的LCD负责显示,前面的LCD负责调制(类似充当微透镜的作用?)。
光场和HoloLens
很遗憾,据我所知HoloLens和光场没有半毛钱关系,虽然HoloLens的名称和广告中与全息总是挂上联系。
HoloLens的核心在于让现实景物与显示内容合而为一的光学技术(而且此技术中很可能用到了全息技术)。而其数字显示内容,仍然是成像在无穷远的一个平面,而不是带有光线方向信息的光场。
此外,作为软件公司的作品,HoloLens的核心还在于结合了强大机器视觉的具体MR应用。
结语
如果我们能实时精确地跟踪人眼位置、角度,测量人眼内晶状体的焦距,那么我们总是可以通过计算,用普通的显示屏大致模拟一个基本符合认知的图像。然而,光场显示是真正完全再现人眼看到实物的光线的方式。无论人眼距离光场显示屏多进或多远,无论单眼双眼还是多个人多只眼,无论角度位置,只要透过光场显示屏,都能看到真实的画面。
有一天,你的窗户被换成了光场显示器,即使屋外雾霾密布,从屋里看出去仍然阳光明媚。