我一直在尝试将 GIMP (GEGL) 的一些图层混合模式实现到 Python。目前,我陷入了减法混合模式。根据文档,Subtract = max(Background - Foreground, 0). 然而,在 GIMP 中用Background image = (205,36,50)和做一个简单的测试Foreground image = (125,38,85),得到的合成图像/颜色(170, 234, 0)与上面的数学不太相符。
据了解,Subtract 不使用 Alpha Blending。那么,这可能是一个合成问题吗?或者减法遵循不同的数学?更多细节和背景可以在单独的SO问题中找到。
编辑 [14/10/2021]:我尝试将此图像作为我的来源。对范围内归一化的图像执行以下步骤[0, 1]:
- 应用了颜色减淡(之前没有进行转换
sRGB -> linear RGB)并从我的实现中获得了与 GIMP 结果匹配的结果。 sRGB -> linear RGB颜色减淡和源图像的转换。[参考]- 应用减法混合
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)