【问题标题】:imagemagick - compare two JPEGs with masking imageimagemagick - 将两个 JPEG 与掩蔽图像进行比较
【发布时间】:2019-07-07 16:59:00
【问题描述】:

我想比较两张 JPG 图片。由于 JPG 补偿,我知道参数“fuzz”。 现在我想用蒙版比较这两个图像——我不想比较整个矩形,只比较它的一部分。 因此,我希望像素差异来计算百分比差异,并且在第二步中我想要一个图像,它显示红色/黑色的差异。

我发现这篇文章: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...所以我的面具不会改变任何东西!

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

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

这里是文件:

【问题讨论】:

    标签: compare imagemagick


    【解决方案1】:

    屏蔽比较仅适用于 IM 7.0.3.9 或更高版本。在 IM 7 中,您必须在比较之前添加魔法:

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


    红色区域是它们在面具下的不同之处。白色区域是它们在面具下相同的地方。灰色区域在蒙版之外。

    【讨论】:

    • 我认为 OP 是在询问为什么读取掩码未应用于 Absolute Error 指标。
    • 应该是。但它只适用于 IM 7。他正在使用 IM 6。
    • 正确,使用 metric ae 与屏蔽没有区别。仅使用 rmse
    • AE 只计算差异。 RMSE 计算均方根误差,其中包括 0 表示像素之间没有差异。如果掩码包含一些差异但不是所有差异,AE 应该给出不同的计数。
    猜你喜欢
    • 2015-11-01
    • 1970-01-01
    • 2013-12-30
    • 2021-06-02
    • 1970-01-01
    • 2017-03-14
    • 2019-04-16
    • 2014-04-01
    • 2015-01-23
    相关资源
    最近更新 更多