我一直在尝试实现GIMP (GEGL)到Python的一些层混合模式。目前,我被困在减法混合模式。根据文档,Subtract = max(Background - Foreground, 0)。然而,在GIMP中做一个简单的测试,使用Background image = (205,36,50)和Foreground image = (125,38,85),得到的复合图像/颜色变成了(170, 234, 0),这与上面的数学不太一样。
据了解,减法不使用阿尔法混合。那么,这会是一个复杂的问题吗?还是按照不同的数学进行减法?更多的细节和背景可以在一个单独的所以问题中找到。
编辑14/10/2021:我尝试以这图像作为我的源。对在范围[0, 1]中规范化的图像执行以下步骤
sRGB -> linear RGB进行转换)并从我的实现中获得了与GIMP结果相匹配的这。sRGB -> linear RGB转换。[参考资料((%22伽马%22%29))Background = Colour Dodge和Foreground = Source Image进行减法混合linear RGB-> sRGB我从POC获得这。左RGB三重奏:(69,60,34);右RGB三重奏:(3,0,192)。和GIMP 结果。左RGB三重奏:(69,60,35);右RGB三重奏:(4,255,255)
发布于 2021-10-13 09:20:00
如果您正在查看0 ➞ 255范围内的通道值,则它们很可能是伽马校正的。手术可能是这样进行的:
0.0 ➞ 1.0范围内的每一层转换为“线性光”L = ((V/255) ** gamma) (*)V = (255 * (Diff ** (1/gamma)))使用gamma=2.2,你可以得到170个红色频道,但我不明白为什么你会在绿色频道上得到234个。
(*)对于非常低的IIRC,实际公式有一个特例。
https://stackoverflow.com/questions/69550967
复制相似问题