论文阅读: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.mfbz.cn/a/889666.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes-Kind篇-01-kind搭建测试集群

1、Kind 介绍 官方文档地址:https://kind.sigs.k8s.io/ github仓库地址:https://github.com/kubernetes-sigs/kind 国内镜像仓库地址:https://gitcode.com/gh_mirrors/ki/kind/overview kind 是一种使用 Docker 容器 nodes 运行本地 Kubern…

HI6338 (DIP-8内置75W方案)

Hi6338 combines a dedicated current mode PWM controller with integrated high voltage power MOSFET.Vcc low startup current and low operating current contribute to a reliable power on startup design with Hi6338. the IC operates in Extended ‘burst mode’ to …

Nginx请求头丢失,引发出来的问题

1.问题 新增的几个 header 参数是这样的: api_key_idapi_key_value 我配置有2层nginx转发,从机器A到机器B再到目标服务,遇到一个接口请求需要在header中传递api_key_id和api_key_value这2个参数,但是在EC2机器上直接curl目标服…

更美观的HTTP性能监测工具:httpstat

reorx/httpstat是一个旨在提供更美观和详细HTTP请求统计信息的cURL命令行工具,它能够帮助开发者和运维人员深入理解HTTP请求的性能和状态。 1. 基本概述 项目地址:https://github.com/reorx/httpstat语言:该工具主要是以Python编写&#xff…

机器人末端的负载辨识

关节处的摩擦力变小了,导致系统的参数辨识精度会变高,因为动力学方程中的摩擦力项占的比例会变小。 为什么要有一个负载的参数辨识,因为对于整个系统来说,除了负载哈,其他关节都是不变的,出厂时都设置好了&…

金蝶云星空个别字段无法录入异常处理

用户反馈,在录入单据时,第一条数据能录入数量,新增第二条时就无法录入。 用户反馈截图如下: 我登录自己的账号查看,并未发现相同的问题,同时用户也说已经退出重新登录过,问题依旧。 到现场看用…

使用RESTful API构建Web应用程序

开始正式介绍 RESTful API 之前,我们需要首先搞清:API 到底是什么? API(Application Programming Interface) 翻译过来是应用程序编程接口的意思。 我们在进行后端开发的时候,主要的工作就是为前端或者其…

LUCEDA IPKISS Tutorial 77:在版图一定范围内填充dummy

案例分享:在给定的Shape内填充dummy 所有代码如下: from si_fab import all as pdk from ipkiss3 import all as i3 from shapely.geometry import Polygon, MultiPolygon import numpy as np import matplotlib.pyplot as pltclass CellFilledWithCon…

简单的网络爬虫爬取视频

示例代码爬取一个周杰伦相关视频 import requests# 自己想下载的视频链接 video_url https://vdept3.bdstatic.com/mda-qg8cnf4bw5x6bjs5/cae_h264/1720516251158906693/mda-qg8cnf4bw5x6bjs5.mp4?v_from_shkapp-haokan-hbf&auth_key1728497433-0-0-4a32e13f751e04754e4…

电子科技大学高级算法设计与分析-MaxFlow网络流基础知识梳理

MaxFlow网络流 1 网络流基础概念 source:源点 sink:终点 Flow:流量 capacity:容量 Residual:残量 Residual Network:残量网络 Augmenting path:增广路径,表示从源点 s 到终点 t 不包…

爬虫prc技术----小红书爬取解决xs

知识星球:知识星球 | 深度连接铁杆粉丝,运营高品质社群,知识变现的工具知识星球是创作者连接铁杆粉丝,实现知识变现的工具。任何从事创作或艺术的人,例如艺术家、工匠、教师、学术研究、科普等,只要能获得一…

【redis-06】redis的stream流实现消息中间件

redis系列整体栏目 内容链接地址【一】redis基本数据类型和使用场景https://zhenghuisheng.blog.csdn.net/article/details/142406325【二】redis的持久化机制和原理https://zhenghuisheng.blog.csdn.net/article/details/142441756【三】redis缓存穿透、缓存击穿、缓存雪崩htt…

STM32-ADC模数转换

一、概述 ADC(Analog-Digital Converter)模拟-数字转换器 ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁12位逐次逼近型ADC,1us转换时间输入电压范围:0~3.3V&#xff…

vscode配置R语言debugger环境:“vscDebugger“的安装

要在 R 中安装 vscDebugger 包,可以按照以下步骤进行: 方法一:使用命令面板自动安装 打开命令面板: 在 Visual Studio Code 中按 CtrlShiftP 打开命令面板。 运行安装命令: 在命令面板中输入并选择 r.debugger.updat…

大数据新视界 --大数据大厂之 Dremio:改变大数据查询方式的创新引擎

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

前端的全栈混合之路Meteor篇:分布式数据协议DDP深度剖析

本文属于进阶篇,并不是太适合新人阅读,但纯粹的学习还是可以的,因为后续会实现很多个ddp的版本用于web端、nodejs端、安卓端和ios端,提前预习和复习下。ddp协议是一个C/S架构的协议,但是客户端也同时可以是服务端。 什…

SSD |(二)SSD主控

文章目录 📚控制器架构🐇PCIe和NVMe控制器前端子系统🐇NAND闪存控制器后端子系统🐇内存子系统🐇安全子系统🐇CPU计算子系统 📚控制器架构 控制器作为一个片上系统,处理来自用户端的…

【二分算法】——8个题目让你找到二分算法的感觉势如破竹

文章目录 1.二分查找2.在排序数组中查找元素的第一个和最后一个位置3.x的平方根4.搜索插入位置5.山脉数组的峰顶索引6.寻找峰值7.寻找旋转排序数组中的最小值8.JZ53(2) 1.二分查找 https://leetcode.cn/problems/binary-search/ 思路: 标准的二分查找。给定一个有序数组和目…

【2024版本】Mac/Windows IDEA安装教程

IDEA 2024版本真的很强大,此外JDK发布了最新稳定版 JDK21 ,只有新版本支持JDK 21、JDK22。原来数据库插件不支持redis等一些NoSql的数据库的连接,如果要使用需要自己单独装收费的插件。直接打开idea就很吃内存了,再打开其他一大堆…

47 C 语言实战项目——家庭收支记账软件

目录 1 需求说明 1.1 菜单显示 1.2 登记收入 1.3 登记支出 1.4 显示收支明细 1.5 退出 2 流程分析 2.1 总流程图 2.2 登记收入流程图 2.3 登记支出流程图 2.4 收支明细流程图 2.5 退出流程图 3 代码实现 3.1 框架搭建 3.2 收支明细功能 3.3 登记收入功能 3.4 …