【发布时间】:2018-02-03 02:09:31
【问题描述】:
我正在使用 ImageMagick 比较文件,我希望它返回退出代码 0。如果图像在某个相似度阈值内。但是,使用度量 RMSE 并设置差异阈值以允许一定范围的可变性,它仍然返回 1。当我给它 2 个相同的图像时,它似乎只返回 0。
例如:
> imageMagick compare -verbose -metric RMSE -dissimilarity-threshold 0.5 new_file.png old_file.png null
> echo $?
new_file.png PNG 1233x835 1233x835+0+0 8-bit sRGB 325677B 0.040u 0:00.040
old_file.png PNG 1233x835 1233x835+0+0 8-bit sRGB 325712B 0.040u 0:00.039
Image: new_file.png
Channel distortion: RMSE
red: 0 (0)
green: 0.358198 (5.46575e-06)
blue: 0.438701 (6.69415e-06)
alpha: 0 (0)
all: 0.283181 (4.32106e-06)
new_file.png=>null PNG 1233x835 1233x835+0+0 8-bit sRGB 216246B 0.210u 0:00.220
1
由于这两个图像文件的差异很小,并且计算出的总分(0.283181)小于我的阈值 0.5,我希望这两个图像注册为相似并返回 0。(我已经尝试了很多dissimilarity-thresholds 介于 0.1 和数百万之间,但它们似乎也没有效果。)我是否误解了如何使用这个论点?
编辑:我知道我可以使用其他组合获得我想要的结果,例如使用 -metric AE 和 -fuzz 0.5%,但我仍然很好奇,如果我可以使用带 RMSE 的差异阈值。
【问题讨论】:
-
我认为
-dissimilarity-threshold只是为了让-subimage-search在图像已经太不相似而无法被视为匹配时不再费心比较图像(这是一项昂贵的操作),而且它是可能被compare忽略了。
标签: image-processing imagemagick