gpt4 book ai didi

比较某些部分可变但无关紧要的图像

转载 作者:太空宇宙 更新时间:2023-11-04 00:48:18 26 4
gpt4 key购买 nike

我担心会发现图像之间的差异,如下面的黑色椭圆形示例所示。

我的问题是图像的某些部分也是变量,但我不想在寻找差异时考虑这部分。为了克服这个问题,我想使现在标有红色的区域“透明”:可变部分日期/时间和日期/时间编辑字段应排除在比较之外,如下图所示:

enter image description here

一种方法是:我可以使用“透明”颜色来标记不应比较的图像区域。为此,我需要按以下方式修改图像的基线副本:

  • 在图像编辑器中(例如,在 MSPaint 中)打开基线图像。
  • 选择您将用作“透明”颜色的颜色。
  • 将左上角像素的颜色更改为“透明”颜色。
  • 使用“透明”颜色填充要从比较中排除的图像区域。

如何通过编码将上述手动工作自动化?我想在 C 代码中实现上述行为。

最佳答案

我的建议是:

  1. 首先使用 ImageMagick 将解决方案作为命令行实现。
  2. 一旦成功,将此命令行移植到 ImageMagick 的 C API。

这里有一些关于使用 ImageMagick compare 比较图像的答案。它们可能不适用于您的确切问题,但您提供了足够的理论背景和实际示例来帮助您入门:

如果我正确理解您的问题,您确实只想比较两幅图像的某些部分,任何您想要从比较中排除您已经知道存在(无趣)差异的其他部分。对吧?

以这两张图片为例:

compare.png

reference.png

顺便说一句,这两张图片已经生成为 PDF,我也可以将下面描述的过程应用于 PDF 页面(无需先将它们转换为图像文件)。

您不一定需要透明面具——您也可以使用黑色(或任何颜色)面具。

创建一个 280x20 像素大小的绿色 mask :

convert -size 280x20 xc:green greenmask-280x20.png

现在使用 composite 将 mask 放在每个图像的顶部:

convert                               \
http://i.stack.imgur.com/Q1pyC.png \
greenmask-280x20.png \
-geometry +32+35 \
-compose over \
-composite \
c.png


convert \
http://i.stack.imgur.com/JVije.png \
greenmask-280x20.png \
-geometry +32+35 \
-compose over \
-composite \
r.png

-geometry +32+35 参数可能需要一些解释:它告诉 ImageMagick 将 greenmask 的左上角放置在右侧 32 像素和左上角底部 35 像素处原图的一角。

生成的图片在这里:

c.png

r.png

这里有一个讨论 ImageMagick 已知的不同 compose 方法的答案:

现在您的图像已准备好进行统计视觉比较,由 ImageMagick 的 compare 命令提供:

compare c.png r.png -compose src delta.png

delta.png 以红色显示所有不同的像素,其余为白色:

delta.png

或者,使用最简单的 compare 命令,其中引用图像用作顶部带有红色增量像素的浅色背景:

compare c.png r.png  delta2.png

delta2.png

关于比较某些部分可变但无关紧要的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28881471/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com