我看光场相机和Lytro
Lancelot365向cvchina投递了他对光场相机和Lytro的看法.与君共享.
前几个月,一个名为Lytro的相机是闹得轰轰烈烈,其“先拍照,后对焦”的理念及主要研发人华裔的身份都很能吸引眼球。一开始我是对其不屑一顾的,心想我拍个大景深的照片PS里高斯模糊一下不是一样的效果么?还要你融资五千万美刀开发一个相机?最近看machine learning跟pattern recognition的paper看的蛋疼,又在cvchina发现一篇介绍这个相机的文章,作者对其是不吝溢美之词,引发了我对它的兴趣。于是研究了下作者的两篇paper,写下此文。肯定有错误,希望各位大牛指正。
PS。本文部分图片来自CVCHINA,部分来自Ren的paper,参考资料主要是他的paper还有他paper参考的paper….
原理
Lytro实际是一个Light Field相机,也就是光场相机。光场相机并不是一个新鲜的概念,早在1996年,Levoy和Hanrahan就提出了四维光场可以表示空间内的所有光线,这十数年内更是有很多大牛对光场和光场相机做了无数研究,甚至有人(Adelson,Wang)做了prototype出来。相对于传统相机只能储存二维的数据(也就是每个像素对应的辐照),光场相机的优势在于它不仅能储存每个像素对应的照度,还记录了照到该像素的光线的方向。这是如何做到的呢,且听我慢慢解释。
传统相机
传统相机所成的图像只于辐照(irradiance)有关,所谓辐照,也就是通过镜头的光线辐射的加权积分:
图片说的很清楚,LF就是代表一条光线,F是镜头于传感器之间的距离,是此光线与成像面(也就是传感器)法向量之间的夹角。
当然,相机的传感器不会“计算”这个辐照。它是通过物理过程(或者化学过程)体现的。比如电子在CCD(CMOS) 上的一个像素的累积,或者卤化银在光线的照射下分解。
光场相机
对于光场相机,图像的形成有两步:测量(measurement)与处理(processing)。在测量过程,传感器记录了光线的强度及方向,也就是LF本身。在处理过程,光场相机通过计算可以生成焦点在任意位置的传统相机图像。其原理很简单,就是相似三角形。回想传统相机,对焦(或者说调焦)的过程也就是通过转动对焦环来调节镜头光心到成像面的距离,这个过程移动的是镜头光心。而对于光场相机,这个步骤而是通过移动假想的成像面计算出来的。这就是光场相机可以先拍照后对焦的关键所在。
看上图,假设我们把成像面从距离镜头F处移动到F’,。通过相似三角形我们可以轻易地算出
还记得公式(1)么,带入(1)我们可以很轻松的算到EF’,从而得到重新对焦后的图像。
从光场相机的原理我们可以看出来,理想条件下,通过光场计算出来的图像与传统相机拍出来的照片是完全一致的!也就是,这个先拍照后对焦的过程与先对焦再拍照是完全可逆的。当然,现实中永远不存在理想条件。我们来看看实际中光场相机Lytro是如何储存及计算光线的。
实现
上图描述了Ren Ng(也就是Lytro的主要发明者)的基本实现原理。说起来也简单,就是在传统相机的镜头与传感器之前加入了一块微型镜头阵列(就假设它是NXN的把),其他部分完全不需要做出改变(当年你愿意的话可以把调焦部分去掉,我们再也用不上它了)。为什么加入了微型镜头阵列就可以记录光线的方向了?说起来也简单,看下图:
又来了,理想条件下,很明显经过传感器上一个像素的光线,必定经过这个像素的父微镜头,也必定经过主镜头的相对于此微镜头的区域。就是此图的上半部分描绘的情况。同样的,经过主镜头一个区域的光线也必定通过微镜头群而照射到相应的像素上。由此,通过调节主镜头及微镜头的光圈(实际上就是是二者一致),我们可以使得每个微镜头都在传感器上形成一块子图像,而此子图像内的每个像素都可以对应主镜头的一个小区域。我们在回头看光线L(x,y,u,v),(x,y)是否对应一个子图像,而(u,v)则对应了此子图像的相应像素?这个光线的方向由此被记录下来。当然,这个光线L并不是理想的光线了,而且经过箱式滤镜及线性采样的。
这里其实有个大问题,细心的人估计已经发现了,不过我现在不准备讨论这个问题,继续说实现。
实际中,Ren Ng用了个Contax 645中幅相机,Carl Zeiss 120/2.8,80/2.0的镜头以及一块1600万像素的数码后背。啧啧,德味儿啊,看来这位仁兄也是位发烧友。那块微镜头他使用了292X292的阵列,微镜头的焦距是500微米,直径为125微米,也就是说这些镜头的最大光圈是f4。相应的,主镜头的光圈也需调到f4才能达到最佳效果。
Ren Ng的贡献
前面说到,光场相机的概念并不新鲜,原理也不复杂,那为什么现在才有成品呢?Ren Ng又有什么贡献? 在原理上,Ren并没有做出突破性的创新,他的贡献在我看来有两个方面,第一方面是算法上的简化,本来重新对焦(也就是计算辐照)的过程,是一个加权二维积分,也就是所谓的integral projection,是一个复杂度为O(n4)的算发。而Ren Ng通过傅里叶变换(Fourier Transform)和Fourier Slice Theorem令这个过程的复杂度降为O(n2log(n)),极大地提高了处理速度。第二是他真正做出了可用的光场相机的原型(而不像Adelson和Wang,他们的原型太大,几乎没有可用性)。
我看光场相机与Lytro
毫无疑问,Lytro的诞生把本来只存在于学术上的概念产业化,商业化,确实对相机工业产生了一些冲击。在我看来,Lytro的优点或者可能带来的好处有这么几个,一是它可以取代现有的对焦机制,简化相机的结构。二是使我们可以毫无顾虑的使用大光圈而不需要考虑浅景深所带来的影响。三是在科学界医学界(比如显微镜)使用光场相机可以扩大景深从而拍到更清晰的照片。Lytro的一些特性(如可以减小镜头畸变的影响)也可以通过降低镜头的成本来降低相机的整体成本。
但是,从Ren Ng 2005年的论文来看,他的光场相机还有一个很致命的问题,从前面的分析我们就知道,最终的对焦完成的图像是通过L(x,y,u,v)计算E(x,y)出来的。这就是说,图片的大小(像素数)只与x,y(微镜头阵列的大小)有关。在他的原型机里,Ren Ng使用了一个1600万像素的数码后背,得出来的光场图毫无疑问是1600万像素的。
如你所见,因为这个图像包含很多子图像,它是不能用的,只有通过光场计算后的图像才能够使用,这个图像的像素是多少呢:292X292,不到9万像素。这就是光场相机最大的局限,最终的图像的大小受限于微镜头阵列的大小。也许有人或说,把这个微镜头做小不久行了么?做不到4000X4000,做成1000X1000总行吧。但在我看来,微镜头做小后的衍射问题很难解决(从Lytro官网的图没有超过700X700可以看出,一般相机发布都会提供大图作为样张),而且就算能做到2000X2000也只有400万像素,无法跟现在主流的相机媲美。希望Ren Ng确实解决了这个问题,不然Lytro永远只能做玩具而无法打入主流市场。
Tags: light field, lytro, 光场相机, 新闻