比较两个图像并获得百分比差异

时间:2016-01-07 10:03:25

标签: opencv imagemagick

我知道一些比较2个图像与ImageMagick或OpenCV的方法

但对于我的情况,我也有不同位置的相同角色。 的 IMAGE1:

enter image description here

图像2:

enter image description here

enter image description here

enter image description here

那么,我现在该怎么做才能找到Image1和Image2之间的%差值?

1 个答案:

答案 0 :(得分:3)

这实际上回答了你的问题 - 事实上并没有对图像3和图片4提出任何问题 - 但我担心这对你没什么帮助。

正如@GPPK建议的那样,你需要在汉字字符周围修剪无关材料,你可以使用ImageMagick中的-trim命令。我添加了一个薄的红色边框,以便您可以看到边缘的位置:

convert kanji2.png -trim kanji2-t.png

enter image description here

如果你想对图像1和图像2进行比较,然后比较它们,你可以像这样一次性完成:

convert -metric ae kanji1.png kanji2.png -trim -compare -format "%[distortion]" info:
0

显示如果修剪kanji1和kanji2,结果图像中的像素不同。

如果你像这样比较修剪过的kanji1和kanji3,你会得到:

convert -metric AE kanji1.png kanji3.png -trim -compare -format "%[distortion]" info:
893184

表示900,000像素的5,000,000是不同的。

同样,如果你比较kanji1和kanji4:

convert -metric AE kanji1.png kanji4.png -trim -compare -format "%[distortion]" info:
1.14526e+06

或500万中的110万。

但是,当您的图像尺寸不同(比例)或旋转时,这无济于事。

您可以在比较之前将图像缩放到标准化尺寸,我想这可能会帮助您变得更加“尺度不变”

convert -metric AE kanji1.png kanji4.png -trim -scale 1000x1000! -compare -format "%[distortion]" info:

您还可以使用一个小的迭代程序旋转图像,将图像旋转+/- 20度并选择具有最小修剪边界框的图像,以使其更加“方向不变”。但是如果角色被剪切,或更胖,更薄,或更亮,或更暗,或者相反,你仍然会有问题......我认为你需要研究“模板匹配”