我知道一些比较2个图像与ImageMagick或OpenCV的方法
但对于我的情况,我也有不同位置的相同角色。 的 IMAGE1:
图像2:
或
那么,我现在该怎么做才能找到Image1和Image2之间的%差值?
答案 0 :(得分:3)
这实际上回答了你的问题 - 事实上并没有对图像3和图片4提出任何问题 - 但我担心这对你没什么帮助。
正如@GPPK建议的那样,你需要在汉字字符周围修剪无关材料,你可以使用ImageMagick中的-trim
命令。我添加了一个薄的红色边框,以便您可以看到边缘的位置:
convert kanji2.png -trim kanji2-t.png
如果你想对图像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度并选择具有最小修剪边界框的图像,以使其更加“方向不变”。但是如果角色被剪切,或更胖,更薄,或更亮,或更暗,或者相反,你仍然会有问题......我认为你需要研究“模板匹配”。