如何将Photoshop的水平调整映射到核心图像过滤器?

时间:2012-12-07 14:46:10

标签: iphone ios photoshop core-image

我将几个photoshop元素映射到CIFilter,唯一一个我遇到麻烦的是这个级别调整:

screen shot from current version of photoshop

哪个CI过滤器(或过滤器组合)可以让我使用16,1.73,239&第一个例子中的39/245或第二个例子中的31,1.25,255 30/255。我相信这是一种暗影/黑白调节。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:9)

通过调整此页面中的公式: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,但计算效果很好!