0

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

4

2 回答 2

0

我认为 user:1146345 的评论是最准确的,因为它指的是 raw->rgb 转换引入的非线性。因此,例如,从 sRGB -> 线性 RGB -> 乘以 2^(delta stop) -> sRGB 的转换在曲线末端附近将无法正常工作。但我们不知道如何表征这种非线性,因为它很可能因相机而异。

于 2019-07-06T21:37:23.157 回答
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,那么您可能无论如何都想要调整高剪辑 - 任何软剪辑都会与图像的其余部分一起缩放,这真的不是问题,这么久因为你是32bit浮点,所以不会有任何明显的量化误差,曝光后可以调整S曲线。

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

如果您无法访问 RAW 而只能访问 JPG,那么只要您处于线性 32 位,它应该没问题。完成所有操作后,只需重新应用 gamma 曲线,原始 S 曲线将相对于图像高光保持不变,这通常是您想要的。

插件和 Gamma

请注意,AE 和 PS 等确实有“曝光”插件可以影响这种变化。

但是也:

请记住,如果您想模拟真实的电影,每个颜色记录都有不同的伽玛,并且在电影中它们确实比 sRGB 中基本上保持独立的数字值相互作用更多。

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

于 2019-08-10T03:33:41.133 回答