Tone mapping进化论

Tone mapping进化论
https://zhuanlan.zhihu.com/p/21983679?refer=highwaytographics

Reinhard tone mapping非常简单,用代码描述就三行。

float3 ReinhardToneMapping(float3 color, float adapted_lum)
{
    const float MIDDLE_GREY = 1;
    color *= MIDDLE_GREY / adapted_lum;
    return color / (1.0f + color);
}

粗暴派

到了2007年,孤岛危机(Crysis)的CryEngine 2,为了克服Reinhard灰暗的缺点,开始用了另一个tone mapping的方法。前面提到了tone mapping就是个S曲线,那么既然你要S曲线,我就搞出一个S曲线。这个方法更简单,只要一行,而且没有magic number。用一个exp来模拟S曲线。

float3 CEToneMapping(float3 color, float adapted_lum)
{
    return 1 - exp(-adapted_lum * color);
}

CE的曲线中间的区域更偏向于小的方向,这部分曲线也更陡。

拟合派

到了2010年,Uncharted 2公开了它的tone mapping方法,称为Filmic tone mapping。当年我也写过一篇博客讲KlayGE切换到Filmic tone mapping的事情。这个方法的本质是把原图和让艺术家用专业照相软件模拟胶片的感觉,人肉tone mapping后的结果去做曲线拟合,得到一个高次曲线的表达式。这样的表达式应用到渲染结果后,就能在很大程度上自动接近人工调整的结果。

最后出来的曲线是这样的。总的来说也是S型,但增长的区域很长。

那么这条路径有多小呢?只要几行,系数来自于Krzysztof Narkowicz的博客文章。

float3 ACESToneMapping(float3 color, float adapted_lum)
{
    const float A = 2.51f;
    const float B = 0.03f;
    const float C = 2.43f;
    const float D = 0.59f;
    const float E = 0.14f;

    color *= adapted_lum;
    return (color * (A * color + B)) / (color * (C * color + D) + E);
}

看着很像Uncharted 2的做法吧,都是多项式拟合。但是式子比Uncharted的简单,并不需要算两个多项式并相除,只要算一个,一次搞定。它的曲线是这样的。

可以看出来,比之前的任何一个都要鲜艳,并且没有因此丢掉细节!当之无愧成为目前最好的tone mapping算法。

更好的地方是,按照前面说的,ACES为的是解决所有设备之间的颜色空间转换问题。所以这个tone mapper不但可以用于HDR到LDR的转换,还可以用于从一个HDR转到另一个HDR。也就是从根本上解决了VDR的问题。这个函数的输出是线性空间的,所以要接到LDR的设备,只要做一次sRGB校正。要接到HDR10的设备,只要做一次Rec 2020颜色矩阵乘法。Tone mapping部分是通用的,这也是比之前几个算法都好的地方。

目前一些新的游戏,比如Rise of the Tomb Raider、UE 4.8,也都切换到ACES的tone mapping曲线。

Tonemapping是数字图像处理领域中的一项技术,旨在将高动态范围(HDR)图像转换为低动态范围(LDR)图像,以便在标准显示设备上显示。HDR图像具有比标准LDR图像更大的亮度范围和更高的对比度,因此需要进行转换才能在设备上适当地呈现。Tonemapping技术可以将HDR图像的亮度范围压缩到与LDR图像相同的范围内,同时保留图像的细节和视觉效果。 Tonemapping算法有很多种,包括基于本地操作和全局操作。本地操作中,根据像素的局部特性选择不同的曲线扭曲函数,以改变局部亮度差异,使图像看起来更加自然。全局操作则是通过在整个图像上应用同一曲线来调整整个图像的亮度和对比度。基于本地操作的算法包括Reinhard等人提出的常用代表KIM图像和Durand等人提出的Bilateral Tone Mapping算法。基于全局操作的算法包括Xu等人提出的Modified Local Low Dynamic Range Tone Mapping算法,以及Fattal等人提出的基于峰值调制的Tone Mapping算法等。 Tonemapping技术在视觉效果、图像细节等方面有显著的改进。它在各种应用中都得到广泛的应用,包括电影、摄影和计算机游戏。然而,Tonemapping仍然存在一些挑战,例如折衷处理时需要平衡亮度和对比度,以及如何处理镜头光晕和色差等问题。因此,未来的研究方向将专注于解决这些问题和提高Tonemapping算法的效率和质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值