Tech Talk | 还原照片不同亮度范围细节——RAW HDR技术

2023-05-16

拍照时,你是否遇到过这些情况呢?

拍摄的成片暗区过暗,高亮区域过曝

逆光拍摄中,会出现“鬼影”

暗部噪声偏大导致图像出现瑕疵

.......

照片的高光和暗区细节得总是不到完美呈现,这是所有拍摄设备都会出现的问题。那么我们该怎么解决和改善才能拥有愉快和出色的摄影体验呢?答案是:通过RAW HDR(高动态范围)算法技术。

RAW HDR技术:是通过使用传感器直出的raw数据,减少isp(图像信号处理)处理过程中的画质损失,能更好实现影调、噪声和鬼影等方面的优化,有效提升了照片的动态范围和画质效果。照片能够同时保留拍摄场景中的高光和暗部的细节,还原人眼中所能看见的真实场景图,从而给用户带来更高质量的摄影体验。

“ 

本期的Tech Talk,我们邀请到了小米AI实验室视觉算法团队的工程师——程璞,为大家介绍小米手机中,RAW HDR方案的整体结构和算法原理。

cb0c33d5b22e51a9e26a01488091fa52.jpeg

硬核指数:⭐⭐⭐⭐⭐

趣味指数:⭐⭐⭐

阅读时长:约9分钟

一、什么是HDR

HDR是“High Dynamic Range” (高动态范围)的缩写,其中动态范围是指拍摄场景中最亮点和最暗点的亮度比值。当拍摄场景的动态范围很高时,受限于传感器以及图像编码等因素,照片可能无法呈现所有信息。典型的例子如下图所示,场景中的高光区域可能会过曝,而暗区则可能会出现死黑的现象。两个区域均难以看清细节。

2333d957e7081224a48dd462e77d3835.png

HDR就是通过一定的技术手段,让照片中尽量包含高亮区域和暗区的细节,从而提升照片的画质效果。

57a8a24bedd0270c41675c7ae66add2f.png

在拍摄高动态范围场景时,照片之所以无法呈现场景高亮和暗区的信息,一方面是受限于传感器:真实世界的动态范围是很高的,而传感器能感知的范围是有限的;另一方面则跟图像的编码位数有关,比如8bit的图像能表示的范围是0~255,超过这个范围则会出现过曝等现象。

针对传感器的限制,在拍照时可以使用包围曝光的技术,即通过调整曝光时间、iso等参数同时采集不同亮度范围的图像帧,这样多个图像帧组合在一起就可以包含更多亮度范围的信息。如下图所示,我们可以采集正常曝光图像帧、长曝光图像帧、短曝光图像帧等三帧图像。其中正常曝光帧用来作为参考帧,提供基准亮度;长曝光图像帧可以提供暗区的信息,使得暗区的细节也能在照片中呈现;短曝光帧则可以提供高亮区域的信息,尽量减少照片中的过曝区域。

5eda5d65dea9fc071d45f7182d8c83c4.png

另外,为了表示整个亮度范围的信息,一般需要使用高比特位数的图像,而我们最终照片的比特位数较低,所以需要通过HDR算法,使得低比特位的图片也能尽可能显示出整个亮度范围的信息和细节,且比较真实自然,从而改善高动态范围场景的拍照体验。

二、RAW HDR方案

 >>>> 2.1 整体框架

我们在小米手机中使用的是RAW HDR方案,即使用传感器直出的数据进行HDR的相关处理。

a56196fb086f1ebdf4fff6137997a942.png

如上图所示,与yuv数据相比,raw数据没有经过isp中去马赛克、色调映射、颜色和对比度调整、降噪和锐化等各种复杂处理,因此raw数据的噪声模型更为简单准确,而且不同曝光的图像之间亮度关系基本是线性的,这就降低了图像降噪、亮度对齐等处理的难度。同时,raw数据的bit位数一般也会高于yuv数据,这样更有利于提升图像的动态范围,并可以设计更为灵活有效的色调映射等算法方案。

当然,raw数据也会给算法处理带来一定的困难。比如,raw数据比较原始,其噪声也会比较大(见下图),需要在HDR算法处理的过程中设计合理的降噪方案;同时,raw数据为bayer格式的,需要去马赛克后才能得到三通道信号,这也会给图像对齐等操作带来一定的困难。

db0602f9c532cf0c90e20ab2e24c55fa.png

(a)raw数据中的噪声

4c5454f15e2887c294537a6b011540a0.png

(b) raw数据为bayer格式

我们RAW HDR方案的整体框架如下图所示。输入中会有多帧正常曝光帧和其他曝光帧。多帧正常曝光帧会经过mfnr(多帧降噪)和单帧降噪等模块,得到一帧去除了噪声的正常曝光帧。其他曝光帧则首先经过单帧降噪模块进行噪声的去除,然后会对齐到正常曝光帧。

经过上述处理的正常曝光帧和其他曝光帧会进入合并模块。该模块会融合不同曝光帧的信息,从而得到高动态范围的图像。这个图像是高比特位的,会经过色调映射模块得到最终的结果。

e3b4cf7cbd58ec846e0cf39efafcd1e5.png

 >>>> 2.2 降噪模块:去除图像中的噪声

2.2.1 多帧降噪

多帧降噪模块主要通过融合多帧的信息以去除图像中的噪声。

由于相机和拍摄物体的移动,多帧图像之间需要进行对齐操作。常用的对齐方式有两种。一种是全局对齐,即假设两帧之间的移动满足一种全局变换的对齐方式。这种对齐方案比较简单,但在很多场景下,全局对齐的模型并不能有效建模两帧之间的移动,从而导致欠佳的对齐效果。另一种是局部对齐,该方式会考虑两帧之间的局部移动。典型的局部对齐方案有光流、分块匹配等。局部对齐一般能更好地对两帧间的移动进行建模,但存在对噪声和对齐初值比较敏感等问题。

我们在对多帧进行对齐的过程中会综合使用全局对齐和局部对齐的方法。首先进行基于特征点匹配的全局对齐,然后再进行局部对齐。局部对齐会对图像进行分块,并对各分块进行对齐。这样可以结合两种对齐方案的优点,取得不错的对齐效果。典型结果如下图所示,可以看到,经过对齐后,两帧间的差异得到明显减小。

32a5fe7577c434cc5dff9258ab0403df.png

(a)两帧输入图

a016470d01d5d398a10dce631a8ac347.png

  (b) 对齐前两帧差异                              (c) 对齐后两帧差异

对齐之后我们需要对多帧进行融合。我们采用加权平均的方式实现融合,权重主要取决于对齐后当前帧与参考帧的差异。由于遮挡、算法局限等原因,图像之间无法实现完全的对齐,将权重设为跟差异有关可以避免融合后图像中鬼影的出现。

2.2.2 单帧降噪

我们主要使用深度学习的方案进行单帧降噪。与双边滤波、nlm等传统降噪方案相比,深度学习方案一般能实现更好的降噪效果,特别是对噪声比较大的场景。

由于去噪模型是在手机端运行的,在模型设计时需要考虑模型的大小和运行速度等因素。我们采用了一个较小的基于改进unet的模型结构,同时会对模型进行量化加速。通过离线训练,降噪模型可以在保证模型运行速度的前提下,有效去除不同场景的噪声。典型的例子如下图所示。

4aeb5aa64976116913839ee25d5ea359.png

 (a)降噪前                                            (b) 降噪后

 >>>> 2.3 多帧合并模块:融合不同曝光图像的信息

其他曝光帧在经过单帧降噪和对齐(方案与mfnr中的对齐类似)后,会与正常曝光帧进行合并,得到高动态范围的图像。我们使用加权平均的方式实现多帧间的合并。在合并时按照尽量使用过曝时间更长帧的原则来设计权重。

考虑到短曝光帧的噪声往往高于长过曝帧,这样设计权重可以减少合并帧的噪声,也可以缓解参考帧非过曝区域的鬼影问题。对于参考帧过曝的鬼影区域,我们会使用inpainting进行填充。如下图所示,经过多帧合并模块,我们可以得到一帧包含了较大动态范围信息的高比特位图像。

d3408d665fbd8af470b5cdd4d3010edf.png

 >>>> 2.4 色调映射模块:对亮度范围进行压缩

86adfc61ebee30b3c2958a5414ce96e8.png

色调映射的目标是使得低比特位的图片也能尽可能显示出整个亮度范围的信息和细节。常用的色调映射方案主要包括全局色调映射和局部色调映射两种方式。全局色调映射会对图像的所有像素使用一条映射曲线进行变换。该类方案实现简单,但容易导致图像细节的丢失。当场景动态范围越大时,细节丢失的现象就越容易出现。与全局方案不同,局部色调映射在进行变换时会考虑图像的局部信息,可以避免细节丢失等问题的出现,但也可能会引入亮度反转等问题。

我们主要使用多尺度融合的方案以实现色调映射的目标,即通过对多帧合并模块输出的高动态范围图像乘以不同的gain值来模拟不同曝光帧,进而利用多尺度融合算法得到最终的结果。

123de30a4fe776af83111470cefefea2.png

(a)徕卡经典                                    (b)徕卡生动

我们实现了对徕卡经典和徕卡生动两种风格的支持,同时使用了AI场景识别、动态提亮、对比度增强等技术,使得最终的照片能够在保证高动态范围的同时实现适宜的明暗对比和自然的亮度过渡。典型场景下的照片如下图所示。通过合理的参数设计和方案优化,整体画质效果得到较大提升。

31fe9e7d52c9bd83d2c84c6642bf2317.png

eeac40b5faed9abf4b8b4b9d903e60c3.png

(a) HDR off图

6523801604090a2ccf6233427fae5d5b.png

5c8ab60c9211cee66f38d04340f06897.png

(b) HDR on图

三、技术未来演进

HDR拍照能够还原拍摄场景中的高光和暗部细节,有效提升照片的动态范围,在大多数手机中已经被广泛使用。相信随着算法、硬件等技术的发展,未来HDR拍照能够带来更好的拍照体验:

  1. 实现更高的动态范围,从而可以还原更多亮度范围的细节,呈现更真实的场景。

  2. 更加智能化。通过更多地使用AI技术,进一步提升照片质量,并更好地识别场景和物体类别,实现对不同场景的自适应。

  3. 更快的处理速度,从而使用户可以更快地拍摄照片。

我们后续将持续改进HDR方案的效果,争取为用户带来更好的高动态范围场景的拍照体验。

你还有哪些希望了解的技术?欢迎在评论区留言,我们将继续邀请工程师就大家关心的话题进行分享。更多硬核知识,请持续关注小米Tech Talk!

5d549a1661845ae546f0479d4078e89b.gif

8fb186f79dc7bab5be3740dacf149d92.png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tech Talk | 还原照片不同亮度范围细节——RAW HDR技术 的相关文章

随机推荐

  • Android手机中获取手机号码和运营商信息

    代码如下 xff1a package com pei activity import android app Activity import android os Bundle import android view View import
  • C语言下划线开头的函数

    首先 xff0c C 43 43 里关于下划线的问题是源于C语言 xff0c 因为C 43 43 允许用extern C 来修饰代码以C语言语法方式编译 然后说C语言里的下划线 xff1a C语言确实允许以下划线开头的函数存在 xff0c
  • 校验和计算方法

    1 说明 xff1a 1 校验和覆盖的内容 xff1a IP校验和 xff1a IP首部 ICMP校验和 xff1a ICMP首部 43 ICMP数据 xff1b UDP TCP校验和 xff1a 首部 43 数据 43 12个字节伪首部
  • 布谷鸟算法浅谈与简单应用

    简介 布谷鸟算法是由剑桥大学Xin She Yang教授和S Deb于2009年提出的一种新兴的启发算法 xff0c 是一种通过模拟自然界当中布谷鸟 xff08 也就是杜鹃 xff0c 故该算法也称为杜鹃算法 xff09 在繁育后代的行为而
  • torchvision中inception v3的实现

    一 torchvision中inception v3的网络结构 论文中给的结构如下图所示 但是torchvision中的inception v3结构中并不是这么实现的 下面解释一下torchvision中的inception v3结构 xf
  • 实践 基于Arduino 的 平衡车

    完成样子 因为只是学习验证 xff0c 没用电烙铁 xff0c 只用了面包板来连接各个组件 xff0c 中间用扎带固定 xff08 不稳定 xff09 完成后能基本保持平衡 xff0c 但太大力去推容易倒 平衡原理 通过负反馈实现平衡 xf
  • CMake入门-04-自定义编译选项

    工作环境 系统 xff1a macOS Mojave 10 14 6CMake Version 3 15 0 rc4 Hello World 自定义编译选项 CMake 允许为项目增加编译选项 xff0c 从而可以根据用户的环境和需求选择最
  • Linux 驱动开发简单实例

    Xiuye XY于 2021 08 03 19 17 07 发布343 收藏 3 分类专栏 xff1a 笔记 C C 43 43 Linux 版权 编辑笔记同时被 3 个专栏收录正在上传 重新上传取消 128 篇文章0 订阅 订阅专栏 编辑
  • ros下编译安装package

    原文地址 配置Release目录 catkin config install修改CMakeList txt文件 修改节点中CMakeLists txt文件 假设此处我们的节点项目名称为 test node 即CMakeLists txt中p
  • 什么是解耦?

    什么是解耦 解耦就是用数学方法将两种运动分离开来处理问题 对项目划分为多个模块这种做法你有什么看法 xff1f 优势 劣势有哪些 xff1f 多模块化项目优势在于 xff1a 提高代码的重用率 xff0c 可维护性高 xff0c 架构灵活
  • HDFS-Tiering 数据分层存储

    1 背景 随着小米业务迅猛发展 xff0c 存储到 HDFS 集群的数据量不断增大 xff0c 存储成本也不断攀升 尤其是海外 HDFS 集群每 GB 数据的成本是国内集群的 10 倍左右 xff0c 如何优化海外集群的存储成本变得非常迫切
  • 米家插件平台的技术实践之路

    2016年小米正式发布米家品牌 xff0c 此后米家开始接入第三方的智能硬件产品 xff0c 小米的IoT生态也迎来了快速发展 截止到2020年Q3 xff0c 小米AIoT平台已连接的IoT设备 xff08 不包括智能手机及笔记本电脑 x
  • 拥抱开源 | Xiaomi Vela团队成果连连,喜讯不断

    Xiaomi Vela是基于开源实时操作系统NuttX打造的物联网操作系统 xff0c Vela可以在各种物联网硬件上提供统一的软件平台 xff0c 通过丰富的组件和标准化的软件框架 xff0c 打通碎片化的物联网应用场景 今年Xiaomi
  • 将开源进行到底!小米新一代Kaldi荣获2022数博会“领先科技成果”奖

    5月26日 xff0c 数博会开幕式当天揭晓了 2022中国国际大数据产业博览会数博发布之领先科技成果 奖 xff0c 小米公司 新一代Kaldi 项目 xff0c 凭借全自研的创新成果和突出的社会价值 xff0c 获得评委会一致认可 xf
  • 小米AI实验室4篇论文入选语音技术顶会INTERSPEECH 2022

    滴滴 重磅消息新鲜出炉 xff01 xff01 全球语音领域顶级会议 INTERSPEECH 2022公布了论文入选名单 xff0c 小米 AI 实验室4篇论文被接收 INTERSPEECH 是由国际语音通信协会ISCA组织的语音领域的顶级
  • 干货 | 足式机器人运动控制发展方向——轨迹优化

    运动控制技术的进步使得足式机器人的运动能力更强 xff0c 而近来轨迹优化作为主流学术研究方向 xff0c 能够为足式机器人运动控制的发展提供可能的指引 本期技术干货 xff0c 我们邀请到了小米工程师徐喆 xff0c 向我们介绍足式机器人
  • GPS定位

    链接 天地图 xff0c 免费的 xff0c API开放的地图定位系统 链接 RTK和GPS定位 链接 rtk 精确定位 简介 链接 GPS RTK PPK三种定位技术的原理及应用 双频定位 xff0c 双频信号协同工作 xff0c 提供亚
  • 清华软件论坛 | 推动移动传感的极限:AIoT时代的智能健康和数字家庭

    清华软件论坛 xff0c 是在清华大学软件学院成立20周年之际创立的 xff0c 旨在探索软件科学基础理论 创新软件前沿技术 思辩软件工程方法 促进学科交叉融合 xff0c 持续提升清华软件发展水平 xff0c 清华大学软件学院打造 清华软
  • 国家级表彰 | 小米人工智能实验室声学语音团队荣获“全国工人先锋号”荣誉称号...

    小米人工智能实验室声学语音团队代表王育军接受央视采访 4月27日 xff0c 小米集团技术委员会人工智能实验室声学语音团队荣获由中华全国总工会颁发的 全国工人先锋号 荣誉称号 颁奖典礼在人民大会堂举行 xff0c 小米声学语音技术总监王育军
  • Tech Talk | 还原照片不同亮度范围细节——RAW HDR技术

    拍照时 xff0c 你是否遇到过这些情况呢 xff1f 拍摄的成片暗区过暗 xff0c 高亮区域过曝 逆光拍摄中 xff0c 会出现 鬼影 暗部噪声偏大导致图像出现瑕疵 照片的高光和暗区细节得总是不到完美呈现 xff0c 这是所有拍摄设备都