【问题标题】:How can I map Photoshop's level adjustment to a Core Image filter?如何将 Photoshop 的级别调整映射到 Core Image 滤镜?
【发布时间】:2016-11-13 21:18:27
【问题描述】:

我正在将几个 Photoshop 元素映射到 CIFilter,我唯一遇到的问题是这个级别调整:

哪个 CI 过滤器(或过滤器组合)可以让我在第一个示例中使用上面的 16、1.73、239 和 39/245,或者在第二个示例中使用 31、1.25、255 30/255。我相信这是一种阴影/黑白电平调整。

任何帮助表示赞赏。

【问题讨论】:

    标签: iphone ios photoshop core-image


    【解决方案1】:

    通过调整此页面中的公式:http://http.developer.nvidia.com/GPUGems/gpugems_ch22.html,我相信您可以使用 CIColorMatrixCIGammaAdjust 和另一个 CIColorMatrix 的组合来做到这一点。

    我们分别称输入电平为inBlackinGammainWhite,输出电平为outBlackoutWhite。请注意,Photoshop 颜色介于 0 和 255 之间,而 CI 颜色介于 0 和 1 之间,因此您需要将 Photoshop 值(inGamma! 除外)除以 255,然后再将它们放入以下公式。

    输入映射是pixel = (inPixel-inBlack)/(inWhite-inBlack),这意味着你的第一个矩阵将是

    red = [1/(inWhite-inBlack) 0 0 0]
    green = [0 1/(inWhite-inBlack) 0 0]
    blue = [0 0 1/(inWhite-inBlack) 0]
    alpha = [0 0 0 1]
    bias = [-inBlack/(inWhite-inBlack), -inBlack/(inWhite-inBlack),-inBlack/(inWhite-inBlack), 0]
    

    然后您使用CIGammaAdjustinGamma 数字应用伽马校正(我在进行计算时必须使用倒数1/inGamma,也试试吧!)。

    最后输出映射为pixel = gammaCorrectedPixel * (outWhite - outBlack) + outBlack,给你最终的矩阵

    red = [(outWhite - outBlack) 0 0 0]
    green = [0 (outWhite - outBlack) 0 0]
    blue = [0 0 (outWhite - outBlack) 0]
    alpha = [0 0 0 1]
    bias = [outBlack outBlack outBlack 0]
    

    我实际上并没有使用 CoreImage 尝试过,但计算结果很好!

    【讨论】:

    • 你能解释一下这部分吗?像素 = gammaCorrectedPixel * (outWhite - outBlack) + outBlack
    • 链接中的公式是outPixel = (pow(((inPixel * 255.0) - inBlack) / (inWhite - inBlack), inGamma) * (outWhite - outBlack) + outBlack) / 255.0,所以这是pow之外的部分(公式被解构为在pow之前应用的一个矩阵乘法,pow本身应用作为伽玛校正,然后是 pow 之后发生的所有事情的矩阵。
    • 所以,inBlack = 31,inGamma = 1.25 和 inWhite = 255?然后,我们必须将这些值除以 255 ?
    猜你喜欢
    • 2011-12-07
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    相关资源
    最近更新 更多