10 位显示器连接是否可以在宽色域显示器上保留 8 位 sRGB 渐变中的所有色调?

10 位显示器连接是否可以在宽色域显示器上保留 8 位 sRGB 渐变中的所有色调?

这个问题是关于色彩管理和使用更高的颜色深度,即每通道 10 位(总共 30 位,可产生 10.7 亿种颜色,或 1024 种灰度,有时称为“深色”),而标准的每通道 8 位(总共 24 位,1670 万种颜色,256 种灰度,有时称为“真彩色”)。不要将其与“32 位颜色”混淆,后者通常是指标准 8 位颜色加上一个额外的通道(“alpha 通道”)以实现透明度(用于实现半透明窗口等效果)。

可以假设以下情况已经存在:

1:支持 10 位输入的宽色域显示器。此外,可以假设显示器已校准到其原始色域,并且已创建 ICC 颜色配置文件。

2:支持10位输出的显卡(并通过DisplayPort连接到显示器)。

3:支持10位输出的显卡驱动程序。

如果使用支持 10 位输出和颜色配置文件的应用程序,我希望它们能够正确显示使用不同颜色空间保存的图像。例如,sRGB 和 adobeRGB 图像都应该正确显示。如果使用每通道 8 位保存 sRGB 图像(几乎总是如此),那么 10 位信号路径将确保在从图像的 sRGB 转换为显示器的原生颜色空间时不会丢失色调渐变。

例如:如果图像包含一个 8 位纯红色像素 (255,0,0),则 10 位对应的值将是 (1023,0,0)。但是,由于显示器的色彩空间大于 sRGB,因此将信号 (1023,0,0) 发送到显示器会导致红色过于饱和。因此,根据 ICC 颜色配置文件,信号将转换为红色饱和度较低的其他值,例如 (987,0,0)。由于 0 到 987 之间仍有很多级别,因此文件 sRGB 颜色空间中红色的所有 256 个值 (0-255) 都可以唯一地映射到显示器原生颜色空间中经过颜色校正的 10 位值。

然而,如果以 8 位进行转换,(255,0,0) 将被转换为 (246,0,0),并且红色通道现在只有 247 个可用级别而不是 256 个,从而降低显示的图像质量。

我的问题是:这在 Ubuntu 上如何工作?假设我使用 Firefox(它具有颜色感知功能并使用 ICC 颜色配置文件)。我是否能获得 10 位处理,从而保留 8 位图片的所有级别?其他应用程序的情况如何,尤其是 Shotwell、Rawtherapee、Darktable、RawStudio、Photivo 等照片应用程序?

在这一点上,Ubuntu 与其他操作系统(Linux 和其他操作系统)有何不同?

答案1

“从位的角度来看,无论你以 8 位还是 10 位进行渲染都不会有问题,但 Linux 的位深度存在一个主要问题。不幸的是,在 Linux 中没有前端软件可以让你更改位深度。在 Linux 中更改位深度的唯一方法是编译你的视频驱动程序,以便为你的接口调用每通道 10 位,而不是 8 位。”

实际上,Nvidia GeForce 驱动程序在 Linux 中已经支持每通道 10 位了。当然,您需要一台支持每通道 10 位色彩的显示器,并通过 DisplayPort 连接到您的显卡,才能使其正常工作。

相比之下,在 Windows 中,只有 Nvidia Quadro 卡的驱动程序允许每通道 10 位颜色。但是,大多数应用程序都无法使用它(因为 Windows 桌面本身是每通道 8 位,很难像图像编辑应用程序那样在屏幕的一部分上实现每通道 10 位颜色)。但是,Photoshop 在 Windows 中使用 AMD Firepro 卡或带有 CS6 的 Nvidia Quadro 卡可以实现每通道 10 位。不过,使用 Photoshop CC,我看到了有关 Firepro 卡出现问题的报告。

基本上,Windows 需要“Pro”卡(AMD Firepro 或 Nvidia Quadro)才能获得该功能(使用支持该功能的应用程序实现每通道 10 位颜色),因为 AMD Radeon 卡和 Nvidia GeForce 卡的驱动程序不支持 Photoshop 等应用程序使用的每通道 10 位 OpenGL 缓冲区。请参阅此页面了解 Nvidia 的一些信息:

http://nvidia.custhelp.com/app/answers/detail/a_id/3011

但有趣的是,如果您的显卡带有 DisplayPort 和支持每通道 10 位的显示器,那么 Nvidia 专有的 GeForce 显卡 Linux 驱动程序确实支持每通道 10 位的 OpenGL 缓冲区。从 295.20 开始,他们为其 Linux 驱动程序添加了每通道 10 位(即 30 位)颜色支持。这里有一篇旧的 Phoronix 文章提到了这一点:

http://www.phoronix.com/scan.php?page=news_item&px=MTA1NzM

如果您进入 Linux 中的 Nvidia X-Server 控制面板,并查看“显示设置”,如果检测到的显示器能够达到每通道 10 位并通过显示端口连接,则应该会看到“颜色深度”选项。您将在那里看到标记为“实验”的 30 位选项。或者,您可以直接选择 X Screen 0(与检测到的显示器相对),然后以这种方式查看颜色深度选项(默认为 24​​ 位,但下拉列表中会提供 30 位)。当然,除非您拥有真正的 30 位(每通道 10 位)硬件设置(带有 DispayPort 的卡,并连接了带有真正的每通道 10 位颜色面板的显示器),否则您不会选择该选项。

答案2

其中存在一些主要问题,我稍后会解决。

如果您将较小的颜色配置文件 (sRGB) '分配' 到较大的颜色配置文件,RGB 值当然会发生变化。安全保留原始 sRGB 值的唯一方法是使用“转换”选项,该选项转换颜色模式或“Lab”指定并尝试保留原始色调,或者取消分配颜色配置文件并让软件使用其默认的 rgb 渲染。

从位的角度来看,无论你以 8 位还是 10 位进行渲染都不会有问题,但 Linux 的位深度存在一个主要问题。不幸的是,在 Linux 中没有前端软件可以让你更改位深度。在 Linux 中更改位深度的唯一方法是编译你的视频驱动程序,以便为你的接口调用每通道 10 位,而不是 8 位。

答案3

嗯…

从 Windows 7 开始,Windows 至少支持 16bpp 输出。关于 NVidia 10bit 驱动程序无法在 Windows 上运行的原因在于操作系统限制为 8bpp 的帖子是非常非常错误的。

此信息自 2008 年 WinHEC 首次发布并演示 Windows 7 以来就一直可用,并于 2009 年在 Windows 7 上投入生产,当时 ATI 和 NVidia 驱动程序均提供至少 10bpp 支持。(来源:Wiki、MSDN、WinHEC 等)

许多专业人士使用 Windows 7/8/10 的 30 位和 48 位显示器,不会对从操作系统到显示器的颜色进行抖动/下采样。(来源:Wiki、MSDN、Adobe、Autodesk、RenderMan 等)

额外说明:OS X 最近才为 OS X 10.11(2015)添加了 10 位色彩支持,但遗憾的是这确实太晚了,尤其是当 Apple 要求使用其新的 GPU 框架才能使用它时。

相关内容