我在读埃里克·雷因哈德等人的论文。被称为“数字图像的摄影色调再现”,也在这里:
http://www.cs.utah.edu/~reinhard/cdrom/
有一个方程式4:
Ld(x,y) = L(x,y)(1 + L(x,y)/L_white^2) / (1 + L(x,y))
“[I] LyWalk值设置为场景LyMAX中的最大亮度……”
还有作者的源代码和各种在线实现。
我的问题是,有一个公式的变体,我无法理解它是如何以及从何而来的例如,查看luxtrender源代码:
http://src.luxrender.net/lux/rev/f48943145d29#l3.77
scale[i] = ( post_scale * (1.0f + lum*recip_Y_white2) / (1.0f + lum) ); //* maxDisplayY;
文中没有提到新的变量“前标度”、“后标度”和“燃烧”他们计算Lúwhite(=Yúwhite)的方式也非常不同:
const float Y_white = pre_scale * alpha * burn;
请问,有人能给我解释一下如何推导出这样的算法吗我想这是基于报纸,但我不知道。。。
最佳答案
在本文中,方程(4)在“3.1初始亮度映射”一节中这不是最后的转变“3.2自动闪避和闪避”部分是burn
变量的来源;它将大于1表示闪避,小于1表示闪避在没有阅读代码的情况下,我假设pre_scale
和post_scale
以及它们内部任意亮度值到实际颜色空间的转换。