首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改sRGB图像的曝光?

如何更改sRGB图像的曝光?
EN

Stack Overflow用户
提问于 2018-05-05 10:10:15
回答 2查看 297关注 0票数 0

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

EN

回答 2

Stack Overflow用户

发布于 2019-07-07 05:37:23

我相信user:1146345的评论是最准确的,因为它引用了raw->rgb转换引入的非线性。因此,例如,从sRGB ->线性RGB ->乘以2^(增量停靠点) -> sRGB的转换在曲线末端附近将不能很好地工作。但我们不知道如何描述这种非线性,因为它很可能因相机而异。

票数 0
EN

Stack Overflow用户

发布于 2019-08-10 11:33:41

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

使用诸如Adobe AfterEffects这样的应用程序,转换为线性是微不足道的,并且您需要的大多数工具仍然可用。不幸的是,Photoshop的32位浮点线性实现功能较差。

然而,一旦进入32位浮点线性空间(伽马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导入,并将其设置为不压缩高光。

如果您不能访问原始数据而只能访问JPG,那么同样,只要您是线性32位的,它就会很好。完成所有操作后,只需重新应用gamma曲线,原始S曲线将相对于图像高光保持不变,这通常是您想要的。

插件和Gamma

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

还有:

请记住,如果您想要模拟真实的胶片,每个颜色记录都有不同的伽马,并且在胶片中,它们之间的交互确实比sRGB中的数字值更多,后者基本上保持分离。

如果您正在尝试模拟电影外观,请尝试使用色阶插件并分别使用每个颜色通道的gamma/hi/lo。或者使用线索来做同样的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50185052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档