Metal Core Image 内核工作ColorSpace

Metal Core Image kernel workingColorSpace

提问人:Deepak Sharma 提问时间:11/13/2023 更新时间:11/13/2023 访问量:39

问:

据我所知,默认情况下,Core image 使用扩展的线性 sRGB 作为执行内核的默认工作色彩空间。这意味着在 Metal Core Image 内核中接收(或从采样器采样)的颜色值是未应用伽玛校正的线性值。但是,如果我们通过设置

let options:[CIContextOption:Any] = [CIContextOption.workingColorSpace:NSNull()];

我们是否收到输入纹理中存在的颜色值(可能已经应用了伽玛校正)?换句话说,内核中接收到的颜色值是经过伽玛校正的,如果需要,我们需要在 Metal 内核中手动将它们转换为线性值?

IOS 核心-镜像 金属套件

评论


答:

1赞 Frank Rupprecht 11/13/2023 #1

是的,应该是这样:当您禁用颜色管理时,您会收到输入图像中定义的颜色值,而无需进行任何转换。

Apple 似乎专门设计了这个 API,用于处理不一定编码颜色值的原始输入数据:

若要请求 Core Image 不执行任何颜色管理,请将 NSNull 对象指定为此键的值。此选项适用于不包含颜色数据的图像(例如高程图、法线矢量图和采样函数表)。

CIContextOption.workingColorSpace 的文档

评论

0赞 Deepak Sharma 11/13/2023
嗯,那么如果想在内核中接收线性值,解决方案是什么?
0赞 Frank Rupprecht 11/13/2023
好吧,最简单的方法是让Core Image为您进行色彩管理。否则,您必须自己实现和应用与您的输入相对应的 EOTF。
0赞 Deepak Sharma 11/13/2023
好的,但问题是我可能会收到超过 1.0 的标准化颜色值,但我不知道我可能收到的最大值是多少。与您回答的这个问题类似。
1赞 Frank Rupprecht 11/14/2023
这就是过滤 EDR 内容时的挑战。在这个 WWDC22 视频中有一个部分是关于这一点的。对您来说,最值得注意的可能是过滤器。您也可以尝试将输入转换为色彩空间。我认为这将线性化值并钳位到 ,但我不确定这是否真的适用于 BT.2100 输入。CIAreaLogarithmicHistogramlinearITUR_2020[0.0...1.0]
0赞 Deepak Sharma 11/14/2023
我今天提出了 DTS 请求,希望很快能收到他们的来信。