Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何映射Photoshop';核心图像过滤器的s级调整?_Iphone_Ios_Photoshop_Core Image - Fatal编程技术网

Iphone 如何映射Photoshop';核心图像过滤器的s级调整?

Iphone 如何映射Photoshop';核心图像过滤器的s级调整?,iphone,ios,photoshop,core-image,Iphone,Ios,Photoshop,Core Image,我正在将几个photoshop元素映射到CIFilter,我唯一遇到的问题是级别调整: 哪个CI过滤器(或过滤器组合)允许我在第一个示例中使用上面的16、1.73、239和39/245,或者在第二个示例中使用31、1.25、255和30/255。我相信这是一种阴影/黑白级别调整 感谢您的帮助。通过调整本页的公式:,我相信您可以使用CIColorMatrix、CIGammaAdjust和另一个CIColorMatrix的组合来实现这一点 让我们分别调用输入级别inBlack、ingama和in

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

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


感谢您的帮助。

通过调整本页的公式:,我相信您可以使用
CIColorMatrix
CIGammaAdjust
和另一个
CIColorMatrix
的组合来实现这一点

让我们分别调用输入级别
inBlack
ingama
inWhite
,以及输出级别
outBlack
outWhite
。请注意,Photoshop颜色介于0和255之间,而CI颜色介于0和1之间,因此在将Photoshop值放入以下公式之前,需要将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]
然后使用
CIGammaAdjust
ingama
数字应用gamma校正(我在计算时必须使用逆
1/ingama
,也可以试试!)

最后,输出映射为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尝试过,但是计算结果很好

你能解释一下这部分吗?pixel=gammaCorrectedPixel*(outWhite-outBlack)+outBlack链接中的公式是
outPixel=(pow((inPixel*255.0)-inBlack)/(inWhite-inBlack),ingama)*(outWhite-outBlack)+outBlack)/255.0,因此这是
pow之外的部分(该公式被分解为一个矩阵乘法,在
pow
之前应用,
pow
本身作为伽马校正,然后是
pow
之后发生的所有事情的矩阵)。因此,inBlack=31,inGamma=1.25,inWhite=255?那么,我们必须将这些值除以255?