基于Lytro相机的全聚焦成像

2020-05-12 12:02张焕智
现代计算机 2020年10期
关键词:光场透镜梯度

张焕智

(四川大学计算机学院,成都 610065)

0 引言

光线作为人们感知真实世界的重要媒介,光线携带着目标丰富的三维环境信息。与传统相机的二维投影成像方式不同,传统相机的成像通过在每个像素处对光线进行角度积分来记录光线的强度信息。而光场相机成像通过改变传统相机内部的光学部件结构,在图像传感器与主透镜之间增加了一个微透镜阵列,从而改变了光线的采集方式,产生了与传统相机完全不同的成像效果,使得光场相机不仅能记录光线的强度信息,而且能够记录光线的方向信息。由于光场相机的这种特性,这为光场相机在后期的数字图像处理及其相应的应用提供了便利,如利用光场相机可以实现图像的重聚焦、深度估计、视角变换、全聚焦图像等应用。光场相机可以在单次相机曝光之后获取到目标的多张具有一定视差的图像,通过相应的数字图像处理技术可以计算出目标任意深度的重聚焦图像,这是光场相机与传统相机最大的区别。由于不受传统相机获取多张聚焦图像需要多次拍照的限制,这使得基于光场相机的数字重聚焦的全聚焦成像成为了可能,这为后期更深入的研究提供了便利。

2012年,一种新型的手持消费级相机Lytro获得了许多人的关注(如图1),这是由斯坦福的Ren Ng团队设计的,并在2014年发布了第二代光场相机Lytro Illum(如图2)。由于这两款相机具有商业性质,所以相机内部的信息是封闭的。Tordor Georgive等人[1]对Lytro相机的基本成像原理做了详细的介绍,并对Lytro相机的结构、理论和算法做了分析,针对Lytro相机的局限性给出解决方案。2013年,Donald G.Dansereau等人[2]对Lytro相机获取的原始光场数据进行了解码、校准、颜色校正等操作,完成了对原始光场数据的处理,这为光场相机的研究者提供了便利。对采集的原始光场数据的处理也是基于Donald G.Dansereau等人开发的基于MATLAB的Light Field Toolbox v0.4进行的。

图1 第一代光场相机(Lytro)

图2 第二代光场相机(Lytro Illum)

本文基于光场相机的成像特性,由于光场相机存在方向分辨率和空间分辨率的折衷问题,相机的图像传感器大小是一定的,这意味着要获取目标的多个方向信息(方向分辨率),那么相应的图像分辨率(空间分辨率)就会减低,这样光场相机最终的图像清晰度较低。为了获得清晰度较好的图像,需要对光场相机获取的图像进行全聚焦成像,即扩展图像的景深,使的成像范围的目标都处于聚焦状态(清晰)。为了获取质量较好的全聚焦图像,本文提出了一种基于空域的全聚焦图像生成算法,该算法有效的实现了光场相机原始图像到全聚焦图像的处理,生成了较好地全聚焦图像质量。

1 光场理论

1.1 光场

光场(Light Field)描述的是光线在自由空间中的分布。这样可以从我们的世界中捕获更丰富的信息。描述光线分布的早期模型最早由A.Gershun等人[3]于1936年提出的,用于描述光在三维空间中的传输时的辐射照度的变化属性。1991年,E.Adelson和J.Bergen等人[4]根据人眼对外部光线的视觉感知对光场进一步的完善,E.Adelson等人对光场利用形式化的语言进行描述,提出了全光函数理论,并根据全光函数的理论,用七维函数来表征空间分布的几何光线,该模型被称为全光函数(Plenoptic Function)。全光函数可表示为L(x,y,z,θ,φ,λ,t) ,其七个变量分别表示:x,y,z表示光线中一点的三维空间坐标,θ,φ表示光线的传播方向,λ表示光线的波长,t表示时间。1995年,Leonard Mc⁃Millan等人[5]将全光函数将维到五维L(x,y,z,θ,φ),该函数不包含波长和时间两个维度的信息,即只考虑光线在自由空间中的传输,其波长一般不会发生变化。更进一步,1996年,美国斯坦福的M.Levoy等人[6]在忽略光线在传输过程中衰减的情况下,将五维的全光函数降到四维全光函数,并提出了对四维光场进行参数化表针的双平面模型,提出双平面模型表示光场的合理性和实用性在于,现实中绝大部分的成像系统都可以简化为两个相互平行的平面,如传统的成像系统中的主透镜平面和图像传感器平面。

1.2 光场的参数化

根据M.Levoy的光场渲染理论,对四维光场进行参数化表示,如图3所示,LF(x,y,u,v)表示光场的一个采样,其中各变量分别表示:L表示光线的强度,(u,v)表示光线和镜头平面的交点,(x,y)表示光线和图像传感器平面的交点。镜头平面上的坐标(u,v)表示光线的传输方向,而图像传感器平面上每个坐标(x,y)则记录了光线的分布位置,F表示镜头和图像传感器之间的距离。

图3 光场四维信息的参数化表示

传统成像系统所采集到的光场强度可以利用光场的双平面参数化表示如图4所示,光场的能量函数可以表示为:

其中,(u,v)表示镜头出瞳面上的坐标。通常情况下,为了近似求解快速的分析问题,可以忽略前面的系数即将公式(1)简化为:

由此可见,传统成像系统所采集到的光场只能反映其光场强度和位置之间的关系,不能反映其方向信息()

u,v。

图4 传统成像系统采集的光场分布

1.3 基于微透镜阵列的光场采样

通过在传统成像系统中的适当位置加入微透镜阵列,可以改变其成像方式,如图5所示光场相机原理图[7]。在主透镜和图像传感器之间的适当位置放置一块微透镜阵列,这样来自目标某个位置上的光线通过主透镜的折射会聚焦微透镜阵列上的某一块微透镜上,然后通过微透镜发散光线,最终记录在图像传感器的相应的位置。经过微透镜的光线发散后记录在图像传感器上,相应覆盖的这块区域就是宏像素,宏像素中包含的每一个像素叫做像元,每一个像元记录了目标某一位置的一个方向信息。在理想情况下,如果微透镜阵列中的微透镜单元的数量为M1×M2,每个微透镜单元覆盖的像元数量为N1×N2,那么图像传感器中的像元数量应为

图5 光场相机原理图

2 全聚焦算法原理

2.1 光场相机重聚焦原理

在光场成像系统中,通过光场的参数化,四维光场就可以被记录下来。我们就可以通过对采集到的数据进行计算来改变光场的投影平面,这就是光场的数字重聚焦技术(Digital Refocusing),即通过光场成像原理,将采集到的光场数据重新投影到新的成像平面上进行积分。通过数字重聚焦技术,让图像聚焦在不同的焦平面上,如图6所示是光场成像的数字重聚焦原理[9]。

图6 数字重聚焦原理图

其中,α=F'/F,令Bα是一个4×4矩阵,可得:

将Bα代入(3)可得:

将公式(4)代入(2)可得:

所以:

EαF即是四维光场获得的重聚焦能量大小。

2.2 全聚焦图像生成算法

当相机聚焦在不同的成像平面上的时候,处于聚焦平面上的图像是清晰可见的,而不再聚焦平面上的图像处于散焦状态。处于散焦的图像是由于图像中目标的轮廓不明显,轮廓边缘灰度变化不强烈,层次感不强造成的。相反,处于聚焦状态的图像的轮廓边缘灰度变化比较明显,灰度变化比较强烈,层次感分明,所以图像就显示的较为清晰。

对于聚焦平面的图像,由于处于聚焦状态,图像较为清晰,图像的轮廓边缘灰度变化比较明显,在图像处理中使用梯度的变化去衡量。由于图像是一个二维函数,令其为f(x,y),那么图像f(x,y)在点(x,y)处的x方向和y方向的梯度可以表示如下:

结合图像f(x,y)在点(x,y)处的x方向和y方向的梯度,图像f(x,y)在点(x,y)处的梯度可以表示如下:

通过公式(8)计算机一张灰度图像的所有灰度值,由于图像的梯度值可以反映边缘比较锐利的清晰度,并且梯度值较大,相应的图像边缘则反映的比较锐化。通过计算所有重聚焦图像的梯度,选择所有重聚焦图像中图像f(x,y)在点(x,y)梯度值最大的像素作为最后的全聚焦图像该像点的像素,可以计算出最终的全聚焦图像,整个算法的处理过程如图7所示。

图7 算法处理流程图

3 实验结果与分析

为了验证上述算法的可行性和正确性,实验在MATLAB R2017a平台上实现,计算机硬件配置如下:CPU是AMD A6-3400 1.4GHz,内存为8GB,操作系统是Windows7 x64,硬盘容量为500GB。根据如图7所示的流程图,用MATLAB为主要的编程实现各部分的功能,最终实现光场相机的全聚焦图像。

采集数据使用的是第二代光场相机是Lytro Illum,相机具有541×434个微透镜,输入的光场原始数据是用Lytro Illum拍摄的光场图像,分辨率是7728×5368,文件格式为LFR,数据来自公开的新光场相机数据集[10]。光场数据的提取使用了G.Dansereau在文献[2]中介绍的方法,经过对光场数据的提取、解码、校准等操作可以获取光场相机的原始图像,如图8所示(分辨率为7728×5368),可见原始成像的效果并不理想。为了将图像传感器上的原始色彩还原为人眼视觉可接受色彩信息,得到效果较好的光场图像,需要对原始图像进行去马赛克(Demosaic)、色彩校正等操作,结果如图9所示(分辨率为7728×5368),可见经过处理后的图像比原始图像更好的色彩信息。

经过前面对光场数据的处理过程后,可到了质量较好的图像。根据重聚焦公式(5)对获取到的光场数据进行重新聚焦在不同的焦平面上。实验的α的取值范围(0.8,1.7),步长为0.05,通过重聚焦算法可以获取到聚焦在不同焦平面上的图像,对于给定的α,可以得到一张重聚焦图像,如图10-13所示,给出了分别聚焦在聚焦参数α为0.85、1.00、1.30、1.60时的图像(分辨率为625×434)。然后,通过公式(8)计算每张重聚焦图像的梯度值,对于彩色图像,在三通道中分别计算其梯度值,最后将三通道的梯度值进行平均作为衡量图像清晰度的线索。最后,将梯度值最大对应的重聚焦图像的像素融合到最终的全聚焦图像中,如图所示。实验表明本文算法能够融合得到光场图像的全聚焦图像,在一定程度上提高了目标图像的清晰度。

从聚焦在不同的深度上的图像可以看出,处于聚焦深度上的图像是清晰可见的,而处于聚焦深度附近的图像由于光场相机的景深作用也是清晰可见的,但远离聚焦深度的图像就显得模糊不清了。如图10-13所示,图中给出了聚焦在不同深度的重聚焦图像,聚焦参数α分别为 0.85、1.00、1.30、1.60,随着聚焦参数α的变大,图像就聚焦到深度更深的位置。当聚焦参数α为0.85的时候,重聚焦到前面的人物,所以前面的人物就显得清晰可见,而深度较大的人物就模糊不清,图中绿色线框表示处于聚焦的图像,红色线框表示处于散焦的图像;当聚焦参数α为1.00的时候,重聚焦到第二个人物,所以第二个人物及附近的人物就显得清晰可见,而深度较大的人物就模糊不清。值得一提的是,此时图像重聚焦参数α为1.00,图像聚焦在原始图像聚焦的深度上;当聚焦参数α为1.30的时候,重聚焦到靠后的人物,处于图像深度较浅的人物由于离焦开始变得模糊了,处于聚焦深度的图像此时清晰可见;当聚焦参数α为1.60的时候,重聚焦到最后面的人物,所以前面的人物就由于离焦变得非常模糊,而后面的人物由于聚焦显得清晰可见。而图14是最后融合后的全聚焦图像,由于全聚焦图像提取了所有重聚焦序列图像中的清晰度最大的图像,所以图像中的所有人物都处于聚焦状态,因此均清晰可见。

4 结语

光场相机作为一种新型的相机,由于光场相机在传统相机的图像传感器前面加入了微透镜阵列,这使得光场相机与传统相机相比具有不同的成像特性,光场相机可以对光场重新采样实现图像的数字重聚焦。本文首先根据光场相机特殊的成像特性,对原始光场数据进行解码、标定、去马赛克、颜色校正等操作,而后通过数字重聚焦的原理实现光场图像的数字重聚焦,生成了一系列的重聚焦图像序列。然后利用图像梯度作为线索来反映图像的聚焦状态,将梯度值较大的图像的序号保存。最后融合这些梯度值最大的像素作为最终的全聚焦图像。实验表明,本文提出的算法的正确性和有效性,对光场相机图像的图像清晰度具有较好的提升。

虽然本文的全聚焦算法可以提升光场图像的成像质量,但由于光场相机固有的光学物理结构,使的光产相机成像的分辨率不是很高,文中Lytro Illum相机拍摄的原始图的分辨率较高是因为相机内置了相应的图像处理算法,提升图像的分辨率。但是由于Lytro Illum是一款商业相机,所以并没有公开相应的分辨率提升算法。接下来,可以通过对光场相机更加深入的研究,从而实现光场相机的高分辨率全聚焦成像。

图8 原始图像

图9 经过色彩校正的原始大小图像

图10 α=0.85

图11 α=1.00

图12 α=1.30

图13 α=1.60

图14 全聚焦图像

猜你喜欢
光场透镜梯度
引力透镜
透镜(部级优课)
一个具梯度项的p-Laplace 方程弱解的存在性
内容、形式与表达——有梯度的语言教学策略研究
航磁梯度数据实测与计算对比研究
光场技术 让虚拟现实不再“虚”
光场图像重构算法仿真
透镜及其应用专题复习
透镜光路图大梳理
矢量光场 基本原理和应用