论文阅读:Seeing in Extra Darkness Using a Deep-Red Flash

论文阅读:Seeing in Extra Darkness Using a Deep-Red Flash

今天介绍的这篇文章是 2021 年 ICCV 的一篇 oral 文章,主要是为了解决极暗光下的成像问题,通过一个深红的闪光灯补光。实现了暗光下很好的成像效果,整篇文章基本没有任何公式,所用到的网络也比较简单,但最后成了一篇顶会的 Oral 文章,可能主要创新在于软硬件结合吧。

Abstract

本篇文章提出了一种新的闪光灯技术,利用一个深红波段的闪光灯进行补光,文章作者说,他们主要观察到在明亮环境下,人眼由视锥细胞主导成像感知,在暗光环境下,人眼主要由视杆细胞主导成像感知。人眼的视杆细胞对波长大于 620nm 的红外光谱并不敏感,然而相机 sensor 依然有感应。文章作者提出了一种新的调制策略,通过 CNN 网络实现图像引导的滤波,将一张有噪的 RGB 图像与一张闪光拍摄的图像进行融合。同时,文章将这个融合网络,进一步扩展到了视频重建,文章作者搭建了硬件原型,在不同的静态和动态场景都进行了验证,实验结果,证明这种新型闪光灯技术可以取得很好的成像效果,尤其是在暗光环境下。

Introduction

暗光成像是手机摄影中的一个重要特性,为了提升手机暗光成像的能力,现有的方法也做了多种尝试,从对 sensor 的改造,比如将 RGGB 的贝尔模式替换成了 RYYB 的贝尔模式,到后端算法的设计,比如利用多帧曝光技术。

基于闪光灯的摄影技术,同样也有非常悠久的历史,而且一般来说会获得更好的效果,尤其是在非常暗的环境下还有复杂运动的时候,这种时候,多帧融合的方式可能会存在配准对齐失效的问题。不过,闪光摄影技术也有一些弊端,一个是闪光灯发出的光随着距离的增加,衰减地很快,所以闪光灯一般能照射的有效距离不会太远;此外,闪光灯在闪光的一瞬间,对人眼会造成一个很强的炫目,在暗光环境下,这种强烈的闪光也会造成很不舒适的光污染,对暗视觉下的人眼系统造成损伤。如果利用不可见光波段比如近红外或者近紫外的闪光灯,可以一定程度上避免这个问题,不过目前的相机 sensor 一般对近红外或者近紫外没有光谱响应,需要进行定制化的设计。另外一个问题,RGB 域的图像与不可见光波段的图像域,由于物质对不同光谱的反射特性不一样的原因,可能存在一定的差异。这个对跨模态的图像配准与图像融合都存在一定的挑战。

1.1 Human Visual System

接下来,文章对人眼视觉系统做了分析,人眼的视网膜负责人眼对环境光的响应,视网膜上包含两种感光细胞,一种是视锥细胞,一种是视杆细胞,视锥细胞主要负责人眼对明亮环境以及颜色的感知,视锥细胞对 550nm 波长的光谱响应最强烈,视杆细胞主要负责人眼对暗光环境以及亮度的感知,视杆细胞对 500nm 波长的光谱响应最强烈,视杆细胞对长波长的光谱不敏感,视杆细胞对500nm 波长的光谱响应强度是对 650nm 波长的光谱响应强度的 3 倍。视锥细胞与视杆细胞的组合,形成了对中等光强环境的光谱响应。环境由明亮转为黑暗的时候,人眼需要一个更长的时间来适应,反过来,环境由暗转为明亮的时候,人眼的适应时间会更短。

1.2 Deep-Red Flash

文章作者接下来就提出用深红波段的闪光灯来实现暗光下的摄影,与常见的白光闪光灯比,可以感受到的光照强度会更低,对人眼的刺激会更小,而且夜晚视觉会也能够保存。与不可见波段的闪光灯技术相比,普通的相机 sensor 对深红波段是可以直接响应吸收的,不需要另外再对 sensor 定制,另外,深红波段也属于可见光范围内,与 RGB 图像可以更好地融合。

Camera and Flash Module

接下来,文章介绍了整个系统的硬件原型,从图中可以看到,一个可以发射深红波段的闪光灯放置在一个 Camear 旁边,LED 闪光灯通过信号触发,以便闪光灯与拍照能够同步。

在这里插入图片描述

Mesopic Flash Reconstruction

这一部分是文章的算法部分,首先文章分析了如何从深红闪光灯下的图像提取引导信息,文章中用到的 sensor,通过光谱响应分析测定,对于 660nm 波长的深红光谱来说,sensor 的红色通道的响应强度是绿色通道的 4 倍,是蓝色通道响应强度的 10 倍。一个直观的策略是直接用红色通道的信息作为引导信息,不过文章作者发现,这种方式可得到的动态范围比较窄,对于红色物体来说,可能很快就达到饱和了,而对于蓝色物体来说,却无法获得足够的能量强度。

为了分析不同物体对这种深红闪光灯的光谱响应,文章作者用 1269 Munsell 色卡进行分析,这个色卡基本可以代表大多数的自然物体,文章考虑了色卡上的每个色块在理想光照情况下对 660nm 的光谱响应,文章中使用一个恒定的光源,同时色块垂直光源发出的入射光线。最后的统计结果如下图所示:

在这里插入图片描述

上图左边的图表示的是,相比使用单个红色通道,使用三通道的信息,可以获得更大的动态范围。右边的图是一个统计直方图,表明 80% 的自然物体,对深红波段的光谱响应大于 0.1,说明深红波段有广泛的适用性。

接下来介绍图像融合,有了前面的大量铺垫,这个图像融合反而是比较简单的一种方法,文章中就是用了一个 UNet 来实现这个融合操作,文章中就是直接将没有闪光灯时的 RGB 图像与有闪光灯时的 RGB 图像连接在一起,然后送入一个 UNet 网络,实现整个的融合。

文章中,也介绍了如何对视频流进行操作,文章中提出了一种交叉采集图像,然后逐帧融合的方法,采集的时候,采集一帧有闪光的图像,然后再接一帧没有闪光的图像,这样交替地采集下去,为了实现时域的对齐,文章对 Flash-RGB 图像进行配准,因为常规的 RGB 图像噪声很大,很难配准对齐了。而 Flash-RGB 是通过深红闪光灯补光采集到的图像,所以图像的信噪比更好,更容易进行配准,通过 Flash-RGB 图像配准得到的位移向量场,文章中进行了拆分,一部分用于前一帧 Flash-RGB 图像的 warp,与当前帧的 No-Flash RGB 图像对齐融合,另外一部分用于当前帧的 No-Flash RGB 图像的 warp,与当前帧的 Flash-RGB 图像对齐融合,这样做,可以保证帧率不会减少。融合之后,还会再接一个时域平滑的网络,整体的算法框图如下所示:
在这里插入图片描述

Experiments

最后介绍一下实验部分,文章中在训练这个网络的时候,用的是仿真数据,文章中用的是 NYU v2 dataset,给定一张正常的 RGB 图像,通过给 RGB 图像加噪,来模拟暗光下的 RGB 图像,另外对 RGB 图像的三通道直接叠加,模拟深红闪光下的图像,不过为了更好的让网络学习如何利用这个引导信息,文章对模拟的深红图像进行了一个频率调制:

f ( x , y ) = α ⋅ sin ⁡ ( 2 π T ( x − x ˉ ) 2 + ( y − y ˉ ) 2 ) + β f(x, y) = \alpha \cdot \sin(\frac{2 \pi}{T} \sqrt{(x - \bar{x})^2 + (y - \bar{y})^2}) + \beta f(x,y)=αsin(T2π(xxˉ)2+(yyˉ)2 )+β

其中, x ∈ { 1 , 2 , . . . , W } x \in \{1, 2, ..., W \} x{1,2,...,W}, y ∈ { 1 , 2 , . . . , H } y \in \{1, 2, ..., H \} y{1,2,...,H}, α \alpha α 是幅度, x ˉ , y ˉ \bar{x}, \bar{y} xˉ,yˉ 是相位偏移, T T T 是周期, β \beta β 表示垂直偏移。

最后是一些效果样例的展示:
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go-Python-Java-C-LeetCode高分解法-第十周合集

前言 本题解Go语言部分基于 LeetCode-Go 其他部分基于本人实践学习 个人题解GitHub连接:LeetCode-Go-Python-Java-C 欢迎订阅CSDN专栏,每日一题,和博主一起进步 LeetCode专栏 我搜集到了50道精选题,适合速成概览大部分常用算法 突…

FutureTask的测试使用和方法执行分析

FutureTask类图如下 java.util.concurrent.FutureTask#run run方法执行逻辑如下 public void run() {if (state ! NEW ||!RUNNER.compareAndSet(this, null, Thread.currentThread()))return;try {Callable<V> c callable;if (c ! null && state NEW) {V res…

【大数据】Hive SQL语言(学习笔记)

一、DDL数据定义语言 1、建库 1&#xff09;数据库结构 默认的数据库叫做default&#xff0c;存储于HDFS的&#xff1a;/user/hive/warehouse 用户自己创建的数据库存储位置&#xff1a;/user/hive/warehouse/database_name.db 2&#xff09;创建数据库 create (database|…

【教程】使用vuepress构建静态文档网站,并部署到github上

官网 快速上手 | VuePress (vuejs.org) 构建项目 我们跟着官网的教程先构建一个demo 这里我把 vuepress-starter 这个项目名称换成了 howtolive 创建并进入一个新目录 mkdir howtolive && cd howtolive使用你喜欢的包管理器进行初始化 yarn init 这里的问题可以一…

nodejs+vue百鸟全科赏析网站

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

通过示例详细了解ES6导入导出模块

通过示例详细了解ES6导入导出模块 似乎许多开发人员认为 ES6 模块只不过是export、import关键字。事实上&#xff0c;它更加多样化。它拥有强大的功能和鲜为人知的问题。在本文中&#xff0c;我们将使用一些示例来了解这些内容。 示例一 // index.mjs import { default } fr…

深度学习-卷积神经网络

文章目录 应用卷积神经网络卷积处理分类问题 应用 图片分类图片检索图片分割图片风格迁移姿态估计OCR等 卷积神经网络 核概念计算机视觉中处理图片的核大小是通过经验得来的&#xff0c;而深度学习中的权重大小是自己学习出的。卷积VS神经网络&#xff1a;一个是局部观察一个…

【实操】基于ChatGPT构建知识库

前言 最近有些实践&#xff0c;因为后面要去研究fine-tune了&#xff0c;想着记录一下chatgpt向量数据库构建知识库的一些实操经验&#xff0c;不记我很快就忘了&#xff0c;哈哈。 首先&#xff0c;提一下为啥会出现向量数据库这个技术方案&#xff1f; 大家经过实践发现&…

【传输层协议】UDP/TCP结构特点与原理(详解)

文章目录 1. UDP1.1 UDP结构1.2 UDP特点1. 无连接2. 不可靠3. 面向数据报4. 缓冲区5. 大小受限6. 无序性 2. TCP2.1 TCP结构2.2 TCP特点1. 有连接2. 可靠性3. 面向字节流4. 拥塞控制5. 头部开销 2.3 TCP原理1. 确认应答&#xff08;安全机制&#xff09;2. 超时重传&#xff08…

数据结构与算法--其他算法

数据结构与算法--其他算法 1 汉诺塔问题 2 字符串的全部子序列 3 字符串的全排列 4 纸牌问题 5 逆序栈问题 6 数字和字符串转换问题 7 背包问题 8 N皇后问题 暴力递归就是尝试 1&#xff0c;把问题转化为规模缩小了的同类问题的子问题 2&#xff0c;有明确的不需要继续…

使用Elasticsearch来进行简单的DDL搜索数据

说明&#xff1a;Elasticsearch提供了多种多样的搜索方式来满足不同使用场景的需求&#xff0c;我们可以使用Elasticsearch来进行各种复制的查询&#xff0c;进行数据的检索。 1.1 精准查询 用来查询索引中某个类型为keyword的文本字段&#xff0c;类似于SQL的“”查询。 创…

【ElasticSearch】使用 Java 客户端 RestClient 实现对文档的查询操作,以及对搜索结果的排序、分页、高亮处理

文章目录 前言&#xff1a;RestClient 查询文档的 RestAPI一、全文检索查询1.1 match_all 查询1.2 match 查询1.3 multi_match 查询 二、精确查询2.1 term 查询2.2 range 查询 三、复合查询&#xff1a;Boolean 查询与 function score 查询的综合案例四、对查询结果的处理4.1 将…

050:mapboxGL加载geojson数据,同时包含点、多边形的处理示例

第050个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+mapbox中加载geojson数据,既显示点又显示多边形。这个示例是显示了一种处理方式,通过过滤的方式将数据分离化,点和多边形通过两个不同的图层来加载表示。 直接复制下面的 vue+mapbox源代码,操作2分钟即可运行实…

2018-2019 ACM-ICPC, Asia Nanjing Regional Contest G. Pyramid(组合数学 计数)

题目 t(t<1e6)组样例&#xff0c;每次给定一个n(n<1e9)&#xff0c;统计边长为n的上述三角形的等边三角形个数 其中等边三角形的三个顶点&#xff0c;可以在所有黑色三角形&白色三角形的顶点中任取&#xff0c; 答案对1e97取模 思路来源 申老师 & oeis A0003…

本地生活将成快手新的营收增长点

监制 | 何玺 排版 | 叶媛 快手本地生活开始强化B端市场。 据了解&#xff0c;快手 “本地商家”APP已经正式上线。这是快手为本地生活商家推出的独立工作平台&#xff0c;有助于商家提升经营效率。 新APP的上线&#xff0c;标志着快手本地生活业务布局&#xff0c;正从过去侧…

深入理解Kafka分区副本机制

1. Kafka集群 Kafka 使用 Zookeeper 来维护集群成员 (brokers) 的信息。每个 broker 都有一个唯一标识 broker.id&#xff0c;用于标识自己在集群中的身份&#xff0c;可以在配置文件 server.properties 中进行配置&#xff0c;或者由程序自动生成。下面是 Kafka brokers 集群自…

TLS/SSL 详解

目录 基础理论入门HTTPS对称加密非对称加密证书TLS握手过程握手总结 TLS 定义(记录层/握手层)HTTPS HTTP over TLS加密记录层分片 (Fragmentation)记录压缩和解压缩 (Record compression and decompression)空或标准流加密 (Null or standard stream cipher)CBC 块加密 (分组加…

VS2022新建项目时没有ASP.NET Web应用程序 (.NET Framework)

问题&#xff1a;如图&#xff0c;VS2022新建项目时没有“ASP.NET Web应用程序 &#xff08;.NET Framework&#xff09;”的选项解决方法&#xff1a;点击跳转至修改安装选项界面选择安装该项即可&#xff1a;

k8s-13 存储之secret

Secret 对象类型用来保存敏感信息&#xff0c;例如密码、OAuth 令牌和 ssh key。 敏感信息放在 secret 中比放在 Pod 的定义或者容器镜像中来说更加安全和灵活 。 Pod 可以用两种方式使用 secret:作为 volume 中的文件被挂载到 pod 中的一个或者多个容器里 当 kubelet 为 pod 拉…

python:从Excel或者CSV中读取因变量与多个自变量,用于训练机器学习回归模型,并输出预测结果

作者:CSDN @ _养乐多_ 本文详细记录了从Excel读取用于训练机器学习模型的数据,包括独立变量和因变量数据,以供用于机器学习模型的训练。这些机器学习模型包括但不限于随机森林回归模型(RF)和支持向量机回归模型(SVM)。随后,我们将测试数据集应用于这些模型,进行预测和…