为了账号安全,请及时绑定邮箱和手机立即绑定

使用ImageMagick“区分”图像

使用ImageMagick“区分”图像

如何获得两个图像之间的差异?我有原始图像。有人在原始图像的精确副本上写过字。现在,我需要将原始图像与图像上的文字进行比较,并仅提取图像格式的文字。例子:我有一张房子的照片。有人拿了副本,并在副本上写了“你好!”。我想以某种方式比较这两张图片,搬走房子,然后留下“你好!”字样的图片。ImageMagick是否可能?我知道有几种方法可以得出图像之间的统计差异,但这不是我想要的。
查看完整描述

3 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

我自己的最爱是以下两个:


 compare image1 image2 -compose src diff.png

 compare image1 image2 -compose src diff.pdf

上面两个命令之间的唯一区别:第一个命令将两个图像之间的视觉差异显示为PNG文件,第二个命令以PDF显示。


生成的差异文件显示红色不同的所有像素。不变的显示为白色。


简短而甜美。


请注意,你的图像需要不属于同一类型。您甚至可以在一种情况下混合JPEG,TIFF,PNG:图像应具有相同的大小(图像尺寸以像素为单位)。输出格式由输出文件名的扩展名确定。


如果出于某种原因,您需要比默认分辨率(72 dpi)更高的分辨率-然后只需添加适当的-density参数即可:


 compare -density 300 image1 image2 -compose src diff.jpeg

图解示例

以下是上述命令的各种变化结果的一些说明。注意:比较的两个文件甚至是 PDF文件,因此它也适用于这些文件(只要它们是1页)!


左:带有文本的       图像中心:原始图像       右:以红色像素表示的差异(=文本)。 仅红色差异像素; 相同的像素是白色的


compare \

        porsche-with-scratch.pdf  porsche-original.pdf \

       -compose src \

        diff-compose-default.pdf

这是我上面前面建议的命令。


左:带文字的       图像中心:原始图像       右: “ seagreen”像素的差异。 仅海绿色差异像素; 相同的像素是白色的


compare \

        porsche-with-scratch.pdf  porsche-original.pdf \

       -compose src \

       -highlight-color seagreen \

        diff-compose-default.pdf

此命令添加一个参数以使差异像素为“ seagreen”,而不是默认的红色。


左:带有文本的       图像中心:原始图像       右:蓝色差异(但带有某些上下文背景) 仅蓝色差异像素; 比较图像中的第一个作为增亮背景l


compare \

        porsche-with-scratch.pdf  porsche-original.pdf \

       -highlight-color blue \

        diff-compose-default.pdf

此命令删除该-compose src部分-结果是默认行为,compare该行为的默认行为是将2个衍射图像中的第一个图像保留为浅色背景。(这次添加了参数,以使差异像素显示为蓝色。)


查看完整回答
反对 回复 2019-12-07
?
MM们

TA贡献1886条经验 获得超2个赞

虽然compare在许多应用程序中都表现出色,但我发现有时我更喜欢另一种方法,特别是在比较大多数灰度图像时:


convert '(' file1.png -flatten -grayscale Rec709Luminance ')' \

        '(' file2.png -flatten -grayscale Rec709Luminance ')' \

        '(' -clone 0-1 -compose darken -composite ')' \

        -channel RGB -combine diff.png

这个想法是:将file1.png和都转换file2.png为灰度。然后将第一个作为生成图像的红色通道,将第二个作为绿色通道。蓝色通道是使用darkencompose运算符从这两个通道形成的,这实际上意味着需要占用最少的空间。


因此,两个图像中都是白色的东西保持白色。在两个图像中都是黑色的东西保持黑色。在第一个图像中为白色但在第二个图像中为黑色的事物变为红色,在第二个图像中为白色但在第一图像中为黑色的事物变为绿色。


结果为您提供了很好的颜色编码图像,您可以轻松地将绿色与第一个输入关联,将红色与第二个输入关联。这是一个示例,我在此示例中将LaTeX的输出与KaTeX的输出进行比较(在我修复一些错误以使其变得更好之前):

您可以结合的方法,用compare看哪里的东西改变了,然后用上面更详细地看怎么它改变。


查看完整回答
反对 回复 2019-12-07
?
BIG阳

TA贡献1859条经验 获得超6个赞

我最初是使用Gimp自己进行这些图像比较的,但是我是直接在输入图像上使用“纹理提取”图层模式进行的,因此公共区域最终将变成灰色,而差异将在一个方向上变成黑色,而在另一个方向上变成白色。 。较难阅读,但生成速度更快,并且可以包含颜色信息。我想如果您使用“仅暗”而不是“屏幕”,并且将未使用的通道上的颜色改为白色而不是黑色,则您将更加匹配我的命令。

查看完整回答
反对 回复 2019-12-07
  • 3 回答
  • 0 关注
  • 782 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信