Split-Aperture 2-in-1 Computational Cameras (一)
Coded Optics for High Dynamic Range Imaging
接下来,文章介绍了二合一相机在几种场景下的应用,首先是高动态范围成像,现有的快照高动态范围(HDR)成像工作已经证明,使用条纹状点扩散函数(PSF)可以将局部高动态范围信息光学编码到附近的像素中,这种 PSF 可以在光学层面将饱和区域的图像内容展开成不饱和,并且与附近的图像区域叠加。基于现有的快照 HDR 成像方法(如 Rouf 等人在 2011 年以及 Sun 等人在 2020 年提出的方法,这些方法已经成功地使用条纹状 PSF 将高动态范围信息编码到相邻像素中),文章继续按照这个概念开发一款二合一相机。我们首先优化自由设计相位的一半,使其与条纹状目标 PSF 对齐。
p ^ H D R ′ [ x , y ] = { 1 x = R 2 1 y = R 2 0 otherwise (16) \hat{p}_{HDR}'[x, y] = \left\{\begin{matrix} 1 & x = \frac{R}{2} \\ 1 & y = \frac{R}{2} \\ 0 & \text{otherwise} \end{matrix}\right. \tag{16} p^HDR′[x,y]=⎩ ⎨ ⎧110x=2Ry=2Rotherwise(16)
p ^ H D R ′ [ x , y ] = 0.5 ∑ x , y p ^ H D R ′ [ x , y ] (17) \hat{p}_{HDR}'[x, y] = \frac{0.5}{\sum_{x, y} \hat{p}_{HDR}'[x, y] } \tag{17} p^HDR′[x,y]=∑x,yp^HDR′[x,y]0.5(17)
R R R 表示 DOE 的半径,用像素数表示,为了得到这种形状的 PSF,先优化如下的目标函数:
L p , H D R = L 1 ( p c o d e d , p H D R ′ ) = L 1 ( F ( h L , 0 , ∞ O , λ R G B ) , p H D R ′ ) (18) \mathcal{L}_{p, HDR} = \mathcal{L}_1(p_{coded}, p'_{HDR}) = \mathcal{L}_1(F(h_L, 0, \infty_{O},\lambda_{RGB}), p'_{HDR}) \tag{18} Lp,HDR=L1(pcoded,pHDR′)=L1(F(hL,0,∞O,λRGB),pHDR′)(18)
公式 18 表示无穷远处的物点通过 DOE 之后的 PSF 要和设计好的 pattern 尽可能一致。
同时文章也训练一个基于物理原理的条件重建网络来重建原始高动态范围场景。由于未调制的捕获图像提供了场景中未饱和区域的信息,因此这个重建网络可以专注于从条纹图案中恢复饱和的高光区域,这些条纹图案是通过将高光区域与设计的点扩散函数进行卷积而产生的。因此,重建高光区域变成了一个反卷积问题,文章使用一个架构类似于深度维纳反卷积网络(DWDN)的网络来解决,该网络首先对编码捕获进行基于特征的逆滤波,然后使用一个编码器-解码器网络进行图像重建。具体来说,这个过程可以形式化如下:
I r e c o n = G H D R ( I c o d e d ∣ I u n c o d e d , p c o d e d ) = D W D N ( I u n c o d e d , D ( I c o d e d , p c o d e d ) ) (19) \begin{aligned} I_{recon} & = G_{HDR}(I_{coded} | I_{uncoded}, p_{coded}) \\ & = DWDN(I_{uncoded}, D(I_{coded}, p_{coded})) \tag{19} \end{aligned} Irecon=GHDR(Icoded∣Iuncoded,pcoded)=DWDN(Iuncoded,D(Icoded,pcoded))(19)
D D D 表示可微的维纳滤波器,HDR 的重建损失函数可以表示为:
L H D R = L 1 ( I r e c o n , I H D R ) + 0.1 L 1 ( I r e c o n M h i g h l i g h t , I H D R M h i g h l i g h t ) (20) \mathcal{L}_{HDR} = \mathcal{L}_1(I_{recon}, I_{HDR}) + 0.1 \mathcal{L}_1(I_{recon}M_{highlight}, I_{HDR}M_{highlight}) \tag{20} LHDR=L1(Irecon,IHDR)+0.1L1(IreconMhighlight,IHDRMhighlight)(20)
其中, I H D R I_{HDR} IHDR 表示高动态范围成像的 GT。
Optically Coded Hyperspectral Imaging
为了实现多光谱的编码,文章通过有意引入色差将 31 通道的高光谱信息编码到 3 通道的 RGB 中。编码光圈的一半采用类似光栅的相位分布来调制入射光,从而在焦点处引起与波长相关的横向偏移。从而能够根据相对于无像差的未编码捕获的偏移量来重建高光谱信息。更具体地说,我们的设计过程从具有 16 个 DOE 像素宽的狭缝的光栅分布开始,因为其第一正级衍射对于每 10 纳米的波长变化大约向左偏移 1 个像素。然后,我们优化这个分布以增加第一正级中的总强度,同时最小化其他区域(如零级或更高阶衍射位置)的能量分布。为此,文章将目标点扩散函数设置为
p H S ′ ( λ ) = Δ ( G E ( λ ) ) = δ ( tan ( sinh ( λ 16 δ D O E ) ) f δ c a m e r a ) (21) p'_{HS}(\lambda) = \Delta(GE(\lambda)) = \delta (\tan(\sinh(\frac{\lambda}{16 \delta_{DOE}}))\frac{f}{\delta_{camera}}) \tag{21} pHS′(λ)=Δ(GE(λ))=δ(tan(sinh(16δDOEλ))δcameraf)(21)
Δ ( x , y ) \Delta(x, y) Δ(x,y) 表示狄拉克 δ \delta δ 函数, δ D O E , δ c a m e r a \delta_{DOE}, \delta_{camera} δDOE,δcamera 表示像素间距, G E ( λ ) GE(\lambda) GE(λ) 根据光栅方程计算具有 16 个 DOE(衍射光学元件)像素狭缝宽度的光栅分布的第一正级位置。为了获得这样的 PSF 形态,需要对 DOE 的形状进行优化:
L p , H S = L 1 ( p c o d e d , p H S ′ ) = L 1 ( F ( h L , 0 , ∞ O , λ H S ) , p H S ′ ) (22) \mathcal{L}_{p, HS} = \mathcal{L}_1(p_{coded}, p'_{HS}) = \mathcal{L}_1(F(h_L, 0, \infty_{O},\lambda_{HS}), p'_{HS}) \tag{22} Lp,HS=L1(pcoded,pHS′)=L1(F(hL,0,∞O,λHS),pHS′)(22)
λ H S ∈ [ 400 , 700 ] n m \lambda_{HS} \in [400, 700] nm λHS∈[400,700]nm 波段的波长。
与重建高动态范围的任务类型,高光谱的重建也是用未编码的传统 RGB 图像作为引导条件,对每个波长 λ H S \lambda_{HS} λHS 下的编码信息进行重建
I u n c o d e d = c l i p ( ( p u n c o d e d ∗ I H S ) T s + n L , 0 , 1 ) I c o d e d = c l i p ( ( p c o d e d ∗ I H S ) T s + n R , 0 , 1 ) I r e c o n = G H S ( I c o d e d ∣ I u n c o d e d , p c o d e d ) = D W D N ( I u n c o d e d , { D ( I c o d e d , p c o d e d ( λ ) ) } λ ∈ λ H S ) (23) \begin{aligned} I_{uncoded} & = clip((p_{uncoded} \ast I_{HS})T_s + n_L, 0, 1) \\ I_{coded} & = clip((p_{coded} \ast I_{HS})T_s + n_R, 0, 1) \\ I_{recon} & = G_{HS}(I_{coded} | I_{uncoded}, p_{coded}) \\ & = DWDN(I_{uncoded}, \{D(I_{coded}, p_{coded}(\lambda))\}_{\lambda \in \lambda_{HS}}) \tag{23} \end{aligned} IuncodedIcodedIrecon=clip((puncoded∗IHS)Ts+nL,0,1)=clip((pcoded∗IHS)Ts+nR,0,1)=GHS(Icoded∣Iuncoded,pcoded)=DWDN(Iuncoded,{D(Icoded,pcoded(λ))}λ∈λHS)(23)
其中, T s T_s Ts 表示 RGB sensor 的光谱响应曲线,重建网络的监督以最小化 RGB 空间中的感知损失(LPIPS)以及高光谱空间中的光谱角映射器(SAM)距离([Kuching 2007]),可以表示为:
L H S = L p e r c ( I r e c o n T s , I H S T s ) + S A M ( I r e c o n , I H S ) (24) \mathcal{L}_{HS} = \mathcal{L}_{perc}(I_{recon}T_s, I_{HS}T_s) + SAM(I_{recon}, I_{HS}) \tag{24} LHS=Lperc(IreconTs,IHSTs)+SAM(Irecon,IHS)(24)
Monocular Depth from Coded Defocus
虽然典型的单目深度估计方法依赖于学习到的图像空间深度线索,如相对物体大小来估计物体的相对位置,但一系列的研究工作(如 Chang 和 Wetzstein 在 2019 年的研究;Haim 等人在 2018 年的研究;Ikoma 等人在 2021 年的研究;Wu 等人在 2019 年的研究)采用了基于散焦的深度估计方法,通过设计的点扩散函数(PSF)利用衍射光学元件(DOE)对绝对深度进行光学编码。我们研究了一种二合一的计算相机,该相机以依赖于深度的同心环作为目标 PSF,遵循了 Haim 等人在 2018 年的设计,但以同时捕获的单目 RGB 图像为条件。具体来说,对于 1 - 5 米范围内的不同深度 z k z_k zk,我们将目标 PSF 设置为半径为的半圆,每 20 厘米半径增长 1 个传感器像素。
p d e p t h ′ ( z ) = H C i r ( − 5 z + 25 ) (25) p'_{depth}(z) = HCir(-5z + 25) \tag{25} pdepth′(z)=HCir(−5z+25)(25)
其中 HCir® 表示半径为 r 像素的半圆和HCir(0) 是狄拉克峰。我们建议优化 DOE 相位模式 h h h 为半环模式使其有效地聚焦光
L p , d e p t h = ∑ k ∑ x , y ( F ( h L , 0 , z k , λ R G B ) M ( p d e p t h ′ ( z k ) , δ ) ) [ x , y ] (26) \mathcal{L}_{p, depth} = \sum_{k} \sum_{x, y} (F(h_L, 0, z_k, \lambda_{RGB}) M(p'_{depth}(z_k), \delta)) [x, y] \tag{26} Lp,depth=k∑x,y∑(F(hL,0,zk,λRGB)M(pdepth′(zk),δ))[x,y](26)
其中, M ( p d e p t h ′ ( z ) , δ ) M(p'_{depth}(z), \delta) M(pdepth′(z),δ) 表示一个掩码,标识出距离目标圆环 p d e p t h ′ ( z ) p'_{depth}(z) pdepth′(z) 大于 δ \delta δ (1 个像素) 的位置,为了模拟捕获过程,我们将场景划分为多个深度平面,从 1 米到 5 米以 0.25 米为间隔,并且将每个深度层与相应的点扩散函数(PSF)进行卷积。
I u n c o d e d = c l i p ( ∑ z ∈ 1 , 1.25 , . . . 5 ( p u n c o d e d ∗ ( I d e p t h M ( z ) ) ) + n L , 0 , 1 ) I c o d e d = c l i p ( ∑ z ∈ 1 , 1.25 , . . . 5 ( p c o d e d ∗ ( I d e p t h M ( z ) ) ) + n L , 0 , 1 ) (27) \begin{aligned} I_{uncoded} & = clip( \sum_{z \in {1,1.25,...5}} (p_{uncoded} \ast (I_{depth}M(z))) + n_L, 0, 1) \\ I_{coded} & = clip( \sum_{z \in {1,1.25,...5}} (p_{coded} \ast (I_{depth}M(z))) + n_L, 0, 1) \tag{27} \end{aligned} IuncodedIcoded=clip(z∈1,1.25,...5∑(puncoded∗(IdepthM(z)))+nL,0,1)=clip(z∈1,1.25,...5∑(pcoded∗(IdepthM(z)))+nL,0,1)(27)
M ( z ) M(z) M(z) 表示不同深度的掩码,将 I d e p t h I_{depth} Idepth 图像暗不同深度分成不同的图层。
对于条件重建,使用 ResNet18 分别从两个捕获中提取特征,然后将它们输入共享解码器。网络使用如下的损失函数:
L d e p t h = L 1 ( Z r e c o n , Z g t ) + L g r a d ( Z r e c o n , Z g t ) (28) \mathcal{L}_{depth} = \mathcal{L}_1(Z_{recon}, Z_{gt}) + \mathcal{L}_{grad}(Z_{recon}, Z_{gt}) \tag{28} Ldepth=L1(Zrecon,Zgt)+Lgrad(Zrecon,Zgt)(28)
可以看出,文章用到了 L1 损失和梯度损失。
Assessment
接下来介绍实验,文章在仿真和真实实验中对所提出的方法进行评估。我们专注于上一节中描述的三个计算光学应用:从光学编码的条纹图像中恢复高动态范围(HDR)图像、使用编码散焦深度进行单目深度成像以及通过色差进行高光谱图像重建。
Experimental Prototype
- 图4
为了在真实实验中评估该方法,文章为每个应用制造了一个量身定制的衍射光学元件(DOE),并构建了一个二合一相机原型系统,如图 4 所示。DOE 的制造涉及在熔融石英晶圆上进行 16 级光刻工艺,详情请见补充文件。该 DOE 直径为 8.64 毫米,并采用铬层作为光阑。我们的相机设置包括一台佳能 EOS 5D Mark IV 双像素相机,搭配佳能 EF 50mm f/1.8 STM 镜头。虽然 DOE 设计理想情况下适合放置在目标相机的光圈平面上,但我们选择设计并 3D 打印一个定制的附加 DOE 支架,以避免修改商用多元素复合镜头或构建 4F 中继系统的复杂性。该支架将衍射光学元件(DOE)直接放置在镜头保护玻璃旁边,最大限度地减少了 DOE 与光圈平面之间的传播距离。支架上的标记与相机机身对齐,以确保 DOE 与镜头中心对齐。
我们接着对相机系统中左视图和右视图之间的串扰进行校准。理想情况下,每个像素的两个光电二极管应该独立地记录来自光圈两个半圆盘的光。然而,在实际中,这种分离并不完美,特别是对于离轴光。因此,一些原本应该被光电二极管一侧记录的光错误地记录在了另一侧,导致两次捕获之间出现串扰,如图 5 所示。这种串扰可以形式化表示为
I L ∗ = ( 1 − α l → r ) I L + α r → l I R I R ∗ = ( 1 − α r → l ) I R + α l → r I L (29) \begin{aligned} I_{L}^{*} & = (1 - \alpha_{l \to r}) I_L + \alpha_{r \to l} I_R \\ I_{R}^{*} & = (1 - \alpha_{r \to l}) I_R + \alpha_{l \to r} I_L \tag{29} \end{aligned} IL∗IR∗=(1−αl→r)IL+αr→lIR=(1−αr→l)IR+αl→rIL(29)
其中, I L , I R I_L, I_R IL,IR 表示系统理论上捕获到的信号, I L ∗ , I R ∗ I_{L}^{*}, I_{R}^{*} IL∗,IR∗ 表示系统实际捕获到的信号, α l → r , α r → l \alpha_{l \to r}, \alpha_{r \to l} αl→r,αr→l 表示相邻的左右两个像素之间的串扰百分比。
考虑到串扰比取决于视场角而非比场景本身,我们希望校准 α l → r , α r → l \alpha_{l \to r}, \alpha_{r \to l} αl→r,αr→l 并且消除它的影响。我们首先挡住光圈的左半部分(设置 R=0)并捕获一堵白墙。在这些条件下,捕获可以简化为
I L ∗ = ( 1 − α l → r ) I L I R ∗ = α l → r I L (30) \begin{aligned} I_{L}^{*} & = (1 - \alpha_{l \to r}) I_L \\ I_{R}^{*} & = \alpha_{l \to r} I_L \tag{30} \end{aligned} IL∗IR∗=(1−αl→r)IL=αl→rIL(30)
通过上面的式子,可以得到 α l → r \alpha_{l \to r} αl→r 为:
α l → r = I R ∗ I L ∗ + I R ∗ (31) \alpha_{l \to r} = \frac{I_{R}^{*}}{I_{L}^{*} + I_{R}^{*}} \tag{31} αl→r=IL∗+IR∗IR∗(31)
通过同样的实验,可以得到 α r → l \alpha_{r \to l} αr→l,然后将这个式子代入式 (29) 可以得到最终理想的捕获信号:
I c o d e d = I R = I R ∗ − α l → r I L ∗ 1 − α r → l 2 − α r → l α l → r + α l → r 2 I u n c o d e d = I L = I L ∗ + I R ∗ − I R (32) \begin{aligned} I_{coded} = I_{R} & = \frac{I_{R}^{*} - \alpha_{l \to r} I_{L}^{*}}{1 - \alpha_{r \to l}^2 - \alpha_{r \to l}\alpha_{l \to r} + \alpha_{l \to r}^2} \\ I_{uncoded} = I_{L} & = I_{L}^{*} + I_{R}^{*} - I_{R} \tag{32} \end{aligned} Icoded=IRIuncoded=IL=1−αr→l2−αr→lαl→r+αl→r2IR∗−αl→rIL∗=IL∗+IR∗−IR(32)
由于对于我们的设置来说,串扰比率是恒定的,所以这种校准是一次性的步骤。我们在传感器的中心 3072×3072 像素区域进行这种校准过程,并且对于每次捕获(无论是高动态范围成像、深度估计还是高光谱成像)都使用相同的串扰比率。
-图 5