imagemagick-将两个JPEG与蒙版图像进行比较

时间:2019-02-13 18:46:03

标签: compare imagemagick

我想比较两个JPG图像。由于JPG补偿,我知道参数“模糊”。 现在,我想用遮罩比较这两个图像-我不想比较整个矩形,只比较一部分。 结果,我希望像素差异可以计算百分比差异,而在第二步中,我想要一张图像,以红色/黑色显示差异。

我找到了这篇文章:New compare feature

我的旧方法(比较整个矩形):

/usr/bin/compare -metric ae /mnt/usbstorage/tmp/15.jpg /mnt/usbstorage/tmp/14.jpg -compose src /dev/null 2>&1
=> 8432 Pixels different

我的旧方法(比较整个矩形并将其绘制为图像):

/usr/bin/compare -metric ae /mnt/usbstorage/tmp/15.jpg /mnt/usbstorage/tmp/14.jpg -compose src /dev/null -highlight-color Red -lowlight-color Black /mnt/usbstorage/tmp/diff.gif

我的新尝试(将图像与蒙版图像进行比较):

/usr/bin/compare -read-mask /mnt/usbstorage/tmp/mask.png -metric ae /mnt/usbstorage/tmp/15.jpg /mnt/usbstorage/tmp/14.jpg -compose src /dev/null 2>&1
=> 8432 Pixels different

不同的像素不会改变! 8432 <=> 8432 ...所以我的口罩什么都没变!

当我执行该命令以将差异保存到新图像中时,遮罩有灰色位置,未更改像素有黑色位置,不同像素有红色区域->完美。图像完美,像素比较保持不变。为什么?

我不明白-您有解释/示例吗?我做错什么了吗?

以下是文件:

14.jpg

15.jpg

mask.png

1 个答案:

答案 0 :(得分:0)

被屏蔽的比较仅在IM 7.0.3.9或更高版本中有效。在IM 7中,必须先添加magick才能进行比较:

magick compare -metric rmse -read-mask mask.png 14.jpg 15.jpg 14_15_diff.png


enter image description here

遮罩下的红色区域是不同的地方。遮罩下的白色区域相同。灰色区域在蒙版之外。