论文阅读:Split-Aperture 2-in-1 Computational Cameras (二)

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(IcodedIuncoded,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((puncodedIHS)Ts+nL,0,1)=clip((pcodedIHS)Ts+nR,0,1)=GHS(IcodedIuncoded,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=kx,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(z1,1.25,...5(puncoded(IdepthM(z)))+nL,0,1)=clip(z1,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} ILIR=(1αlr)IL+αrlIR=(1αrl)IR+αlrIL(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} αlr,αrl 表示相邻的左右两个像素之间的串扰百分比。

考虑到串扰比取决于视场角而非比场景本身,我们希望校准 α l → r , α r → l \alpha_{l \to r}, \alpha_{r \to l} αlr,αrl 并且消除它的影响。我们首先挡住光圈的左半部分(设置 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} ILIR=(1αlr)IL=αlrIL(30)

通过上面的式子,可以得到 α l → r \alpha_{l \to r} αlr 为:

α l → r = I R ∗ I L ∗ + I R ∗ (31) \alpha_{l \to r} = \frac{I_{R}^{*}}{I_{L}^{*} + I_{R}^{*}} \tag{31} αlr=IL+IRIR(31)

通过同样的实验,可以得到 α r → l \alpha_{r \to l} αrl,然后将这个式子代入式 (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αrl2αrlαlr+αlr2IRαlrIL=IL+IRIR(32)

由于对于我们的设置来说,串扰比率是恒定的,所以这种校准是一次性的步骤。我们在传感器的中心 3072×3072 像素区域进行这种校准过程,并且对于每次捕获(无论是高动态范围成像、深度估计还是高光谱成像)都使用相同的串扰比率。

在这里插入图片描述

-图 5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1557116.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

ctf.bugku - 本地管理员

题目来源:本地管理员 - Bugku CTF 访问页面 页面的最后返回一个字符串; 结尾 应该是base64 编码; 解码得到 test123 同时,提示信息还有 IP禁止访问,本地管理员登陆; 所以,请求头添加&#x…

【AI知识点】残差网络(ResNet,Residual Networks)

残差网络(ResNet,Residual Networks) 是由微软研究院的何凯明等人在 2015 年提出的一种深度神经网络架构,在深度学习领域取得了巨大的成功。它通过引入残差连接(Residual Connection) 解决了深层神经网络中…

基于图像的3D动物重建与生成

一、背景与目标 3D-Fauna 是一款用于基于图像和视频进行四足动物3D重建与生成的开源方案。自然界展示了复杂的相似性与多样性,该方法通过学习来自网上图片的四足动物的3D形态,能够从单张图片生成可动画化的带有纹理的3D网格模型。其最终目标是通过大量扩展现有的解决方案,实…

【网络篇】计算机网络——运输层详述(笔记)

目录 一、运输层 1. 概述 2. 运输层和网络层的关系 3. 运输层协议概述 二、多路复用和多路分解 1. 综述 2. 无连接的多路复用与多路分解(UDP) 3. 面向连接的多路复用与多路分解(TCP) 4. Web 服务器与TCP 三、UDP&#x…

Django学习笔记十三:优秀案例学习

Django CMS 是一个基于 Django 框架的开源内容管理系统,它允许开发者轻松地创建和管理网站内容。Django CMS 提供了一个易于使用的界面来实现动态网站的快速开发,并且具有丰富的内容管理功能和多种插件扩展。以下是 Django CMS 的一些核心特性和如何开始…

力扣之1336.每次访问的交易次数

题目: sql建表语句: Create table If Not Exists Visits (user_id int, visit_date date); Create table If Not Exists Transactions (user_id int, transaction_date date, amount int); Truncate table Visits; insert into Visits (user_id,…

Unity3d使用JsonUtility.FromJson读取json文件

使用JsonUtility.FromJson方法不需要额外引用第三方库。该方法只能读取json对象,而不能读取json数组。 假如我们有如下的json数组: [ {"id":1, "name":"first2021", "level":5, "score":100, "…

The 2024 ICPC Kunming Invitational Contest F. Collect the Coins(二分)

在知乎内查看 题目 思路来源 官方题解 题解 一旦某个速度v满足,那么大于速度v的都满足,所以可以被二分,但是二分的check不好想,卡住了 最后去看了题解,其实维护的是,一个机器人在目标点收集硬币时&…

UGUI(三大现成UI控件)

Rawimage 可以是任意类型的图,所以这里的泛型就更宽泛,不止sprite 相比Image唯二的不同 uvrect有点像平铺 Text suddenly come to a Free island. best fit开启后会有范围选择 Image image 组件是挂在RectTransform的ui下的,换句话说&…

windows C++-创建数据流代理(二)

完整的数据流演示 下图显示了 dataflow_agent 类的完整数据流网络: 由于 run 方法是在一个单独的线程上调用的,因此在完全连接网络之前,其他线程可以将消息发送到网络。 _source 数据成员是一个 unbounded_buffer 对象,用于缓冲…

整理/删除重复文件

文件分类 #!/bin/bash if [ "$#" -ne 1 ]; thenecho "use: $0 <download_url>"exit 1 fi TARGET_DIR"$1" mkdir -p "$TARGET_DIR/jpg" mkdir -p "$TARGET_DIR/mp4" for img in "$TARGET_DIR"/*.jpg; doif…

k8s 中的 PV 的动态供给

目录 1 存储类 Storageclass 介绍 1.1 StorageClass 说明 1.2 StorageClass 的属性 2 存储分配器 NFS Client Provisioner 2.1 官网存储分配器的部署介绍 2.2 实现动态创建 PV 模版清单文件的介绍 2.2.1 Storageclass 存储类的模版 2.2.2 创建 Provisioner 制备器的模版 2.2.3…

ctf.bugku - POST

题目来源 &#xff1a;POST - Bugku CTF 访问请求&#xff0c;返回如下信息&#xff1b; 从这里可以得到信息&#xff1b;想要得到flag &#xff0c;需要发送post请求&#xff0c;并且请求带有what参数&#xff0c;参数值为flag 构造消息体&#xff1b; burpsuite中&#x…

连续点击三次用户

有用户点击日志记录表 t2_click_log&#xff0c;包含user_id(用户ID),click_time(点击时间)&#xff0c;请查询出连续点击三次的用户数&#xff0c; 连续点击三次&#xff1a;指点击记录中同一用户连续点击&#xff0c;中间无其他用户点击&#xff1b; CREATE TABLE t2_click…

仿小米的Disucz模板

整套模板是忽悠兄原创设计开发&#xff0c;这是一款简约大气的模板&#xff0c;保留Discuz预留功能&#xff0c; 必须一键式配置完成&#xff0c;使用插件配置到位&#xff0c;专业的网站肯定不使用DIY啦&#xff0c;二次开发了大部分功能&#xff0c; 更强大&#xff0c;别人…

微信小程序开发-配置文件详解

文章目录 一&#xff0c;小程序创建的配置文件介绍二&#xff0c;配置文件-全局配置-pages 配置作用&#xff1a;注意事项&#xff1a;示例&#xff1a; 三&#xff0c;配置文件-全局配置-window 配置示例&#xff1a; 四&#xff0c;配置文件-全局配置-tabbar 配置核心作用&am…

C++笔记之原子操作

C++笔记之原子操作 code review! 文章目录 C++笔记之原子操作1.初始化2.赋值3.取值4.赋给另一个原子类型5.`exchange`6.`compare_exchange_weak` 和 `compare_exchange_strong`使用场景7.注意事项在 C++ 中,原子类型提供了对共享变量的无锁操作,确保多线程环境下的安全。以下…

Linux搭建Hadoop集群(详细步骤)

前言 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下&#xff0c;开发分布式程序。充分利用集群的威力进行高速运算和存储。 说白了就是实现一个任务可以在多个电脑上计算的过程。 一&#xff1a;准备工具 1.1 VMware 1.2L…

免费高可用软件

高可用软件是指那些能够提供高可用性、高可靠性的软件&#xff0c;它们在各种应用场景下都能确保系统的稳定运行。以下是四款免费的高可用软件&#xff0c;它们在不同领域都表现出色&#xff0c;能够满足各种高可用性需求。 一、PanguHA PanguHA是一款专为Windows平台设计的双…

计算机的错误计算(一百一十六)

摘要 计算机的错误计算&#xff08;一百一十&#xff09;分析了&#xff08;二&#xff09;中例1循环迭代错误计算的原因。应读者建议&#xff0c;本节将用错数讨论其例2的错误计算原因。 例1. 已知 计算 在 的错数&#xff0c;并用实例分析计算过程中的错误数字数量。…