计算两张图片之间的距离

时间:2018-11-16 18:45:47

标签: image image-processing image-recognition

我正在尝试制作一个图像识别程序,它可以识别从0到9的基本数字。它的作用是向程序提供黑白图像,如下所示: enter image description here

,它将把每个字母缩小到9px x 9px,然后将分析9个3x3区域,并为每个区域生成黑白像素的比率,然后将对这9个区域使用这9个比率保存到数组中。在这些数组的最后,将生成9个比率为10的数组,并将其保存到文件中。

然后我添加另一个文件,并将其字母缩小到9x9,请注意,它将是同一类型的图像,黑白数字为0到9。在这一点上,我将进行嵌套的for循环,对于此新图像上的每个字母,我将通过减去特定3x3区域的比率并将其平方来计算保存文件中所有符号的欧几里得距离。加完所有9后,我将数字平方根结尾。在所有循环之后,它将返回在10中找到的最低欧氏距离,并返回找到该位置的索引。它将对所有10个数字(从0到9)执行此操作。

但是在这里我遇到了一个问题,我不确定我是否做错了什么,但是当我针对同一张图片进行测试时,请确保当每个数字得到的最小欧几里德距离为0自我陶醉。这是与自身比较时的输出:

0: min:0.0,closest to symbol 0.0
1: min:0.0,closest to symbol 1.0
2: min:0.0,closest to symbol 2.0
3: min:0.0,closest to symbol 3.0
4: min:0.0,closest to symbol 4.0
5: min:0.0,closest to symbol 5.0
6: min:0.0,closest to symbol 6.0
7: min:0.0,closest to symbol 7.0
8: min:0.0,closest to symbol 8.0
9: min:0.0,closest to symbol 9.0

但是当我将其与另一张图片进行比较时,例如: enter image description hereenter image description here

该程序将无法正常运行,仅正确匹配1个或2个字母。

用于测试第二张图片(胖字母)的输出:

0: min:1.8506293555082927,closest to symbol 2.0
1: min:1.564875407093958,closest to symbol 1.0
2: min:0.3639905193866784,closest to symbol 2.0
3: min:1.1955040828800994,closest to symbol 2.0
4: min:1.3529365858707012,closest to symbol 3.0
5: min:2.898762101870034,closest to symbol 3.0
6: min:1.5830312225733887,closest to symbol 3.0
7: min:0.8423801045588752,closest to symbol 2.0
8: min:0.5368578842642693,closest to symbol 2.0
9: min:0.7954891148284288,closest to symbol 2.0

用于测试第三张图片(手写字母)的输出:

0: min:0.9028763024523015,closest to symbol 0.0
1: min:1.4312693941385868,closest to symbol 2.0
2: min:0.9545516809617107,closest to symbol 3.0
3: min:1.254754527423458,closest to symbol 5.0
4: min:0.9153443316713837,closest to symbol 6.0
5: min:1.7914458590530422,closest to symbol 0.0
6: min:1.3450158998859059,closest to symbol 0.0
7: min:1.077083815334289,closest to symbol 6.0
8: min:0.725648713927017,closest to symbol 6.0
9: min:0.6018180093870922,closest to symbol 3.0

我发现字母使用不同的字体看起来有所不同,它可能需要不止一张图像才能准确识别其他字体,但是准确性如此之差,以至于我认为我必须做错了什么。手写的看起来确实很不一样,但是粗大的字母看起来与我的大致相同,除了较厚。它只能识别两个图像的10个数字中的一个或两个,我觉得这是靠运气,就像每天两次坏时钟是正确的。当我打印出脂肪9的欧几里德距离时,9确实给出了最高的欧几里德距离,这告诉我某些事情一定是错误的。

这是我用来计算距离的公式 enter image description here

0 个答案:

没有答案