论文阅读:Auto White-Balance Correction for Mixed-Illuminant Scenes

论文阅读:Auto White-Balance Correction for Mixed-Illuminant Scenes

今天介绍一篇混合光照下的自动白平衡的文章

Abstract

自动白平衡(AWB)是相机 ISP 通路中比较重要的一个模块,主要用于校正环境光照引起的色偏问题,不过常见的 AWB 算法都是基于单光照的假设去做的,然而,实际场景中都是多光源环境,这篇文章提出了一种高效的方法去处理实际场景中的多光源问题,与传统 AWB 方法的一个显著不同点在于,这篇文章不需要对光照进行估计,而是通过对一组预设的白平衡参数,将预设的白平衡参数的权重进行调节,然后加权得到混合光照下的白平衡效果,实验结果说明这种方法相比之前的单光照或者混合光照下的白平衡算法都更有效。

Introduction

自动白平衡是相机 ISP 通路中的一个重要模块,ISP 通过一系列的处理模块,比如去马赛克,降噪,白平衡,tone mapping 等,将 sensor RAW 图处理得到最终的 RGB 图,白平衡处理是 ISP 通路中比较靠前的一个模块,这个模块的作用主要是为了校正环境光照引起的色偏,以模拟人眼的色彩常恒性的特点。

AWB 通常包括两个步骤,第一步是估计环境中的光源;第二步是基于环境中的光源估计,用相应的 AWB 参数进行白平衡处理。第一步是关键,准确的光源估计是白平衡是否校正成功的重要前提,因为第二步基本就是基于光源估计给出 RGB 三个通道的系数,让三个通道分别乘以这三个系数,就完成了白平衡的校正。

之前的很多 AWB 的工作都是基于单光源估计的 AWB 校正方法,这种单光源的假设对于实际场景来说,过于简单。如图一所示,图一展示了一个典型的混合光源场景,一部分是窗外的天空,一部分是室内的场景,如果用单一光源做白平衡校正,总会出现另外一部分场景出现色彩偏差的问题。

在这里插入图片描述

Method

在这里插入图片描述

这篇文章的算法流程如图-2 所示,给定一张去马赛克之后的图,先用一组给定光照下的 AWB 参数进行处理,然后最终 AWB 的图,可以基于这组图的一个线性组合:

I c o r r ↓ = ∑ i W i ⊙ I c i ↓ (1) I_{corr \downarrow} = \sum_{i} W_i \odot I_{c_i \downarrow} \tag{1} Icorr=iWiIci(1)

I c o r r ↓ I_{corr \downarrow} Icorr 是最终校正后的图, W i W_i Wi 是最终融合的权重。

为了构造这样的数据对,文章作者先将一张去马赛克之后的图进行一个固定 AWB(比如日光下) 的处理得到 I i n i t I_{init} Iinit,然后构造一个映射关系,将固定 AWB 下的图映射到对应光照下的图:

I ^ c i = M c i ϕ ( I i n i t ) (2) \hat{I}_{c_i} = M_{c_i} \phi (I_{init}) \tag{2} I^ci=MciϕIinit)(2)

I ^ c i \hat{I}_{c_i} I^ci 是目标 AWB 下的图, ϕ \phi ϕ 表示一个多项式的核函数, M c i M_{c_i} Mci 表示一个映射矩阵,通过类似一个最小二乘的方法,可以得到 M c i M_{c_i} Mci 映射矩阵。

然后,基于这些 I ^ c i \hat{I}_{c_i} I^ci,我们需要进一步去学习融合权重,文章中利用了一个 DNN 模型去学习这个映射权重,为了训练这个映射网络,文章利用了一个公开的数据集,里面包含了大约 65k 的图像样本,每个样本都有一个正确的 AWB 的校正图,这个作为 GT,从这个数据里面,文章作者挑选了大概 9200 张图,然后通过前面介绍的 AWB 处理方法,得到了不同关照下的 AWB 校正图,这些光照包括 2850 Kelvin (K), 3800 K, 5500 K, 6500 K, and 7500 K,分别对应一些典型的色温场景,然后构造了如下的 loss 函数进行训练:

L r = ∥ P c o r r − ∑ i W ^ i ⊙ P c i ∥ F 2 (3) \mathcal{L}_r = \left \| P_{corr} - \sum_{i} \hat{W}_i \odot P_{c_i} \right \|_{F}^{2} \tag{3} Lr= PcorriW^iPci F2(3)

其中, P c o r r P_{corr} Pcorr P c i P_{c_i} Pci 分别表示 GT 图像和输入图像中抽取的图像块,$\hat{W}_i $ 表示最终需要训练学习得到的权重图,为了在最终重建的输出图中,出现色彩空间之外的颜色,文章作者对输出做了一个 cross-channel softmax 的操作。为了保证权重图的平滑性,文章作者还加了一个 TV 平滑项:

L s = ∥ W ^ i ∗ ▽ x ∥ F 2 + ∥ W ^ i ∗ ▽ y ∥ F 2 (4) \mathcal{L}_s = \left \|\hat{W}_i \ast \bigtriangledown_{x} \right \|_{F}^{2} + \left \|\hat{W}_i \ast \bigtriangledown_{y} \right \|_{F}^{2} \tag{4} Ls= W^ix F2+ W^iy F2(4)

最终的损失函数如下所示:

L = L r + L s \mathcal{L} = \mathcal{L}_r + \mathcal{L}_s L=Lr+Ls

推理的时候,文章中先用固定的 AWB 参数生成不同的 AWB 图,然后连接到一起送入网络,为了提升最终的 AWB 校正效果,文章中还试过聚合的策略,将输入的图用了三个不同的尺度,1.0,0.5, 0.25,将这三个不同尺度的输出都上采样到原始大图的大小,然后再取平均,文章还提到用导向滤波的方式进行后处理,可以得到更边缘平滑的权重图,最后的 AWB 校正图如下式所示:

I c o r r = ∑ i W i ↑ ⊙ I c i (1) I_{corr} = \sum_{i} W_{i \uparrow} \odot I_{c_i} \tag{1} Icorr=iWiIci(1)

在这里插入图片描述

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

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

相关文章

计算机视觉的应用17-利用CrowdCountNet模型解决人群数量计算问题(pytorch搭建模型)

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用17-利用CrowdCountNet模型解决人群数量计算问题(pytorch搭建模型)。本篇文章,我将向大家展示如何使用CrowdCountNet这个神奇的工具,以及它是如何利用深度学习技术来解决复杂…

【设计一个缓存--针对各种类型的缓存】

设计一个缓存--针对各种类型的缓存 1. 设计顶层接口2. 设计抽象类 -- AbstractCacheManager3. 具体子类3.1 -- AlertRuleItemExpCacheManager3.2 -- AlertRuleItemSrcCacheManager 4. 类图关系 1. 设计顶层接口 // 定义为一个泛型接口,提供给抽象类使用 public interface Cach…

数据资产入表,给企业带来的机遇和挑战

作为推动数字经济发展的核心要素,近年来,数据资源对于企业特别是相关数据企业的价值和作用正日益凸显。 数据资产入表之后,能够为企业经营带来实质性的收益。“随着数据资产的纳入,企业的资产也出现了新标的。在资产负债表中&…

【2023春李宏毅机器学习】快速了解机器学习基本原理

文章目录 机器学习约等于机器自动找一个函数 机器学习分类 regression:输出为连续值classification:输出为一个类别structured learning:又叫生成式学习generative learning 生成有结构的物件(如:影像、句子&#xf…

ajax异步传值以及后端接收参数的几种方式

异步传值 第一种呢,也是最简单的一种,通过get提交方式,将参数在链接中以问号的形式进行传递 // 前台传值方法 // 触发该方法调用ajaxfunction testAjax(yourData) {$.ajax({type: "get", // 以get方式发起请求url: "/yo…

IC卡操作软件支持PN532

IC卡操作软件,在知道卡片密码的情况下,可以对卡片修改数据,格式化清卡,修改UID卡和CUID卡的卡号,锁UFUID卡等 卡片dump文件拖进软件,即可打开文件,编辑修改文件,写卡,就…

upload-labs关卡11(双写后缀名绕过)通关思路

文章目录 前言一、回顾前几关知识点二、靶场第十一关通关思路1、看源代码2、bp抓包双写后缀名绕过3、检查文件是否成功上传 总结 前言 此文章只用于学习和反思巩固文件上传漏洞知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的…

将Agent技术的灵活性引入RPA,清华等发布自动化智能体ProAgent

近日,来自清华大学的研究人员联合面壁智能、中国人民大学、MIT、CMU 等机构共同发布了新一代流程自动化范式 “智能体流程自动化” Agentic Process Automation(APA),结合大模型智能体帮助人类进行工作流构建,并让智能…

Neo4j数据库介绍及简单使用

图数据库介绍 图数据库是一种专门设计用于存储和管理图形数据的数据库类型。在图数据库中,数据以图的形式表示,其中节点表示实体,边表示实体之间的关系。这种表示方式非常适合处理具有复杂关系的数据,如社交网络、推荐系统、网络…

代码随想录算法训练营第五十九天丨 单调栈02

503.下一个更大元素II 思路 做本题之前建议先做739. 每日温度 (opens new window)和 496.下一个更大元素 I (opens new window)。 这道题和739. 每日温度 (opens new window)也几乎如出一辙。 不过,本题要循环数组了。 关于单调栈的讲解我在题解739. 每日温度 …

数据结构 栈与队列详解!!

一.栈 关于内存中的栈和数据结构中的栈是不同的,本章着重讲的是数据结构的栈。 这是一张关于栈的表达图。从图中可以看出栈很像是一副卡牌,发牌时只能从上取出,即出栈。 而入栈则是像你出牌后,要把你出的牌压在上一张出的牌上面。…

asp.net校园二手交易平台系统VS开发sqlserver数据库web结构c#编程计算机网页

一、源码特点 asp.net校园二手交易平台系统 是一套完善的web设计管理系统,系统采用mvc模式(BLLDALENTITY)系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 vs2010,数据库为sqlserver2008&a…

pytorch单精度、半精度、混合精度、单卡、多卡(DP / DDP)、FSDP、DeepSpeed模型训练

pytorch单精度、半精度、混合精度、单卡、多卡(DP / DDP)、FSDP、DeepSpeed(环境没搞起来)模型训练代码,并对比不同方法的训练速度以及GPU内存的使用 代码:pytorch_model_train FairScale(你真…

[工业自动化-22]:西门子S7-15xxx编程 - 软件编程 - 如何PLC建立用户界面: SIMATIC 面板式HMI 或工控机PC HMI

目录 前言: 一、PLC(可编程逻辑控制器)的用户界面支持方式 1.1 概述 1.2 西门子(Siemens)的人机界面(HMI)支持多种类型 1.3 PC HMI VS SIMATIC HMI 二、PC—HMI—PLC连接架构的实现 三、…

Go——一、Go语言安装及介绍

Go 一、Windows下安装Go1、下载Go2、配置环境变量3、下载Jetbrain下的GoLang4、编写hello world5、编译和执行 二、Go语言介绍1、开发文档2、Go语言核心开发团队3、为什么要创建Go4、Go语言发展史5、Go语言特点6、Golang执行过程6.1 执行过程分析6.2 编译是什么 7、开发注意事项…

WinForms C# 导入和导出 CSV 文件 Spread.NET

使用 WinForms C# 和 VB.NET 导入和导出 CSV 文件 2023 年 11 月 17 日 使用 Spread.NET 直接在 .NET WinForms 应用程序中处理 CSV 文件。 Spread.NET可帮助您创建电子表格、网格、仪表板和表单。它包括一个强大的计算引擎,具有 450 多个函数以及导入和导出 Micros…

【OpenCV】仿射变换中cv2.estimateAffine2D 的原理

目录 一、介绍 二、仿射变换矩阵 (M) 1.M中六个元素的说明 2.计算旋转角度 3.M的计算过程 三、输出状态 (inliers) 四、错切参数 一、介绍 cv2.estimateAffine2D 是 OpenCV 库中的一个函数,用于估计两个二维点集之间的仿射变换矩阵。即第一个点集经仿射变换转…

解决Requests中使用httpbin服务器问题:自定义URL的实现与验证

问题背景 在使用Python的Requests模块进行单元测试时,可能会遇到无法使用本地运行的httpbin服务器进行测试的问题。这是因为测试脚本允许通过环境变量HTTPBIN_URL指定用于测试的本地httpbin实例,但在某些测试用例中,URL是硬编码为httpbin.or…

成都瀚网科技有限公司抖音带货可靠么

近年来,随着抖音等短视频平台的兴起,越来越多的企业开始利用这些平台进行产品推广和销售。成都瀚网科技有限公司也紧跟这一趋势,通过抖音开展带货业务。那么,成都瀚网科技有限公司的抖音带货是否可靠呢?本文将对此进行…

KylinOSv10修改ulimit值

问题 ulimit 值过小,可能导致压力测试遇到瓶颈,比如通过nginx建立tcp长链接时,链接数量受限。需要修改ulimit值,Linux默认为1024。 解决 使用root或sudo权限,编辑文件/etc/security/limits.conf,新增以下…