如果我有以下 4 张图片:
如何确定两个 '6' 相同但 5 和 6、6 和 9、9 和 5 等不一样?
图像将始终为单色(即只有黑白,没有其他颜色)
目前,我只是在计算图像中黑色像素的数量,这似乎可以正常工作,但我不确定它是否可靠或者是否有更好的方法。在上面的例子中,两个“6”都有 29 个黑色像素,而 5 有 26 个,9 有 28 个。所以 6 和 9 之间的差异只有 1 个像素。但是在其他字体中,9 和 6 的像素数相同。例如:
两者都有相同数量的前景像素。
如果我有以下 4 张图片:
如何确定两个 '6' 相同但 5 和 6、6 和 9、9 和 5 等不一样?
图像将始终为单色(即只有黑白,没有其他颜色)
目前,我只是在计算图像中黑色像素的数量,这似乎可以正常工作,但我不确定它是否可靠或者是否有更好的方法。在上面的例子中,两个“6”都有 29 个黑色像素,而 5 有 26 个,9 有 28 个。所以 6 和 9 之间的差异只有 1 个像素。但是在其他字体中,9 和 6 的像素数相同。例如:
两者都有相同数量的前景像素。
您是在尝试检测完全相同的内容,还是检测接近相同/近似匹配的内容(这就是真正的 OCR)?
您也可以从找到图像/字形的加权中心开始,可能会缩放尺寸以获得可比性(如果您必须匹配不同的尺寸),然后比较两个图像之间的像素到像素相似度(以相似度百分比表示) .
当然,如果图像都为您裁剪和调整大小,那么您只需扫描比较所有像素的图像,即可实现强力“相似性”测量。
请参阅 BufferedImage.getRGB(): http://docs.oracle.com/javase/1.5.0/docs/api/java/awt/image/BufferedImage.html#getRGB(int,%20int)
您可以编写一个函数来获取两个 RGB 像素值(最多为 0xffffff 的整数),分离组件,并对组件差异求和。