如何更改sRGB图像的曝光?

时间:2018-05-05 02:10:15

标签: post-processing srgb exposure

我希望在进行进一步处理之前“标准化”一组图像的曝光。我尝试了以下方法: 1)在sRGB上每个维基百科页面将sRGB转换为CIE_XYZ; 2)将“Y”乘以或除以2,以实现1次EV变化; 3)将CIE_XYZ转换回sRGB。 问题是步骤3经常产生负值(它们在矩阵乘法之后出现以转换回线性rgb)。 特别地,我的sRGB值测试集具有形式(n,n,n),其中0 <= n <= 255。 我希望这些能够接近色域的中心,而且一站式改变不会让我走出色域。 这种方法有什么问题?

2 个答案:

答案 0 :(得分:0)

我相信user:1146345的注释是最准确的,因为它指的是raw-> rgb转换引入的非线性。因此,例如,从sRGB->线性RGB->乘以2 ^(增量停止)-> sRGB的转换在曲线的末端附近效果不佳。但是我们不知道如何表征这种非线性,因为它很可能随摄像机而变化。

答案 1 :(得分:0)

有很好的线性图像应用程序

使用诸如 Adob​​e AfterEffects 之类的应用程序,将其转换为线性是微不足道的,并且您所需的大多数工具仍然可用。不幸的是,Photoshop的32位浮点线性的实现功能较少。

尽管如此,一旦在32位浮点线性空间(gamma 1.0)中运行,那么您执行的所有线性数学函数在现实世界中都会像光一样起作用。在电影/电视行业,我们大多数时间都是线性工作,如果不是AfterEffects,则是Nuke或Fusion等。

但是,人的感知不是线性的-因此,尽管线性化图像数据的线性数学将表现出光的行为,但它并不与感知有关。如果要使用线性数学以线性方式影响感知,则需要使用在感知上统一的色彩空间,例如CIELAB。

让我们假设您想更改光度学“曝光”,然后要影响光值,因为它们在现实世界中会受到影响,因此您需要线性化图像数据。 AE在这里有帮助的工具-您首先将项目设置为32位浮点,然后选择适当的配置文件并“线性化”。确保打开显示颜色管理。

导入图像时,使用适当的配置文件将其“展开”到线性空间中。

如果不使用AE,而是使用MatLab或Octave,则应用sRGB传输曲线(又名gamma)将图像展开为线性空间。

S曲线等

我看到一些有关相机/去拜耳算法的评论,这些算法在高端或低端添加了S曲线(又称为“软剪辑”)。进入CIEXYZ并没有帮助,只会添加不需要的矩阵数学。

停留在sRGB

通常可以将sRGB线性化,并保持linearRGB用于各种操作。如果您将亮度按2比例缩放,那么您可能无论如何都要调整高片段-任何软片段都将随图像的其余部分一起缩放,这确实不是问题,这么长的时间因为您处于32位浮点中,所以不会有任何明显的量化误差,并且可以在曝光后调整S曲线。

如果需要,可以使用“曲线”来调整/扩展高端。 AE虽然也具有内置的ImageRAW导入器,所以您可以直接从RAW导入并将其设置为不压缩高光。

如果您无权访问RAW,而只有JPG,那么只要您使用的是32位线性格式,就可以了。完成所有操作后,只需重新应用gamma曲线,原始的S曲线将相对于图像高光保持不变,这通常是您想要的。

插件和伽玛

请注意,AE和PS以及其他确实具有可以影响此更改的“曝光”插件。

但还:

请记住,如果您想模拟真实的胶片,则每个彩色记录具有不同的伽玛值,并且在胶片中它们的相互作用要比sRGB中的数字值(本质上保持独立)的相互作用更大。

如果要模拟电影的外观,请尝试使用LEVELS插件,并分别使用每个颜色通道的gamma / hi / lo。或使用CUVES做同样的事情。