我想我明白什么是颜色配置文件。我不明白,例如在 16bpp sRGB
和 16bpp Adobe RGB
的 photoshop 中处理照片有什么区别。我的显示器只能显示sRGB。
- 算法有什么区别吗?
- 也许在程序显示我的工作效果之前执行了一些预处理(例如
AdobeRGB(0.3, 0.25, 0.82)
在我的显示器中显示为sRGB(0.301, 0.253, 0.819)
)? - 当我不使用显示器/打印机的ICC配置文件时,使用不同的颜色配置文件有什么意义吗?
- 一般来说 – 如果我想开发自己的图形操作应用程序,支持与sRGB不同的配置文件(例如在Qt中),我该怎么办?
图像使用的色彩空间决定了每像素 16 位与显示器产生的输出的关系,即它决定了数字实际代表的颜色。
如果某些算法应该产生逼真、自然或一致的结果,这可能会对它们的处理方式产生影响。
假设您在深红色背景上合成半透明的黄色? 你会得到什么样的棕色? 如果算法始终以相同的方式混合像素数据,那么即使黄色和红色在显示器上看起来相同,您得到的棕色也可能因色彩空间而不同。
一种更"正确"的混合方法是将像素数据转换为一致的色彩空间,混合,然后转换回来。 如果原始颜色在具有不同校准配置文件的两台显示器上看起来相同,则它们将在一致的色彩空间中转换为相同的数字,并且混合结果将转换回在两台显示器上看起来相同的结果,即使像素值可能不同。
具有半透明度的自然外观合成是算法的一个很好的例子,该算法必须考虑您的色彩空间才能产生逼真的结果。 其他必须看起来"自然"的效果,如镜面高光、阴影等,同样需要在一致的色彩空间中进行物理上准确的数学运算。
要回答您的具体问题:
-
是的,如前所述,许多算法应该使用不同的色彩空间执行不同的计算。
-
是的,有。 图像的色彩空间定义了数据在物理光方面的含义。 如果使用 ICC 校准配置文件显示它,它将转换为显示器准确显示图像所需的数字。
-
对于图像使用的颜色空间应该没有什么区别,除了某些显示软件不会考虑它。 制作sRGB图像对于跨系统兼容性更好,但我认为Adobe RBG具有更大的色域,实际上可以表示sRGB无法表示的一些绿色。 您应该使用打印机和显示器校准,以便您可以看到图像的真实外观。
-
我想我在上面回答了这个问题。
他们的算法没有差异,因为你在RGB
颜色空间而不是XYZ
颜色空间中操作。像你说的显示器显示的颜色不同,一台显示器上的红色可能与另一台显示器上的红色主色调不完全匹配。为了以通用方式定义不同的RGB
颜色空间,监视器使用CIE 1931 XYZ
颜色空间。每个显示器或系统都会根据使用的配置文件计算RGB
颜色以XYZ
,例如:sRGB
RGB (1,0,0) = XYZ (0.4358, 0.2224, 0.0139)
和ProPhotoRGB
XYZ (0.7977, 0.2880, 0.0000)
。
有关更多信息,请参阅:
- http://ninedegreesbelow.com/photography/xyz-rgb.html
- http://www.ryanjuckett.com/programming/rgb-color-space-conversion/
类比解释的色域映射
如果更改色彩空间,可能会丢失某些信息,因为从一个映射到另一个的映射可能不是单射的(可逆的)。您可以在不同的呈现方法中进行选择,以选择仅丢弃您认为最无用的信息的映射。
这个类比可以说明当原始空间大于设备空间时将图像转换为较小的颜色空间的后果:您可以在计算机中很好地表示3D对象,但您永远不会真正看到它,因为您的屏幕是平坦的,因此只能显示2D图像。您可以查看物体的投影,可以查看穿过物体的切口,但您需要一台3D打印机才能从中获取真正的3D数据。
即使您没有3D打印机,也值得以3D而不是固定的2D投影表示对象。否则,您将无法进行所有这些2D切割和投影,即使您将来购买了3D打印机,也无法再打印该对象。
3D对象是较大空间中的图片,固定的2D投影是较小空间中的图片,屏幕是具有较小色彩空间的设备,3D打印机是具有较大色彩空间的设备。类比结束。
ICC 工作流程
如果您拍摄照片,相机应为其分配一个配置文件,描述相机的设备色彩空间。配置文件定义图片内的数字(设备颜色空间中的坐标)到实际颜色(绝对颜色空间中的坐标)的映射。因此,如果没有个人资料,这些数字真的没有任何意义,任何人都可以自由地编造他们喜欢的任何映射。
如果拍摄 RAW,则在显影照片时执行色彩空间转换;如果拍摄 JPEG,相机将为您执行此任务。
在相反的方向上,在显示或打印时:如果显示设备未校准且没有配置文件,则存储在图像中的实际颜色可能与实际设备的颜色不匹配。图像颜色空间和输出设备空间之间的映射无法保证颜色将被保留,并且有些随意。
实际答案
在sRGB和Adobe RGB中操作照片的区别在于Adobe RGB更大,因此保留了更多信息以供进一步处理。
马特·蒂默曼斯(Matt Timmermans)已经在另一个答案中解释了算法的差异。关于颜色混合,你可能想了解更多关于感知均匀的颜色空间(例如,参见SO的封闭问答)。
是的,从Adobe RGB到sRGB的转换不是身份,因此需要一些处理。此处理的确切位置(设备驱动程序、操作系统内核、图像处理软件)取决于源和目标、操作系统及其设置。如果在 Photoshop 中转换空格,它会自行执行计算。Windows 具有内置的颜色管理模块,该模块负责将带有配置文件的图像转换为输出设备的设备颜色空间。
您要显示/打印的图像可能存储在一些相当奇特的色彩空间中。如果操作系统猜测它在sRGB中(Windows会),它可能会给出奇怪的结果。最好向颜色管理系统提供尽可能多的信息。即使是未校准的设备也可能被分配一些通用配置文件,可能会进行一些猜测。也许,有一天你会校准和表征你的设备,或者你会把图像发送给拥有这种设备的人。
Qt本身不支持色彩管理。然而,建立在Qt之上的KDE支持通过Oyranos进行一些色彩管理。
我们什么时候应该期待 KDE 的完整色彩管理?
如果我们谈论的是Qt中的色彩管理,那么不会很快。如果我们谈论的是合成器(KWin)中实现的体面色彩管理,那么很快就会很快。这也取决于图形应用程序适应这些新的色彩管理事物的速度。
您可以直接在应用程序中使用 Oyranos 或其他颜色管理系统。谷歌也告诉我一篇关于将色彩管理引入Qt的论文。
相关阅读
- 关于颜色的一般情况@color-management-guide.com
- 国际商会常见问题
- 视窗 7:更改颜色管理设置
- Windows Vista:颜色管理设置常见问题解答
- Microsoft Windows 操作系统中的颜色管理简介
- Windows Color System @ MSDN