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

Eri*_*ric 7 iphone photoshop core-image ios

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

从当前版本的photoshop拍摄的屏幕截图

哪个CI过滤器(或过滤器的组合)将允许我在第一个示例中使用上面的16,1.72,239和39/245或者在第二个示例中使用31,1.25,255 30/255.我相信这是一种阴影/黑白水平调整.

任何帮助赞赏.

jak*_*ber 10

从这个页面调整公式:http://http.developer.nvidia.com/GPUGems/gpugems_ch22.html,我相信你可以使用的组合做到这一点CIColorMatrix,CIGammaAdjust和其他CIColorMatrix.

让我们把输入电平inBlack,inGammainWhite分别与产出水平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]
Run Code Online (Sandbox Code Playgroud)

然后使用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]
Run Code Online (Sandbox Code Playgroud)

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