在GIMP中将两个图像之间的差异作为透明图像获取


21

我有两张图片AB并且在许多地区都相似。

我想创建一个图像,C以便

B = C on top of A

哪里C应该尽可能透明。on top of是正常的图层叠加。

所以C某种之间的差异AB。如果AB相同,则C完全透明。如果AB非常不同,则它们C将与几乎相同B


:有一个伟大的答案堆栈溢出这个问题,使用ImageMagick的stackoverflow.com/questions/5132749/...
AB

Answers:


23

您可以使用“差异”图层模式创建图层蒙版,然后将其应用于B:

  1. 将两个图像都作为图层打开,底部A,顶部B
  2. 在图层的对话框中,将B的图层模式标记为“差异”。现在,您应该看到图像大部分是黑色的,即图像是相同的,彩色区域标记了不同的区域。但是,这些颜色不会与您想要的B的颜色匹配
  3. 编辑->复制可见,以获取B上计算出的效果的副本
  4. 复制B层,将其模式更改回“ Normal”(将其称为C层)
  5. 在“图层”菜单上,将图层蒙版添加到C(“图层”->“蒙版”->“添加图层蒙版”)。
  6. 选择蒙版后,粘贴在步骤3中复制的内容(编辑->粘贴)。
  7. 在图层蒙版上锚固粘贴的内容(layer-> Anchor图层)

在那里-使A层和B层不可见,并且您应该非常接近所需的层。对图层蒙版进行进一步的操作(我建议使用“颜色”->“曲线”)可以调整C层上区域的不透明度/透明度。

更新我最近在Stackoverflow上回答了与此类似的问题,其中OP希望以编程方式执行任务(使用Python + Python-imaging-library)-我已经发布了有关该问题的完整程序,这可能对任何人都有帮助对这个答案感兴趣。


On the layer's dialog, mark B's layer mode as "difference". 不好意思 我正在查看“图层”工具窗口,如果右键单击B层,则看不到任何类似的内容layer mode。我发现的最接近的是Add Layer Mask,但我认为那不是您所指的。使用v2.8.22。
阿德里安

选择图层后,可以在图层对话框顶部的下拉菜单中选择图层模式,而不是从右键菜单中选择。
jsbueno

我对步骤6感到有些困惑或麻烦-即使选择了“ C mask”,它似乎也将内容粘贴到了新层中,使名为“浮动选择(粘贴层)”的第四层偏移了从原始位置开始-看起来应该是这样吗?
赛马会

这是一个“浮动选择”,直到您将其“锚定”到其目的地(Ctrl-H)。粘贴(Ctrl-V)时,请确保遮罩处于活动状态,否则锚定可能会移到其他位置。
xenoid

5

有一个简单的方法可以做到这一点:

将图像打开为两层,运行“滤镜-动画-优化(差异)”,您应该得到的结果图像现在由底层和顶层的差异层组成。

仅当您具有部分透明性时,事情才会变得复杂,因为过滤器会将其删除。
这是我在这种情况下发现的解决方法:

  • 删除两层上的Alpha通道(操作在上下文菜单中)

图像将收到白色背景,但请放心,我们稍后将其撤消。

  • 过滤器-动画-优化(差异)

现在我们在部分透明的地方有白色背景的差异层,但是我们需要这些像素是透明的,因此我们将采用diff的形状,并从原始顶层复制该形状的图像。确保选择了新生成的差异层,然后继续:

  • 图层-图层到图像大小
  • 编辑-复制(Ctrl + C)
  • 返回原始图片
  • 撤消,撤消以将透明度返回到我们的图层
  • 编辑-粘贴为-新图层
  • 粘贴差异层上的“ Alpha到选择”(在上下文菜单中)
  • 删除粘贴的差异层
  • 确保已选择顶层,并从顶层复制(Ctrl + C)
  • 现在,您有了差异,只需粘贴(Ctrl + V)并从中创建一个新层。

当然,不会发生魔术,并且部分透明的顶层不会更改颜色或降低底层的透明度,因此仅适用于扩展情况,其中顶层的更改后的像素覆盖了底层。


PS jsbueno的方法对我不起作用。


1

GIMP具有一种名为“颜色消除”的画笔模式。将用颜色X着色的画笔应用于确定的像素P1将创建具有降低的Alpha通道的像素P2,在正常模式下将P2与具有颜色X的像素混合会生成像素P1。使用“从颜色到Alpha”操作可以实现应用于选定区域或整个图像的相同效果。

笔刷模式也可以应用于“克隆工具”。在这种情况下,可以从背景图像A的像素中获取颜色并将其应用于结果图像B的相应像素。剩下的图像是所需的图像C。

详细说明,图像C的创建如下:

  1. 将图像A和B放置为图层(B下方的A)。
  2. 复制图像B并将其命名为C。将其放置在A和B之间。隐藏图像B。
  3. 选择“克隆工具”。在“工具选项”窗格上,设置以下选项:模式:“擦除颜色”;画笔:使用锋利的圆形画笔(“硬度100”)大小:增大画笔以轻松一次绘制所有图像。
  4. 选择A层并在左上像素上按CTRL +,以选择要克隆的位置并记住其位置(对于100%缩放,它将是(1,1),对于50%它将是(2,2),依此类推)。
  5. 现在选择C层,并从左上方开始绘画,并覆盖所有图像而无需抬起画笔。图像似乎没有变化。但是,如果隐藏层A,您会看到层C现在包含所需的图像。
  6. 检查结果:显示A层和C层。切换B层的可见性以确保图像看起来相同。(您也可以为图层B选择模式“差异”,在这种情况下,您应该获得绝对黑的图像。)

注意:如果背景图像不透明,则此方法按描述的方式工作。在背景图像的透明部分上,在A顶部混合C看起来与图像B不同。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.