提问人:Deepak Sharma 提问时间:11/13/2023 更新时间:11/13/2023 访问量:39
Metal Core Image 内核工作ColorSpace
Metal Core Image kernel workingColorSpace
问:
据我所知,默认情况下,Core image 使用扩展的线性 sRGB 作为执行内核的默认工作色彩空间。这意味着在 Metal Core Image 内核中接收(或从采样器采样)的颜色值是未应用伽玛校正的线性值。但是,如果我们通过设置
let options:[CIContextOption:Any] = [CIContextOption.workingColorSpace:NSNull()];
我们是否收到输入纹理中存在的颜色值(可能已经应用了伽玛校正)?换句话说,内核中接收到的颜色值是经过伽玛校正的,如果需要,我们需要在 Metal 内核中手动将它们转换为线性值?
答:
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 输入。CIAreaLogarithmicHistogram
linearITUR_2020
[0.0...1.0]
0赞
Deepak Sharma
11/14/2023
我今天提出了 DTS 请求,希望很快能收到他们的来信。
评论