⚠️ 这是一个非官方翻译网站,与 ImageMagick Studio LLC 无关。准确信息请参阅原文(https://imagemagick.org/compare/)

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

rose rose ==> rose

差异图像中的红色区域强调(高亮)受图像锐化影响的像素,而白色则淡化(低亮)未受锐化处理影响的像素。

除了对图像及其重建结果的差异进行可视化解释之外,我们还会报告差异的数学度量:

$ 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 命令可识别以下选项。点击某个选项可获取该选项工作方式的更多详情。

选项 说明
-adjoin 将多幅图像合并为单个多图像文件
-alpha alpha 通道的 on, activate, off, deactivate, set, opaque, copy, transparent, extract, background, shape 设置
-authenticate value 用此密码解密图像
-auto-orient 自动调整图像方向
-background color 背景色
-brightness-contrast geometry 改善图像的亮度/对比度
-channel type 将选项应用于选定的图像通道
-colorspace type 设置图像色彩空间
-compose operator 设置图像合成运算符
-crop geometry 裁剪图像
-decipher filename 将加密像素转换为明文
-debug events 显示大量调试信息
-define format:option 定义一个或多个图像格式选项
-density geometry 图像的水平和垂直分辨率
-depth value 图像位深度
-dissimilarity-threshold value (子)图像匹配的最大失真(默认 0.2)
-distort type coefficients 扭曲图像
-encipher filename 将明文像素转换为加密像素
-extract geometry 从图像中提取区域
-fuzz distance 此距离内的颜色视为相同
-gravity type 文本的水平和垂直放置
-help 打印程序选项
-highlight-color color 用此颜色强调像素差异
-identify 识别图像的格式和特性
-interlace type 图像隔行扫描方案的类型
-level value 调整图像对比度的级别
-limit type value 像素缓存资源上限
-log format 调试信息的格式
-lowlight-color color 用此颜色淡化像素差异
-metric type 用此指标测量图像间的差异。默认指标为 RMSE。
-negate 将每个像素替换为其补色
-profile filename 添加、删除或应用图像配置文件
-quality value JPEG/MIFF/PNG 压缩级别
-quantize colorspace 在此色彩空间中减少图像颜色
-quiet 抑制所有警告消息
-read-mask filename 为图像关联一个读取掩码
-regard-warnings 重视警告消息
-repage geometry 图像画布的尺寸和位置
-resize geometry 调整图像尺寸
-respect-parentheses 设置在括号边界内持续有效
-rotate degrees 对图像应用 Paeth 旋转
-sampling-factor geometry 水平和垂直采样因子
-seed value 为新的伪随机数序列设置种子
-separate 将图像通道分离为灰度图像
-set attribute value 设置图像属性
-sigmoidal-contrast geometry 在不使高光或阴影饱和的情况下提高对比度
-similarity-threshold value (子)图像匹配的最小失真(默认 0.0)
-size geometry 图像的宽度和高度
-subimage-search 搜索子图像
-synchronize 将图像同步到存储设备
-taint 将图像标记为已修改
-transparent-color color 透明色
-trim 修剪图像边缘
-verbose 打印图像的详细信息
-version 打印版本信息
-virtual-pixel method 图像边界外像素的访问方式
-write-mask filename 为图像关联一个写入掩码