图形程序中颜色配置文件的作用

8

我认为我了解色彩配置文件是什么。但我不明白,在Photoshop中处理照片时,以16bpp sRGB16bpp Adobe RGB有何区别?我的显示器只能显示sRGB。

  • 算法上是否有差异?
  • 程序在显示效果之前是否执行了预处理(例如在我的显示器上,AdobeRGB(0.3,0.25,0.82)会被显示为sRGB(0.301,0.253,0.819))?
  • 如果我没有使用监视器/打印机的ICC配置文件,使用不同的色彩配置文件是否有意义?
  • 总体来说 - 如果我想开发自己的图形处理应用程序,支持不同于sRGB的配置文件(例如在Qt中),该怎么做?
3个回答

1
您的图像使用的色彩空间决定了您的每个像素的16位应如何与您的显示器输出相关联,即它确定数字实际表示的颜色。
如果某些算法旨在产生逼真、自然或一致的结果,则这可能会影响算法的处理方式。
假设您在深红色背景上叠加半透明的黄色?你会得到什么样的棕色?如果算法总是以相同的方式混合像素数据,那么即使黄色和红色在您的显示器上看起来相同,由于您的色彩空间不同,得到的棕色也可能不同。
更“正确”的混合方法是将像素数据转换为一致的色彩空间,进行混合,然后再转换回来。如果原始颜色在具有不同校准文件的两个监视器上看起来相同,则它们将转换为一致色彩空间中的相同数字,并且混合结果将转换回成像相同的结果,尽管像素值可能不同。
半透明自然合成是需要考虑您的色彩空间以产生逼真结果的良好示例。其他必须看起来“自然”的效果,例如高光、阴影等,同样需要在一致的色彩空间中进行物理上准确的数学计算。

回答您的具体问题:

  1. 是的,正如解释的那样,许多算法应该使用不同的颜色空间进行不同的计算。

  2. 是的,有的。图像的颜色空间定义了数据在物理光方面的意义。如果你使用ICC校准文件显示它,它会被转换成显示器需要准确显示图像所需的数字。

  3. 对于图像使用什么颜色空间应该没有太大区别,除非某些显示软件不会考虑它。制作sRGB图像更适合跨系统兼容性,但我认为Adobe RGB有更大的色域,实际上可以表示一些sRGB无法表示的绿色。您应该使用打印机和显示器校准,以便您可以看到您的图像真正的外观。

  4. 我想我已经在上面回答了这个问题。


说到第二点——这些操作是由操作系统执行的。但是当你使用例如Photoshop时,我认为该软件也会进行一些“预处理”。在将图像从一个配置文件转换为另一个配置文件后,您可以看到差异。 - Mariusz Jaskółka

0

通过类比解释色域映射

如果您更改颜色空间,则可能会丢失一些信息,因为从一个颜色空间到另一个颜色空间的映射可能不是单射(可逆)。您可以选择不同的渲染意图来选择仅丢弃您认为最不有用的信息的映射。

这个类比可能说明将图像转换为较小的颜色空间时的后果,当原始空间大于您的设备时:您可以在计算机中很好地表示3D对象,但您实际上永远看不到它,因为您的屏幕是平面的,因此只能显示2D图像。您可以查看对象的投影,您可以查看对象的切片,但是您需要3D打印机才能真正获得3D效果。

即使您没有3D打印机,也值得将对象表示为3D而不是固定的2D投影。否则,您将无法进行所有这些2D切割和投影,即使将来购买了3D打印机,也无法再打印该对象。

3D对象是大空间中的图片,固定的2D投影是小空间中的图片,屏幕是具有较小色彩空间的设备,而3D打印机则是具有较大色彩空间的设备。类比到此结束。

ICC工作流程

如果你拍照片,相机应该为其分配一个配置文件,描述相机的设备色彩空间。该配置文件定义了图片内部数字(设备色彩空间中的坐标)与真实世界颜色(绝对色彩空间中的坐标)之间的映射关系。因此,没有配置文件,这些数字实际上没有意义,任何人都可以随意制定任何映射关系。

如果你拍摄RAW格式,你需要在后期处理时进行色彩空间转换;如果你拍摄JPEG格式,则相机会为你执行此任务。

在显示或打印时,如果显示设备未经校准并且没有配置文件,则存储在图像中的真实世界颜色可能与实际输出设备的颜色不匹配。图像色彩空间与输出设备空间之间的映射不能保证颜色得以保留,有些是任意的。

实际答案

  1. 在sRGB和Adobe RGB中操作照片的区别在于,Adobe RGB更大,因此保留了更多信息以供进一步处理。

  2. 算法的差异已经在另一个答案中由Matt Timmermans解释过了。关于颜色混合,您可能想了解更多关于感知均匀颜色空间的信息(例如,请参见SO上的一个封闭的问答)。

  3. 是的,从Adobe RGB到sRGB的转换不是恒等的,因此需要进行一些处理。这个处理在哪里进行(设备驱动程序、操作系统内核、图像处理软件)取决于源和目标、操作系统及其设置。如果您在Photoshop中转换空间,则它会自行计算。Windows有一个内置的颜色管理模块,负责将带有配置文件的图像转换为输出设备的设备颜色空间。

  4. 您要显示/打印的图像可能存储在某些相当奇特的颜色空间中。如果操作系统猜测它在sRGB中(Windows会这样做),它可能会产生奇怪的结果。最好向颜色管理系统提供尽可能多的信息。即使未校准的设备也可能被分配一些通用配置文件,可能会进行一些猜测。也许,您将来会校准和表征您的设备,或者您将图像发送给某个具有这样的设备的人。

  5. Qt本身不支持颜色管理。但是,建立在Qt之上的KDE通过Oyranos支持一些颜色管理。

    我们何时可以期望完整的KDE颜色管理?

    如果我们谈论的是Qt中的颜色管理,那么不会很快。如果我们谈论的是合理的颜色管理实现在组合器(KWin)中,那么比不会很快。这还取决于图形应用程序对这些新颜色管理事物的适应速度。

    您可以直接在应用程序中使用Oyranos或其他颜色管理系统。Google告诉我还有一篇关于将颜色管理引入Qt的论文。

相关阅读


回答不错,但是当涉及到第四个问题时 - 我知道Qt不支持颜色配置文件,但问题是“如何自己实现这个功能?”只需要将RGB向量乘以矩阵转换为XYZ,然后转换为(例如)Adobe RGB即可。 - Mariusz Jaskółka

0
算法上没有区别,因为您在RGB颜色空间中操作,而不是在XYZ颜色空间中。像您所说的显示器会以不同的方式显示颜色,一个显示器上的红色可能与另一个显示器上的红色原色不完全匹配。为了以通用的方式定义不同的RGB颜色空间,显示器使用CIE 1931 XYZ颜色空间。每个显示器或系统根据使用的配置文件将RGB颜色计算为XYZ,例如:RGB(1,0,0)= XYZ(0.4358、0.2224、0.0139)sRGB中,XYZ(0.7977、0.2880、0.0000)ProPhotoRGB中。

更多信息请参见:


您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - Plachu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接