我已经向你介绍了利用飞秒摄影技术,以及利用WIFI,来进行非视线成像的方法。今天我将给你再介绍另外一种很震撼的技术:角膜成像系统。
让我们先看看美女视频吧:
你看到了吗,只要相机足够清晰,我们完全可以通过人眼反射获得当前相机无法直接观测到的场景信息!
这也就是今天我想介绍的技术——角膜成像系统——的关键思想来源。
哥伦比亚大学的Nishino和 Nayar在2004年发表了论文 The World in an Eye,第一次提出了角膜成像系统。
在这篇论文中,他们详细阐述了角膜成像系统的几何模型,角膜缘的图像定位,角膜的三维位姿确定。然后他们详细的分析了角膜成像系统的焦散、分辨率等信息,还展示了一些角膜成像系统的真实应用:捕获场景全景视图、甚至定位人的注视物体等。
作者在项目主页上展示了两个让人印象深刻的视频:通过角膜成像系统拍摄的两段视频,准确的步骤到了人眼真正观察到的核心场景的视频:
现在让我们仔细顺着作者的思路,来看看其中的细节。
折反射成像系统是一种特殊的成像系统,让我摘录一段Wikipedia的定义:
折反射光学系统是一种将折射和反射结合在一个光学系统中的光学系统,通常通过透镜(屈光镜)和曲面镜(折射镜)。折反射组合用于聚焦系统,如探照灯、前照灯、早期灯塔聚焦系统、光学望远镜、显微镜和长焦镜头。其他使用透镜和反射镜的光学系统也被称为“折反射”,例如监视折反射传感器。
下面是一个典型示例:
绝大多数折反射镜头都有一个特点,即:成像器件(例如传感器)和光学器件是紧密绑定在一起的。
而角膜成像系统的作者却敏锐的观察到,人眼+对着人眼拍摄的相机,也构成了一个折反射光学系统,只不过此时成像器件和光学反射系统不再是绑定在一起的,当眼球转动时,整个成像系统的光路会相应的发生改变。
所以让我们先来看看人眼的物理模型吧,从下图我们可以看到,人眼前几层的关键组成部分又角膜、瞳孔、虹膜、巩膜。其中,角膜的反射能力是最强的,它恰好形成了我们折反射成像系统的反射镜。
我们可以将它建模成为一个椭球面:
作者引用一些资料指出,对于正常成年人,tb基本上等于2.18mm,底部半径rL一般是5.5mm,椭球顶部的曲率半径是7.8mm,椭球的偏心率为0.5。作者的后续实验就是建立在这样的数据之上的,他们还指出即便人与人有些微的差别,也不会影响最终的结论。
为了定位眼球的位姿,首先得定位角膜缘在图像上的位置,如下图所示红色椭圆。
我觉得这个问题在今天看来已经有很多高级的解决方案了,比如现在很多小同学也会找一堆数据集,分分钟训练一个高质量的角膜分割模型(虽然效率及泛化性如何有待商榷 )。但在2004年,作者想要做的是用一种非常简洁有效,可解释的方式来定位角膜缘。考虑到角膜正面观察基本上是一个圆形,因此对任意方向的观察者来说,基本上可以用一个椭圆来描述角膜缘,因此这里需要寻找的就是椭圆在图像上的 中心点、长短轴半径、旋转角度,这几个参数。
因此作者将下面这个积差分操作作用到图像上,并求解使之响应最大化的参数,来达到定位椭圆的目的。这样做的好处是,检测结果不会受到眼睑遮挡的影响,准确度是比较好的。
这里是作者列出的检测结果,准确度还是挺不错的:
当然,我觉得如果采用轮廓检测以及霍夫变换,也能达到在眼部图像中寻找角膜缘的目的,感兴趣的读者不妨一试。
接下来,作者想要做的是定位角膜相对于相机,在三维空间中的位姿。
先从位置讲起,我们可以首先定位眼角膜模型中,角膜与相机之间的平均距离d,如下图所示。
简单的把这个系统看成是一个透视投影,可以将d表示为下式,其中rL=5.5mm,f是用像素表示的相机焦距,rmax是刚才通过检测角膜缘得到的椭圆长轴半径,也是用像素值来表述。
相应的,我们可以通过图像上的椭圆中心,反推出在相机三维坐标系中,角膜底部中心的X/Y坐标,至此角膜的三维定位完成。
作者对某个受试者,在5种不同已知距离上分别采集了不同注释方向的10幅图像,并验证上面定位方式的误差,结果如下,总体来说误差是小于5%的。
接下来,就要定位姿态了。我们看到上图中,正是因为角膜相对相机有一个偏转角度,才使得正投影为原型的角膜,在图像上实际上形成了一个椭圆。通过简单的三角运算,可以求得这个角度为:
到此为止,我们知道了角膜的两个方向角,一个是通过定位角膜缘图像得到的旋转角,一个是角膜底部平面和相机平面的旋转角,这就相当于定位了眼球的姿态了。
有了前面的铺垫,作者进一步分析了整个角膜成像系统的下面几个特征:
这里面的数学和光学知识挺多,我们就直接看看一些比较容易理解的点吧:
首先,角膜成像系统的视场角是大于眼球主人的视场角的,这从上图可以看的出来。所以,即便是眼球主人自己都不曾留意的场景中的部分信息,我们都可以通过角膜成像系统恢复出来。
另外,可以从上图看到越是接近视线方向,分辨率越高。这意味着我们通过角膜成像系统得到的图像的分辨率分布,实际上和眼球主人的主观感觉是一致的。
通过上面的模型,作者展示了可以通过眼球图像恢复出场景全景图,并进一步通过视线角度以及人眼FOV,获得眼睛的主人真正在关注的场景画面,如下图所示:
你可以看到,当相机和角膜的相对位姿不一样时,极坐标展开时的参数是不一样的,但最终都准确的捕捉到了人的真正关注场景。
下面是更多的例子:
你也已经从文章开头看到作者展示的动态视频了,第一次看到时我真的拍案叫绝!
作者甚至还展示了两眼构成的立体角膜成像系统:
这样就使得我们可以一定程度上恢复场景的三维结构,当然作者也提到由于相机捕捉到的画面分辨率不足,所以只能粗略恢复很近的物体的三维结构
今天为你展示了哥伦比亚大学的Nishino和 Nayar教授的研究成果,能够通过人眼的反射进行非视线成像,获取到场景的关键信息,还能够获取到人眼的感兴趣场景画面。
如今,相机的解析力越来越高,画面越来越清晰。而且,现在超分辨率技术也得到了充分的研究,我就检索到一篇2017年的文章,在搞角膜成像系统的超分辨率,限于篇幅原因,我就不详细展开了。
总之,我感觉今天介绍的技术实用性真的越来越有了,像下面这样拍一张照片就恢复出美女的关注点,不再是实验室的设想了。下次你走在路上假装没有盯对面的美女时,小心被人发现哦,哈哈!
今天的文章主要参考了:
最后,再次感谢美女模特Sunny出镜!
本文同步发表在我的微信公众号和知乎专栏“计算摄影学”,欢迎扫码关注,转载请注明作者和来源