You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现GIMP Subtract图层混合模式结果与官方输出不一致问题咨询

GIMP Subtract图层混合模式实现异常排查

我一直尝试用Python实现GIMP(GEGL)的部分图层混合模式,目前在Subtract混合模式上遇到了阻碍。根据官方文档说明,Subtract = max(Background - Foreground, 0)。但我在GIMP中做简单测试时,背景图像像素值为(205,36,50),前景图像像素值为(125,38,85),最终合成的图像像素值为(170, 234, 0),并不符合上述公式的计算结果。

根据我的理解,Subtract模式不使用Alpha Blending,所以这会不会是合成逻辑的问题?还是Subtract模式实际采用了不同的运算规则?

2021年10月14日更新

我使用测试图片作为源素材,对归一化到[0, 1]区间的图像执行了以下步骤:

  • 应用Colour Dodge混合(未提前执行sRGB -> linear RGB转换),我自己的实现结果与GIMP的输出一致。
  • 对Colour Dodge处理后的图像和源图像执行sRGB -> linear RGB转换。
  • 应用Subtract混合,其中Background = Colour Dodge处理结果,Foreground = 源图像。
  • 将结果从linear RGB重新转换回sRGB。

我的验证程序输出结果中,左侧RGB三元组为(69,60,34),右侧RGB三元组为*(3,0,192)。而GIMP的输出结果中,左侧RGB三元组为(69,60,35),右侧RGB三元组为(4,255,255)*,二者存在明显差异,请问问题出在什么地方?


内容的提问来源于stack exchange,提问作者KevalGyan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 04:15:05