快门背后的机器学习:实时 HDR+ 和双重曝光控制
文 / Google Research 软件工程师 Jiawen Chen 和 Sam Hasinoff
高动态范围 (HDR) 成像技术是一种用于拍摄明暗跨度(从暗部阴影到亮部高光)较大场景的方法。在 Pixel 手机上,HDR 成像背后的引擎是 HDR+ 高速连拍摄影技术,其中涉及专门捕获欠曝光的快速连拍图像,对图像进行融合,并以能够保留整个色调范围中内部细节的方式对其进行渲染。最近以来,HDR+ 技术面临的一项挑战是设备无法实时计算(即每秒 30 帧),这会导致取景器中呈现的影像与最终结果不符。例如,在取景器中观察到的天空是亮白色的,而实际使用 HDR+ 技术摄得的天空却是蓝色的。
HDR 成像背后的引擎
https://ai.googleblog.com/2018/02/introducing-hdr-burst-photography.htmlHDR+ 高速连拍摄影技术
https://hdrplusdata.org/
从 Pixel 4 和 4a 开始,我们使用基于机器学习的 HDR+ 近似方法对取景器进行优化,我们称之为 实时 HDR+。这一技术提供了最终效果的实时预览,使 HDR 成像更加可预测。我们还打造了 双重曝光控制,将经典的“曝光补偿”滑块拆分为两个控件,分别用于调整阴影和高光的呈现效果。实时 HDR+ 与双重曝光控制相结合,为 HDR 成像提供了实时的更有表现力的控制能力。
Pixel 4 和 4a 搭载的实时 HDR+ 技术可以帮助用户使用所见即所得的取景器进行拍摄,呈现出与最终结果非常接近的效果
HDR+ 效果
当用户在 Pixel 相机应用中按下快门时,相机将拍摄 3-15 张欠曝光图像。这些图像会被对齐并融合以针对阴影部分进行降噪,生成一张 14 位宽的“线性 RGB 图像”中间结果,其像素值与场景亮度成正比。但图像的“色调映射”算法才是使 HDR+ 图像具有标志性效果的技术,它可将像素位宽缩小到 8 位并使图像适于显示。
降噪
https://ai.googleblog.com/2018/11/night-sight-seeing-in-dark-on-pixel.html
请参见以下几张摩托车手的背光照片。虽然线性 RGB 图像在较暗的摩托车和明亮的天空区域都包含细节,但却因动态范围过大而无法呈现出这些细节。呈现更多细节的最简单方法是将一个“全局曲线”应用至图像,将亮度为特定值的全部像素重新映射到某个新值(直方图均值化)。但是,对于同时包含阴影和高光细节的 HDR 场景,没有任何单个曲线能够生成令人满意的效果。
色调映射线性 RGB 图像的不同方法:(a) 原始的“无色调映射”图像;(b) 用于优化天空的全局曲线;(c) 用于优化被摄对象的全局曲线;(d) 保留任何部位细节的 HDR+。在二维直方图中,亮度越高的区域表示有更多指定输入亮度的像素被映射到同一输出。形状出现重叠表明不能使用单条曲线来建立关系模型。照片由 Nicholas Wilson 提供
与应用单条曲线相比,HDR+ 使用 局部 色调映射算法可确保最终结果在各处均包含细节,同时保持边缘与纹理使得成像效果更加自然。基于全局亮度、局部纹理和噪点数量等因素,使得不同的曲线能有效应用于不同的区域。但问题是,HDR+ 技术速度过慢而无法在取景器中实时运行,因此需要为实时 HDR+ 技术寻找一种替代方法。
为实现实时 HDR+ 而生的局部近似曲线
使用单个色调曲线无法为整个图像生成令人满意的结果,但是对于较小的区域呢?请参见下图中的小尺寸红色图像块。尽管该图像块中同时包含了阴影和高光,但是输入和输出亮度之间的关系呈平滑曲线。此外,曲线的变化是渐进式的。对于蓝色图块,向右滑动十个像素后,图像内容和曲线都与红色贴图相似。虽然近似曲线适用于小尺寸图块,但在较大的图块中却存在问题。对于较大的黄色贴图,输入/输出关系则更为复杂,使其难以近似为单个曲线。
(a) 输入和 HDR+ 结果;(b) HDR+ 对小贴图(红色)的效果近似为平滑曲线;(c) 对于附近的蓝色贴图,关系几乎相同;(d) 但是,如果贴图过大,则单条曲线将不再有效
为了应对这一挑战,我们将输入图像拆分为大小约等同于上方红色贴图的“图块”,并为每个图块使用一条曲线以实现近似 HDR+效果。由于这些曲线的变化是渐进式的,因此在曲线之间实施融合便易于达到近似的最佳曲线的效果。为了渲染像素,我们分别采用距离最近的四个图块所对应的曲线,然后根据与各个图块中心点之间的距离融合结果。
与 HDR+ 相比,该算法特别适合 GPU 。由于每个像素的色调映射可以独立计算,因此该算法也可以并行执行。此外,图像的呈现非常节省内存:仅少量的图块就足以在取景器中呈现 HDR+ 局部色调映射效果。
为了计算局部曲线,我们使用一种名为 HDRnet 的机器学习算法,这一深度神经网络可以基于线性图像来预测近似于该图像 HDR+ 效果的每个图块的曲线。由于其紧凑的架构,以及基于输入图像的低分辨率采样来预测高分辨率取景器的曲线,因此该技术的运行速度也很快。我们在数以千计的图像上训练 HDRnet,以确保其在各种场景下都能正常工作。
HDRnet 与 HDR+ 处理具有极大明暗跨度的挑战性场景的对比图:在取景器分辨率下,结果非常相似。照片由 Nicholas Wilson 提供
双重曝光控制
HDR+ 旨在自动生成令人愉悦的 HDR 图像,而无需手动控制或后期处理。但是,有时 HDR+ 的表现效果可能不符合摄影师的审美要求。虽然可以使用图像编辑工具来适度补救,但是 HDR 图像的可编辑性并不高,因为成像过程已固化在最终的 JPG 格式文件内。为了最大程度提高可编辑性,用户可以在每次拍摄时保存 RAW 图像(在应用中通过选项以启用该特性)。但是,该过程容易使摄影师错过精彩瞬间,并且需要 RAW 编辑工具的专业知识以及额外的存储空间。
实现艺术控制的另一种方法是将影像实时呈现在取景器中。许多摄影师都熟悉使用曝光补偿滑块来调节图像的亮度。但是,整体的亮度调节对于 HDR 摄影的表达则不够充分。至少需要两个控件来分别控制高光和阴影。
为了解决这个问题,我们引入了双重曝光控制。当用户点击 Live HDR+ 取景器时,将出现两个滑块。“亮度 (Brightness)”滑块的作用类似于传统的曝光补偿,用于改善图像整体曝光。此滑块可用于在拍摄明亮天空时恢复更多细节,或故意淡化背景并使被摄对象更清晰可见。“Shadows (阴影)”滑块仅作用于暗部区域 - 它的工作方式是更改色调映射而非曝光度。此滑块对于高对比度场景最为适用,使用户能够提亮阴影以显示更多细节,或压低阴影以打造剪影效果。
上图为在室外 HDR 场景中使用双重曝光控制的屏幕截图,下图为 HDR+ 成像结果。照片由 Florian Kainz 提供
以下是我们使用双重曝光控制所能实现的一些引人入胜的艺术表现样张。
使用双重曝光控制拍摄的不同表现手法的样张,此处查看各个图像。照片来源:Jiawen Chen、Florian Kainz、Alexander Schiffhauer
此处
https://photos.app.goo.gl/9QrvhXyJVKKCvGWh6
双重曝光控制使您能够对同一对象灵活地拍摄出截然不同的版本。它们不受限于复杂的 HDR 场景,因此不要害怕尝试在不同的对象和照明条件下展现您的创意。您可能会惊讶于这些滑块为您的拍摄带来的变化!
致谢
实时 HDR+ 和双重曝光控制是 Google Research、Android、硬件和 UX 设计团队共同合作的成果。主要贡献者包括:Francois Bleibel、Sean Callanan、Yulun Chang、Eric Chen、Michelle Chen、Kourosh Derakshan、Ryan Geiss、Zhijun He、Joy Hsu、Liz Koh、Marc Levoy、Chia-Kai Liang、Diane Liang、Timothy Lin、Gaurav Malik、Hossein Mohtasham、Nandini Mukherjee、Sushil Nath、Gabriel Nava、Karl Rasche、YiChang Shih、Daniel Solomon、Gary Sun、Kelly Tsai、Sung-fang Tsai、Ted Tsai、Ruben Velarde、Lida Wang、Tianfan Xue、Junlan Yang。
更多 AI 相关阅读:
Coral 的近期更新
使用 Panoptic-DeepLab 改善整体场景理解
推出 RepNet:计算视频中的重复片段
开讲啦!推出 TinyML 免费课程,引领边缘 AI 浪潮
对偶性解法,赋予强化学习更多可能性!
玩转 TensorFlow 社区开源贡献,看这篇就够了!
快门背后的机器学习:实时 HDR+ 和双重曝光控制相关推荐
- 【Google 开发者大会】Google 面馆营业啦!揭秘拉面背后的机器学习技术
代码不止,活力不止!谷歌面馆"营业"中! 想体验一把拉面大师的快感? 现在前往 2020 Google 开发者大会官网 马上创建自己的"代码拉面"! 来谷歌面馆 ...
- Google 面馆营业啦!揭秘拉面背后的机器学习技术
代码不止,活力不止! 谷歌面馆正式"营业" 想体验一把拉面大师的快感? 现在前往 2020 Google 开发者大会官网 马上创建自己的"代码拉面"! 来谷歌面 ...
- 深度学习光环背后,机器学习的一些新进展!!!
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 来源 | Reddit ML 版 编译 | 杨晓凡 从神经网络被学术界排挤,到计算 ...
- 推出 BlazePose:实现设备端实时人体姿态追踪
文 / Valentin Bazarevsky 和 Ivan Grishchenko,研究工程师,Google Research 在增强现实.手语识别.全身姿态控制以及量化周期循环等领域中,视频中的姿 ...
- 实时智能决策引擎在蚂蚁金服风险管理中的实践
摘要:以"数字金融新原力(The New Force of Digital Finance)"为主题,蚂蚁金服ATEC城市峰会于2019年1月4日上海如期举办.金融智能专场分论坛上 ...
- 马蜂窝事件背后暴露出的数据风险
近日,针对马蜂窝"数据造假"的文章刷屏网络.文章指出,马蜂窝2100万条真实点评中,有1800万条是通过机器人从点评.携程等其他平台抄袭而来.作者表示,在马蜂窝上发现了7454个抄 ...
- 实时计算 Flink 版应用场景解读
简介:本文由阿里巴巴高级产品专家陈守元老师分享,详细讲解实时计算 Flink 的具体业务场景并分享实时计算 Flink 的相关应用案例. 作者:陈守元(巴真),阿里巴巴高级产品专家 摘要:本文由阿里巴 ...
- 机器学习在生活中的九大有趣应用
No1:虚拟个人助理 Siri.小冰.度秘是现在虚拟个人助理的典型例子.顾名思义,当你通过语音询问时,他们便会找寻相应的信息,比如你问"我今天的日程安排是什么?""从德国 ...
- 42个机器学习练手项目
从个性化推送(今日头条).自拍美颜.自动翻译,到无人驾驶.图像识别等诸多领域--人工智能已经渗透进我们生活的方方面面,人工智能背后的机器学习和深度学习技术,也成为了"高薪"的代名词 ...
最新文章
- uber_Uber是如何制成的
- 如何更高效、系统地学习三维点云原理与方法?
- 【Spark Summit East 2017】BigDL:Spark上的分布式深度学习库
- 动态嵌套游标解决方案
- Android 混淆详解
- Linq表达式、Lambda表达式你更喜欢哪个?
- 【数据结构与算法】之深入解析“汉诺塔问题”的求解思路与算法示例
- mybatis中mapUnderscoreToCamelCase自动驼峰命名转换
- 判断一个链表是否为循环单链表
- 【搜索/推荐排序】总结
- Qt Package Project 打包发布程序
- 数据库MySQL/mariadb知识点——操作篇(4)数据操作语句
- 《码农翻身》之浪潮之巅的Web
- XcodeGhost事件冷思考:智能时代的达摩克利斯之剑
- php命名空间namespace应用
- Debian10上使用360随身Wifi
- 网络机顶盒固件提取、编辑和打包
- 第6章---机器人系统仿真
- AT32F437基于LVGL的桌面显示案例
- 职业生涯的7个发展阶段及如何在每个阶段成功?
热门文章
- 文件扩展名有误?怎么批量修改文件扩展名?
- 微信小程序动态点赞php,微信小程序小组件基于Canvas实现直播点赞气泡效果
- 财务报表包含哪些表?是季报还是月报?
- 尝试编写一个加密程序,加密方法将明文的字母变成其后的第4个字母,**字母表首尾相连。非字母符号** 不加密。 例如输入“China“, 输出密文“Glmre“, 输入 “ab123“, 输出 “ef1
- 高德地图报错USERKEY_PLAT_NOMATCH解决办法 + 通过经纬度获取当前位置
- mac安装postgresql并启动
- 【C++自学笔记 提高编程篇(二)STL初识】
- go语言 | jwt鉴权初涉
- Day02-初识计算机
- 一篇文章贯通wpf的本质(W我P佩F服)