我映射数的Photoshop元素CIFilter,我在使用麻烦的只有一个是此水平的调整:如何将Photoshop的水平调整映射到核心图像过滤器?
哪个CI筛选(或过滤器组合)将让我在第一个例子中使用上面的16,1.73,239,& 39/245,或者在第二个例子中使用31,1.25,25 30/255。我相信这是一种阴影/黑白平衡调整。
任何帮助表示赞赏。
我映射数的Photoshop元素CIFilter,我在使用麻烦的只有一个是此水平的调整:如何将Photoshop的水平调整映射到核心图像过滤器?
哪个CI筛选(或过滤器组合)将让我在第一个例子中使用上面的16,1.73,239,& 39/245,或者在第二个例子中使用31,1.25,25 30/255。我相信这是一种阴影/黑白平衡调整。
任何帮助表示赞赏。
通过改编此页的公式:http://http.developer.nvidia.com/GPUGems/gpugems_ch22.html,我相信你可以使用CIColorMatrix
,CIGammaAdjust
和另一个CIColorMatrix
的组合来完成此操作。
我们称之为输入电平inBlack
,分别inGamma
和inWhite
和输出电平outBlack
和outWhite
。需要注意的是Photoshop颜色是0和255之间,而CI颜色是0和1之间,所以你需要通过255将它们放入下列公式之前划分的Photoshop值(除inGamma
!)。
输入映射为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]
然后你申请使用CIGammaAdjust
和inGamma
数字伽玛校正(我不得不做我的计算时使用的逆1/inGamma
,尝试太!)。
最后输出映射像素= 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 – Eric
从链路的公式是'outPixel的=(POW(((inPixel * 255.0) - inBlack)/(inWhite - inBlack),inGamma)*(outWhite - outBlack)+ outBlack )/ 255.0'所以这是'pow'的外侧的部分(式解构成'pow'之前施加一个矩阵乘法时,'pow'本身用作伽马校正,然后适用于所有的矩阵之后发生的' pow')。 – jakber
so,inBlack = 31,inGamma = 1.25,inWhite = 255?那么,我们必须将这些值除以255? –