image-processing - 获取类似于 ImageMagick 输出的感知差异输出图像

标签 image-processing imagemagick diff

有没有一种方法可以获得类似于 ImageMagick 的 perceptualdiff 输出,而不是如下所示的类似 X 射线的深色图像?

感知差异输出

ImageMagick 输出

最佳答案

更新:

看来我一开始误读了OP的问题。他想要获得类似于 ImageMagick 的 compare 生成的输出,尽管是来自不同的工具 perceptualdiff。我误以为他想要从 ImageMagick 获得类似 perceptualdiff 的输出!

在提出这个问题之前,我并不知道 perceptualdiff根本没有。

downloading it之后玩了一会儿,我看不到有任何选项来调整其输出“delta”图像,使其看起来像 ImageMagick 的 compare -compose src-结束!

perceptualdiff 网站链接到一些论文,这些论文据称描述了它使用的算法及其优点。我没有时间阅读...

我将原样保留在下面,以方便 future 的读者。


由于OP的质量思想不关心提供任何输入图像来玩,让我们创建我们自己的......结果如下:

他们之间有区别吗?让我们看看...

1。 ImageMagick 提供的“标准”compare 命令

如果您在没有任何选项的情况下调用 compare,ImageMagick 将隐式为合成应用 -compose src-over 设置:

compare                             \
 /image/xLyrE.png \
 /image/uHQjz.png \
 delta1.png

此比较的结果,delta1.png 是左下方的图像。请注意以下事实:

  1. delta1.png 已将“原始”图像(即命令行中提到的第一个图像)作为稍微苍白的背景图像添加到合成 delta 图像中。

  2. 前景是第二个图像与原始图像不匹配的红色像素。

2。使用自定义 -highlight-color 调用 compare

看起来边框像素也不同。然而,我们的眼睛可能会被输入图像已经有红色边框的事实所欺骗。因此,让我们运行一个稍微修改过的命令:

compare                             \
 /image/xLyrE.png \
 /image/uHQjz.png \
-highlight-color green              \
 delta3.png

生成的图像如下右图所示。正如您所看到的,“差异”像素现在是绿色的。到目前为止,两个“delta”PNG 都表明了两个主要区别:

  1. 比较两个输入图像时,“Hello”世界在水平方向上略有位移
  2. 每张图像周围的红框颜色略有不同。

3。使用自定义 -lowlight-color 调用 compare

为了更接近OP所需的输出,我们可以添加-lowlight-color black并将突出显示颜色更改为白色:

compare                             \
 /image/xLyrE.png \
 /image/uHQjz.png \
-highlight-color white              \
-lowlight-color black               \
 delta2.png

结果如下左。看起来已经与OP想要的类似了,不是吗?

4。将 compare-compose MinusSrc

结合使用

另一个类似的输出是通过修改隐式组合模式并将其替换为 -compose minussrc 产生的:

compare                             \
 /image/xLyrE.png \
 /image/uHQjz.png \
-compose minussrc                   \
 delta-minussrc.png

结果如下,右侧。

5。测试比较与其支持的所有合成模式

ImageMagick 内置了超过 5 种构图模式。以下命令列出了所有这些:

convert -list compose

You will see the following list:

Atop Blend Blur Bumpmap ChangeMask Clear ColorBurn ColorDodge Colorize CopyBlack CopyBlue CopyCyan CopyGreen Copy CopyMagenta CopyOpacity CopyRed CopyYellow Darken DarkenIntensity DivideDst DivideSrc Dst Difference Displace Dissolve Distort DstAtop DstIn DstOut DstOver Exclusion HardLight HardMix Hue In Lighten LightenIntensity LinearBurn LinearDodge LinearLight Luminize Mathematics MinusDst MinusSrc Modulate ModulusAdd ModulusSubtract Multiply None Out Overlay Over PegtopLight PinLight Plus Replace Saturate Screen SoftLight Src SrcAtop SrcIn SrcOut SrcOver VividLight Xor

If you are curious, you can test them out easily. The following command creates a delta PNG for each one:

 convert -list compose                          \
  | while read compositionmode ; do
          compare                               \
             /image/xLyrE.png \
             /image/uHQjz.png \
           -compose ${compositionmode}          \
            delta-${compositionmode}.png
  done

(请注意,上面提供的输入文件不一定是演示各个合成模式的功能和优点的最佳文件。)

关于image-processing - 获取类似于 ImageMagick 输出的感知差异输出图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27537864/

相关文章:

matlab - matlab中如何通过regionprops控制检测对象的顺序?

c++ - 如何使图像魔术将输出 ppm 转换为标准输出

linux - 如何为 mogrify 添加后缀 - imagemagick

emacs - 如何在 Emacs 中有效地合并两个目录?

image-processing - 用于六边形(和分箱)图像的神经网络?

matlab:去除小边缘并简化组织学图像

python - OpenCV:检测区域是直的还是弯曲的

bash - 如何在 ImageMagick 中对输入的 PNG 文件进行排序

python - 单行差异

git - git diff -M 如何工作?