compare
使用示例 • 选项一览
使用 compare 程序可以对图像与其重建结果之间的差异进行数学化和可视化的标注。关于如何组织 compare 命令的建议,请参阅命令行处理,或查看下文的命令使用示例。
使用示例
为了说明 compare 命令的实用性和易用性,这里列举几个示例。首先,让我们将一幅图像与其锐化后的版本进行比较:
magick rose.jpg -sharpen 0x1 reconstruct.jpg
magick compare rose.jpg reconstruct.jpg difference.png
magick compare -compose src rose.jpg reconstruct.jpg difference.png
差异图像中的红色区域强调(高亮)受图像锐化影响的像素,而白色则淡化(低亮)未受锐化处理影响的像素。
除了对图像及其重建结果的差异进行可视化解释之外,我们还会报告差异的数学度量:
$ magick compare -verbose -metric rmse rose.jpg reconstruct.jpg difference.png
Image: rose.jpg
Channel distortion: RMSE
red: 2833.91 (0.0432427)
green: 2401.45 (0.0366438)
blue: 2560.43 (0.0390696)
all: 2604.73 (0.0397456)
或者,如果只想要红色通道的失真,请使用以下命令:
$ magick compare -channel red -metric PSNR rose.jpg reconstruct.jpg difference.png
27.2817 (0.227348)
或者,如果只想要整幅图像的失真,请使用以下命令:
$ magick compare -metric PSNR rose.jpg reconstruct.jpg difference.png
28.0142 (0.233452)
如果重建图像是原图像的子图像,compare 程序会返回最佳匹配的偏移量。此外,它还会返回一幅相似度图像:完全匹配的位置为纯白,完全不匹配的位置为黑色,其余则以介于两者之间的灰度级别表示:
$ magick compare -metric NCC -subimage-search logo.png hat.png similarity.pfm
0 (0) @ 417,44 [0]
$ magick identify -define identify:locate=maximum -define identify:limit=1 similarity.pfm
Channel maximum locations:
Gray: 65532.9 (0.999967) 417,44
方括号内的值是归一化的相似度指标。
请注意,相似度搜索会考虑虚拟页面偏移量。为确保得到预期的结果,请确保图像的页面偏移量为 +0+0。
ImageMagick 的子图像搜索功能由于其迭代特性,速度可能相当慢。但是,如果你使用的 ImageMagick 版本包含 FFTW(Fastest Fourier Transform in the West)支持,且指标为 DPC、MSE、NCC、RMSE、PHASE 或 PSNR 之一,则处理时间有望获得数量级的提速。相关讨论请参阅 Accelerated Subimage-search Compare。
如果未启用 -subimage-search 选项,ImageMagick 会从两幅图像的页面偏移量(通常是左上角)开始,逐像素地进行直接比较。当两幅图像尺寸不同时,较小的图像会与较大的图像对齐。较小图像中多出的区域会被视为虚拟像素。这些虚拟像素会根据所选的虚拟像素方式进行处理,从而影响比较中如何处理不匹配的区域。因此,这些额外区域可能会影响比较指标,进而可能影响整体的相似度评估。若只想比较真实像素,请使用 -define compare:virtual-pixels=false。
你可以在 Examples of ImageMagick Usage 中找到更多使用 compare 的示例。
如果两幅图像根据指定的指标和 fuzz 值得出的差异为 0,则认为它们相似;但归一化互相关指标(NCC)是个例外,当其归一化互相关为 1 时才认为两幅图像相似。默认指标为 NCC。
compare 程序在出错时返回 2,图像相似时返回 0,不相似时返回 0 到 1 之间的值。
选项一览
compare 命令可识别以下选项。点击某个选项可获取该选项工作方式的更多详情。


