Fast Tone Mapping for High Dynamic Range Images

Abstract

我们提出了一种快速、有效、灵活的色调再现方法,在低动态范围再现设备中保留了高动态范围场景的可视性和对比度印象。 一个单一的参数控制能见度和对比度在一个简单和优雅的方式和互动速度。 新方法使用简单,计算效率高。 实验表明,该方法对多种高动态范围图像都有较好的效果。 该方法也可用于普通低动态范围数字图像的增强。

1. Introduction

我们在日常生活中所经历的真实世界场景通常有非常广泛的亮度值。人类视觉系统能够感知5个数量级以上的场景,能够逐步适应9个数量级以上的动态范围的场景。随着数字成像技术的快速发展,人们对捕捉景物的全动态范围的数码照片越来越感兴趣。尽管可以想象,未来的数码相机将能够通过点击一个按钮来捕捉高动态范围(HDR)的照片,但目前的技术往往只能使真实世界的部分高动态场景在任何一个镜头中可见。图1演示了这样一个场景。这是一个室内场景,阳光透过窗户照射进来,相机被放置在黑暗的一端。为了使窗口附近的特征可见,使用了较短的曝光。然而,这使得场景远离光源太暗。为了使暗端的特征可见,我们增加了曝光间隔。另一方面,这一次,靠近窗户的区域变得饱和。然而,对人类的观察者来说,所有最暗和最亮区域的特征都能同时清晰地看到。如何使所有这些特征在如此大范围的亮度下同时在一张数码照片中可见,是我们在本文中要解决的问题。

事实上,最近的技术已经使得创建数值亮度地图相对容易,可以捕捉真实世界场景[1]的全部动态范围。利用同一场景在不同曝光间隔下拍摄的一系列低动态范围(LDR)图像,可以生成场景的HDR亮度图。

 辐射度图以数值格式记录了场景的全部动态范围。 然而,大多数再现设备,如CRT监视器或打印机,只能再现不超过几个数量级的图像,这大大低于辐射度图数据的动态范围。 为了在LDR设备中再现HDR映射,使用映射或音调再现技术将HDR值映射到LDR值。

本文提出了一种将HDR场景映射到LDR再现设备的新算法,使LDR显示中原始场景的可见性和视觉对比度得到很好的保留。 论文的组织结构如下。 在第2节中,我们简要回顾了以前的工作。 第三节提出了一种新的高动态范围数据到低动态范围显示的快速映射算法。 第4节给出实验结果,第5节总结全文。

2. Related Work

高动态范围图像越来越受到人们的关注。 在过去的十年左右,许多技术已经发展起来,用于高对比度图像的色调再现。 有两大类技术,即基于音调再现曲线(TRC)和基于音调再现算子(TRO)[2]。

TRC指的是操纵像素分布的技术。 在这一范畴中,早期的开创性工作包括[3]的工作,它引入了一种色调再现方法,试图使显示器亮度与现实世界的感觉相匹配。 最近,[4]提出了一种色调映射方法,该方法模拟了人类视觉系统的某些方面。 也许在这一类别中最全面的技术是[5]的技术,它引入了一种相当复杂的色调再现曲线技术,结合了人类对比度敏感度、眩光、空间敏感度和颜色敏感度的模型。

TRO技术涉及局部邻近像素值的空间操作,通常在多个尺度上。 这种技术的科学原理是基于图像形成模型:I(x,y)=L(x,y)R(x,y),该模型表明图像强度函数I(x,y)是亮度函数L(x,y)和场景反射率函数R(x,y)的乘积。 由于现实世界的反射率R(x,y)具有较低的动态范围(通常不超过100:1),如果可以将L(x,y)与R(x,y)分开,可以通过减小L(x,y)的动态范围来减小I(x,y)的动态范围。 基于这一原理的方法有[6]、[7]和[8]。 它们主要在试图将亮度分量与反射率分量分开的方式上有所不同。

最近的发展还试图将传统的摄影技术纳入数字领域,以复制高动态范围的图像[9]。

在高动态范围压缩方面,一个非常令人印象深刻的最新发展是[10]。基于人类视觉系统只对相对局部对比度敏感的观察,作者提出了一种多分辨率梯度域技术。TRC方法不涉及空间处理,因此计算速度非常快。

TRO方法涉及多分辨率空间处理,因此计算成本更高。由于TRO方法可以逆转局部对比度,有时会在复制过程中造成“光晕”效应。传统技术的另一个困难是,用户需要设置太多的参数,这使得他们很难使用。

3. A New TRC-based Tone Mapping Method

对于高动态范围映射,至少有两个要求。首先,它必须确保所有的特征,从最暗到最亮,同时可见。其次,要保留原场景的视觉对比,使其产生与原场景相匹配的视觉感受。在某种意义上,这两个要求是相互冲突的。随着动态范围的缩小,用于显示场景的可用值是有限的。如果一个人把所有的特征都表现出来,我们就可以减弱对比。另一方面,如果一个显示良好的对比,那么一些特征可能不可见。在有限的显示动态范围约束下,一种好的色调再现方法必须在这两种相互冲突的要求之间取得良好的平衡。

为了保持原始场景的视觉对比度,最好的方法是将像素从高动态范围线性映射到低动态范围。 然而,由于显示设备中的动态范围比原始场景的范围要窄得多,因此会因压缩而损失可见度。 此外,线性映射以相同的方式映射所有值,低动态范围中的一些值可能是空的,从而导致所有可显示值的利用不足。 在另一个极端,可以渲染充分利用所有可显示值并具有最大对比度的低动态范围图像,即直方图均衡化。 然而,这将改变原始场景的视觉印象,因为它夸大了密集像素值间隔中的对比度,而过于激进地压缩了稀疏像素值间隔。 一个好的色调再现算法必须在线性映射和良好的视觉对比度之间取得平衡。

对于任何高动态范围压缩技术,无论是基于TRC的还是基于TRO的,高动态范围图像中的一些值都必须合并并在低动态范围设备中显示为一个单一值。 关键是决定高动态场景中哪些值要合并在一起。 在基于TRO的技术中,像素的空间上下文在决策中起作用,而在基于TRC的技术中,空间上下文不是考虑的一部分。 虽然基于TRO的技术将显式地保留,有时甚至增强局部对比度,但它们通常计算量更大,需要更多的手动调整参数,因此不太容易使用。 我们提出了一种计算简单、有效且易于使用的基于TRC的高动态范围压缩技术。

与其他技术类似,我们只在亮度通道上工作,所有的操作都在对数空间中执行。 为了说明原理,图3显示了图2的HDR辐射度图的直方图。 我们的方法是基于一个相当简单的观察,即在任何给定的图像中,有人口密集的区域,也有人口稀少的区域。 色调映射算法应在保持原始场景的相对对比度的前提下,为人口密集的区域分配相对较多的显示值,为人口稀少的区域分配相对较少的显示值。 这样的操作将更多地压缩直方图的稀疏区域,而更少地压缩密集区域(甚至可能稍微扩展)。 虽然可能有许多可能的方法来实现这个想法,但我们给出了一个分层的、计算简单且灵活的实现。

 3.1. An Implementation

 

 4. Experimental Results

 

 5. Conclusions

本文提出了一种计算效率高、使用简单的高动态范围压缩技术。 结果证明了新技术的有效性。

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

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

相关文章

Spring Boot Actuator未授权访问漏洞

1.问题 Spring Boot Actuator 端点的未授权访问漏洞是一个安全性问题,可能会导致未经授权的用户访问敏感的应用程序信息。 可是并不用太过担心,Spring Boot Actuator 默认暴漏的信息有限,一般情况下并不会暴露敏感数据。 注册中心有些功能集…

Jenkins+Docker+SpringCloud微服务持续集成

JenkinsDockerSpringCloud微服务持续集成 JenkinsDockerSpringCloud持续集成流程说明SpringCloud微服务源码概述本地运行微服务本地部署微服务 Docker安装和Dockerfile制作微服务镜像Harbor镜像仓库安装及使用在Harbor创建用户和项目上传镜像到Harbor从Harbor下载镜像 微服务持…

RK3568蓝牙程序开发过程

1、搭建蓝牙开发环境 蓝牙开发可以使用C语言开发或python语言开发,使用的是蓝牙开发库为bluez库。 本文开发使用python语言开发,安装bluez库,可以使用pip install PyBluez来安装。 如果安装不上的话,可以使用sudo apt install pyt…

Kafka与Zookeeper版本对应关系

文章目录 了解版本对应Kafka安装包Kafka源码包 了解 比如: kafka_2.11-1.1.1.jar包 其中2.11表示的是Scala的版本,因为Kafka服务器端代码完全由Scala语音编写。”-“后面的1.1.1表示的kafka的版本信息。遵循一个基本原则,Kafka客户端版本和服…

无涯教程-Perl - getnetbyname函数

描述 此函数返回由NAME指定的网络信息(在列表context中)($name,$aliases,$addrtype,$net) 语法 以下是此函数的简单语法- getnetbyname NAME返回值 此函数在错误时返回undef,否则在标量context中返回网络地址,在错误时返回空列表,否则在列表context中返回网络记录(名称,别…

pandas 笔记 date_range

返回固定频率下的datetime 1 使用方法 pandas.date_range(startNone, endNone, periodsNone, freqNone, tzNone, normalizeFalse, nameNone, inclusiveboth, *, unitNone, **kwargs) 2 基本参数 start、end、periods至少需要两个 start生成日期的左边界end生成日期的右边界…

错误: XXXAdapter不是抽象的, 并且未覆盖Adapter中的抽象方法onBindViewHolder(ViewHolder,int)

一、问题描述 在学习Android可侧滑删除的RecyclerView的时候,遇到了下面的报错 错误: SwipeDelAdapter不是抽象的, 并且未覆盖Adapter中的抽象方法onBindViewHolder(ViewHolder,int) public class SwipeDelAdapter extends RecyclerView.Adapter { ^ 在上面的…

java springboot word文档转pdf

java springboot word文档转pdf 1、环境2、依赖3、代码 1、环境 1、java、springboot 2、maven或者gradle 3、办公软件(自己电脑上的wps或者office等,如果部署到服务器上也要安装,linux、Mac 都有,自己安装) 可能会遇…

用zabbix实现web监控

上篇我们说到了用最简单的web页面监控,如果你的页面只有ip和port就可以访问的话,那么简单的监测没有问题了。如果……开发给你的网站在后边加了个目录呢?那么就绕不开了web场景监控了。 一、添加模板 在【模板】上新建一个模板,…

操作系统—调度算法

进程调度算法 进程调度算法也称CPU调度算法 调度发生时期 当进程从运行状态转到等待状态;当进程从运行状态转到就绪状态;当进程从等待状态转到就绪状态;当进程从运行状态转到终止状态; 其中发生在 1 和 4 两种情况下的调度称为…

[QCM6125][Android13] 关闭救援模式

文章目录 开发平台基本信息问题描述解决方法 开发平台基本信息 芯片: QCM6125 版本: Android 13 kernel: msm-4.14 问题描述 安装系统在未响应5分钟的时候,系统会自动进入救援模式,这时候需要通过音量键和电源键进行操作才能再次进入系统。对于无人值…

物理层扩展以太网

扩展站点与集线器之间的距离:   在10BASE-T星型以太网中,可使用光纤和一对光纤调制解调器来扩展站点与集线器之间的距离。   为站点和集线器各增加一个用于电信号和光信息号转换的光纤调制解调器,以及他们之间的通信光纤。 扩展共享式以太…

Unity开发笔记:截取指定位置含有UI的场景截图并输出

学习记录整理,自用,也希望能帮助到有相同需求的人。 如果直接截全图: string screenshotName "Assets/Textures/UI/20230803/2.png";ScreenCapture.CaptureScreenshot(screenshotName);截取指定位置含有UI的场景截图: …

uniapp input输入框placeholder文本右对齐

input输入框placeholder文本右对齐 给input标签加上placeholder-class,这个是给placeholder设置样式,右对齐这就是text-align:right;字体颜色之类依次编辑即可。

flutter开发实战-TextPainter计算文本内容的宽度

flutter开发实战-TextPainter计算文本内容的宽度 最近开发过程中根据Text文本的大小判断是否需要进行显示跑马灯效果,获取文本的大小,需要TextPainter来获取Size 一、TextPainter TextPainter主要用于实现文本的绘制。TextPainter类可以将TextSpan渲染…

Babylon.js着色器简明简称【Shader】

推荐:用 NSDT设计器 快速搭建可编程3D场景 为了生成 BabylonJS 场景,需要用 Javascript 编写代码,BabylonJS 引擎会处理该代码并将结果显示在屏幕上。 场景可以通过改变网格、灯光或摄像机位置来改变。 为了及时显示可能的变化,屏…

JS实现数组扁平化的 8 种方式

八种数组扁平化方法的使用场景和优缺点 以下是八种数组扁平化方法的使用场景和优缺点: 1. 使用递归: 使用场景:当需要对任意层级的嵌套数组进行扁平化时,递归是一种简单且通用的方法。优点:简单易懂,适用…

【架构设计】如何设计一个高性能短链系统

一、前言 所谓系统设计,就是给一个场景,让你给出对应的架构设计,需要考虑哪些问题,采用什么方案解决。很多面试官喜欢出这么一道题来考验你的知识广度和逻辑思考能力。 虽然各个系统千差万别,但是设计思想基本一致&a…

【考研复习】24王道数据结构课后习题代码|2.3线性表的链式表示

文章目录 总结01 递归删除结点02 删除结点03 反向输出04 删除最小值05 逆置06 链表递增排序07 删除区间值08 找公共结点09 增序输出链表10 拆分链表--尾插11 拆分链表--头插12 删除相同元素13 合并链表14 生成含有公共元素的链表C15 求并集16 判断子序列17 判断循环链表是否对称…

Android Studio实现刮刮卡效果

代码和刮刮乐图片参考网络 实现效果 MainActivity import android.app.Activity; import android.os.Bundle;public class MainActivity extends Activity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentVi…