有什么方法可以提高-subimage-search 的性能

Is there any way to improve -subimage-search performance

我有一张1600x1600px的大图和一张50x50px的小图。 运行 测试大约需要 3 分 20 秒。小图像预计仅在 50 x 500 像素的区域内出现在大图像内。

我试过了,但没用: compare -metric mse -subimage-search "big.png[50x500+0+118]" "small.png" null:

让我们big.gif:

convert -size 1600x1600 xc:yellow -fill black -draw "rectangle 5,130 14,139" big.gif

small.gif

convert -size 10x10 xc:black small.gif

现在让我们看看裁剪后的搜索区域:

convert big.gif -crop 50x500+0+118 x.gif

因此,您需要的命令是:

convert big.gif -crop 50x500+0+118 +repage miff:- | compare -metric mse -subimage-search miff:- small.gif null:
0 (0) @ 5,12

这使搜索时间从 91 秒减少到 0.7 秒。

如果您的实际问题更难、更大或更紧迫,您可以将图像分成两半,并平行地做两半 - 记住将两半重叠成您想要的大小 sub-image :

convert big.gif -crop 50x260+0+118 +repage miff:- | compare -metric mse -subimage-search miff:- small.gif null: &
convert big.gif -crop 50x260+0+368 +repage miff:- | compare -metric mse -subimage-search miff:- small.gif null: &
wait

现在需要 0.4 秒:-)