【问题标题】:What is value range of RGB channels in custom Metal CIFilter?自定义 Metal CIFilter 中 RGB 通道的值范围是多少?
【发布时间】:2021-11-23 17:48:05
【问题描述】:

如果在 Metal 中有以下 CIKernel 过滤器:

namespace coreimage
{
    float4 FilterA(sampler src, float exponent, float intensity)
    {
        float4 srcSample = src.sample(src.coord());

        float r = min(srcSample.r, 2.0) / 2.0;
        srcSample.r = 2.0 * (pow(r, exponent) * intensity);
        srcSample.g = 0.0;
        srcSample.b = 0.0;

        return srcSample;
    }
}

我在某处读到 RGB 通道的值范围是 0.0 ... 2.0。然而,Simon J Gladman 的“Core Image for Swift”一书似乎建议最大值为 1.0。

当我假设最大值为 1.0 并将上面的一行更改为 float r = min(srcSample.r, 1.0) 时,我得到不同的输出。

如果范围确实是 0.0 ... 2.0,这是否适用于传递到 CIKernelCIColorKernelCIWarpKernel 的所有图像?

那么,阅读this,色彩空间对RGB值范围有影响吗?

如果返回超出范围的 RGB 值会怎样?它们是被剪裁到范围内还是原封不动地传递给行中的下一个过滤器?

【问题讨论】:

    标签: ios swift metal cifilter cikernel


    【解决方案1】:

    这取决于很多因素:

    1. 图像处理技术(SDRHDR & apple EDR)。
    2. 显示器的特性(nits,...)。
    3. 图像色彩空间(kCGColorSpaceITUR_2020_PQ_EOTFDisplay P3sRGB扩展的 sRGB)。
    4. ...

    对于 SDR 技术,颜色浮点范围为 0.0 - 1.0

    • 0.0代表黑色
    • 1.0代表白色

    对于 HDR 和 EDR 技术,颜色浮动点范围为 0.0 - (v > 1)

    • v = 最高 3.2(1600 尼特显示)

    我强烈推荐观看此视频Explore HDR rendering with EDR

    【讨论】:

      猜你喜欢
      • 2016-12-15
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      • 2019-10-25
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2019-05-06
      相关资源
      最近更新 更多