光场原理
光场四维采样我们知道,光是一种电磁场,具有振幅、相位、波长等多种属性。传统的光学成像是通过成像芯片来记录到达探测器的强度信息,而目标的其他信息缺失。这就在后续三维重建,模式识别等多个应用领域造成了极大地不便。而光场相机由于其独特的构造,如上图所示,传统成像方式不同,将微透镜阵列放置于主镜头像面处 ,将探测器放置于微透镜之后 记录来自不同方向的光。其中单个微透镜接收来自主镜头的所有方向的...
光场四维采样
我们知道,光是一种电磁场,具有振幅、相位、波长等多种属性。传统的光学成像是通过成像芯片来记录到达探测器的强度信息,而目标的其他信息缺失。这就在后续三维重建,模式识别等多个应用领域造成了极大地不便。

而光场相机由于其独特的构造,如上图所示,传统成像方式不同,将微透镜阵列放置于主镜头像面处 ,将探测器放置于微透镜之后 记录来自不同方向的光。其中单个微透镜接收来自主镜头的所有方向的光,在探测器上其所覆盖的区域称为一个宏像素。如下图所示:

每个宏像素下包含多个像元,将主孔径分为相同数量的子孔径,宏像素下每个像元都表示主孔径下的一个子孔径,每个子孔径代表光线传输的一个方向,一个宏像素下的所有像元相当于记录了所有子孔径的光,对应记录了不同的方向信息。
而对于单个子孔径而言,当一束光穿过一个子孔径后,会在各个微透镜下的宏像素的相同位置处,具体如下图所示:

子孔径相当于减小主镜头光圈,可以获得更大的景深,但此时信噪比也会降低。结构设计中每一个宏像素与一个微透镜的大小近似相等,由上图可知,一个宏像素下的像元个数决定主透镜所分的子孔径块数,而子孔径块数决定可以分辨光场的方向数。因此一个宏像素下的像元个数决定方向分辨率,而微透镜的个数决定空间分辨率。这样,通过微透镜下的宏像素,一方面记录了光线的二维方向信息,另一方面也记录了光线的二维空间分布,完成了四维信息获取,与传统相机仅记录空间分布信息相比,增加了光线的信息维度。
空域表示
传统相机拍照之前需要对景物进行对焦,如果没有对焦就会出现下面的现象:

照片严重失焦,虽然有些意境美,但对于工业科研等实际应用领域,百害无一利。如果使用传统相机,我们要实现对焦然后在进行拍摄,而对于动态目标的拍摄实用性比较差。光场相机由于其独特的结构,可以轻松解决上述问题。
最开始需要了解的就是光场的表征方式,这里就介绍使用最为常见的双平面表示法。

L(u,v,s,t)表示光场的一个采样,其中各变量分别表示:L为光线强度,(u,v)和(s,t)分别为光线与两个平面的交点坐标。在(u,v,s,t)四维坐标空间中,一条光线对应光场的一个采样点。这一映射关系如上图所示。为便于说明,将光场简化为二维情形。采用双平面法,光线依次穿过的任意两个平行的光学器件都可以使用双平面法来表征,比如传统成像系统中的主镜头光瞳面和探测器像面。比如光场相机中的主镜头与微透镜阵列、主镜头与探测器像面等等。
如果用探测器像面中的坐标(x,y)表示光线的分布位置,那么镜头光瞳面坐标(u,v)就反映了光线的传输方向。探测器像面上的像元接收来自整个光瞳的光线进行积分,像面(x,y)处的光照度为:

重聚焦过程是将采集到的光场重新投影到新的像平面上进行积分。(简单来说由于景物所处深度不同,对于相同孔径的镜头而言,其聚焦面也不同,通过重聚焦可以获知各景深处所对应的聚焦像)。在上式中L(u,v,s,t)为采集到的光场,U和S分别表示主镜头孔径所在平面和微透镜阵列所在平面,两个平面之间的距离为l。选择新的对焦平面为S',与U面之间的距离为l',令l'=α*l。S'面所成的像等于US'之间光场的积分,即:


对于同一条光线而言:L'(u,s')=L(u,s)
此时,结合三角代换,可以知道

此时像面处光强积分I(s')可以表示为:

上述式子表示二维情形下,四维平面同理可推知其表示为:

频域表示:
Ng最早提出了频率域重对焦图像算法,算法核心是围绕傅里叶切片定理进行展开。我们知道傅里叶切片定理最重要的作用就是降维,对于四维光场数据为了方便对多维数据处理,首先需要将二维傅里叶切片定理延展至多维,然后降维至四维进行四维光场数据处理,就可以实现在频率域对光场重聚焦图像的处理。
由二维傅里叶切片定理可知:物体f(x,y)在角度θ下的平行投影的傅里叶变换,等于在同一角度下进行f(x,y)二维傅里叶变换的一条直线。假设f(x,y)平行于y轴可以得到一次投影,表示为:h(x,0)

其中
对上式进行傅里叶变换可得:

如果原函数f(x,y)进行傅里叶变换,当V=0时,可得

由上述推导可以知道傅里叶切片定理表明二维函数在一维方向上积分投影的傅里叶变换等于该二维函数傅里叶变换的一维切片。
将傅里叶切片定理推广至N维空间:设f是N维函数,对f进行坐标变换后将其积分投影至M维进行傅里叶变换,那么这个变换等于对函数求傅里叶变换,然后进行坐标逆变换,最后取该变换的M维切片,用算子简化表示如下:

其中
I表示N维到M维的积分投影过程
S表示将N维函数降维到M维过程
F表示对N维函数进行傅里叶变换
之前我们知道重聚焦空域表达式为:

结合上述两式进行变换后可以得到:

其中Bα表示坐标变换矩阵:由重聚焦的空域变换可以知道变换前后(u,v,s,t)=Bα(u,v,s',t')
由上面的推导我们得到傅里叶切片成像定理:传统图像是光场的四维傅里叶变换的二维切片的逆二维傅里叶变换。
对焦和变焦
聚焦顾名思义,就是聚焦在某一物体上,由于拍照的时候景深问题,不能使所有物体全部清楚,因此可以通过对焦或者是变焦,聚集在某一平面上,使该平面上的物体清晰。对焦就是改变传感器与主镜头的距离来实现这一过程的 ,而变焦改变的是主镜头的焦距实现这一过程,可以自己琢磨一下就能明白。
重聚焦就是同一条光线,当改变像面时,对新的位置进行积分所成的像

S为成像面,重聚焦实际过程就是改变S的位置,使不同深度的图像清楚。S’为新的成像面,l’=alpha*l,,S’面上所成的像为US’之间光场的积分:

对于同一根光线,有

我们可以通过他们之间关系可得:

进一步推导可得,s和s’之间的关系

将上面的式子带入积分公式,可得:

上面的式子即为投影到新的平面上的成像公式,扩展到四维情况,在Ng的论文中提到了:

所以重聚焦就是在空间平移然后在角度上进行积分
深度估计
焦点堆栈深度估计法原理介绍
计算焦点堆栈每一个像素的梯度,然后对每张图像梯度图像进行均值滤波,然后计算三个通道梯度值的平方和取均值,再开根号,即为该张图像的梯度值,焦点堆栈的同一位置像素梯度最大则说明该深度时该像素最清晰,也就是说该深度面上的物体最清晰,记录该深度的索引值。
焦点堆栈
焦点堆栈就是聚焦在不用平面处的一系列图像
因此,对光场原始图像进行多次重聚焦,这一系列重聚焦图像就称之为焦点堆栈。
梯度
梯度的概念可以自己了解一下
步骤:计算整副图像的梯度值,然后做均值滤波,每个通道梯度的平方去均值再开根号,为该图像的梯度值。
梯度计算代码:
function img_gradient = DEFOCUS_ANALYSIS(img)%img为double类型
grad_map = abs(gradient(IM_Refoc_alpha)) ;%梯度计算
h= fspecial('average',[5,5]) ;%定义一个均值滤波器
shear_std_map = imfilter(grad_map,h,'symmetric') ;%对梯度进行均值滤波
shear_std_map = ((shear_std_map(:,:,1).^2 ...%梯度图三个通道的平方相加取平均值 然后开根号,就是其梯度值
+shear_std_map(:,:,2).^2 ...
+shear_std_map(:,:,3).^2)/3).^(1/2) ;
img_gradient = shear_std_map ;%img_gradient就是这个图像梯度值,为[m,n]大小的单通道图像
end
参考:
https://blog.csdn.net/weixin_38285131/article/details/80457068
更多推荐



所有评论(0)