使用ImageMagick“比较”图像

我如何获得两幅图像之间的差异? 我有原始图像。 有人写过原始图像的精确副本。 现在,我需要将原件与图像上的文字进行比较,并提取图像格式中的文字。

例如:我有一张房子的照片。 有人拿了一份副本,并在副本上写上“你好!”。 我想以某种方式比较两张照片,删除房屋,并留下一个“你好!”字样的图像。

这可能与ImageMagick? 我知道有办法获得图像之间的统计差异,但这不是我所期待的。


我自己的最爱是这两个:

 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”,而不是默认的红色。


左图:带有文字的图像中心:原始图像右:蓝色差异(但有一些背景背景) 仅蓝色差异像素;首先将比较的图像作为亮起的背景

compare 
        porsche-with-scratch.pdf  porsche-original.pdf 
       -highlight-color blue 
        diff-compose-default.pdf

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


虽然compare在许多应用程序中做得很好,但我发现有时候我更喜欢不同的方法,特别是在比较大多灰度级的图像时:

convert '(' file1.png -flatten -grayscale Rec709Luminance ')' 
        '(' file2.png -flatten -grayscale Rec709Luminance ')' 
        '(' -clone 0-1 -compose darken -composite ')' 
        -channel RGB -combine diff.png

这个想法如下:将file1.pngfile2.png都转换为灰度。 然后将第一个作为结果图像的红色通道,第二个作为绿色通道。 蓝色通道由这两个使用darken组合运算符组成,这意味着取最小值。

所以两幅图像中的白色都保持白色。 两幅图像中黑色的东西都保持黑色。 第一幅图像为白色但第二幅为黑色的东西变成红色,第二幅变成白色,第一幅变成黑色的东西变为绿色。

结果为您提供了一个很好的颜色编码图像,您可以轻松地将绿色与第一个输入相关联,并将红色与第二个输入相关联。 下面是一个例子,我使用它来比较来自LaTeX的输出和KaTeX的输出(在我修正了一些使之更好的bug之前):

在这里输入图像描述

您可以将这些方法结合起来,使用compare来查看更改的内容,然后使用上面的内容更详细地查看更改方式。

链接地址: http://www.djcxy.com/p/64025.html

上一篇: “Diff” an image using ImageMagick

下一篇: Simple and fast method to compare images for similarity