最近在ISP中遇到Tone-mapping部分优化的需求,对于Tone-Mapping技术查了一些资料大概了解了一下,但是仍有许多从原理上搞不清楚的问题。
首先,Tone-mapping的出现。很多人说,是因为02年左右的游戏,需要做曲线压缩。我尚且认为:游戏制作时以物理世界为参考,直接根据物理光强设置像素值,而其像素值与物理意义一一对应,即1像素代表1cd/m2(大概这个意思,不是准确数值),然后生成了一个计算机物理世界,而其需要显示在显示器上时,发现能用的像素值只有8bit,但是它造出来的虚拟世界的像素值可能已经有10bit了,需要进行压缩。然后在线性压缩后发现很差,所以需要用到Tone-Mapping技术,来进行非线性压缩。
在这里可以看到,如果上述推论没错,那其实是将真实世界光强与显示器光强的一个映射关系,是HDR到SDR,但不是简单的10bit到8bit的压缩关系,因为离开了物理意义,这个转换也是没有根据的。
如果以上说法都正确,那么Tone-mapping的物理意义是利用一个小的动态范围,如一般显示器的0.05800cd/m2,利用韦伯定律,显示真实世界010000+的动态范围。那么,在以往的Tone-mapping算法中,为什么并未提及采集设备的动态范围和显示设备的动态范围,而是直接10bit转8bit?是否存在原理上的偏差?
此外,很多数据集,是10+bit图片,目标是8bit图片,脱离物理意义的话,这个转换完全没有意义。此外,评判Tone-mapping的指标有哪些?抛开艺术节的艺术效果等。
个人认为的groundtruth应该是真实场景,但因为不可能有真实场景给你做参考,所以退而求其次,应当以HDR显示器显示10bit图片(不做EOTF和OETF)当成groundtruth,当然,这需要HDR显示器能显示的动态范围与真实世界动态范围尽可能接近,否则,这个过程理论上也是需要Tone-mapping的。
针对以上提及的问题,期待指正。