游戏简介: 将中间的图片还原成右上角的图片。
开发原因:最近突然想到回归,以及十多年没玩,以前只能拼三阶的。但是回归后发现这个拼图和我大二时的一个课设作业很像。当时做的是八数码问题的解决,思路当时是上课介绍的深度搜索和宽度搜索,但是速度感人(在9!这个大小的空间中搜索状态,所以速度慢)…。看到老师有提醒到可以用A*算法,所以当时最后是用A*算法做的。我一联想,就发现我只要解决了对图片进行编号问题,那么我就可以解决做出一个类似的辅助拼图东西,正好我毕设做的又是孪生目标跟踪,加上之前对神经网络也自学过,那岂不是我只要能通过神经网络进行比对,进行判断是否是同一张图片,问题就解决了?想法很美好,现实很残酷。
核心思路:A*算法 + 相似性比对判断同一图片。
神经网络虽然能更好的判断是不是同一图片,但是首先缺乏数据集,其次懒,想着有没有类似的判断相似性的算法。一找还真找到了。分别是以下四个,phash,dhash,ahash,cosin相似度。
实验素材
output为左图切割,output2为右图切割,顺序从左到右,从上到下。
实验结果
左图最右下角的空白图片直接对应右图最右下角的图片,不参与相似度比对
ahash
左图编号, 右图编号 当前左图与右图切割后的小图片的汉明距离
1 2 [29, 16, 25, 28, 31, 25, 39, 28]
2 3 [35, 30, 11, 30, 31, 21, 31, 28]
3 6 [25, 34, 25, 36, 29, 9, 37, 44]
4 1 [14, 37, 40, 29, 36, 30, 44, 35]
5 5 [36, 33, 26, 35, 22, 32, 32, 35]
6 8 [44, 27, 32, 23, 32, 44, 24, 9]
7 4 [35, 36, 35, 24, 33, 33, 29, 28]
8 8 [41, 26, 29, 28, 33, 39, 21, 14]
dhash
左图编号, 右图编号 当前左图与右图切割后的小图片的汉明距离
1 2 [39, 11, 32, 33, 31, 29, 37, 36]
2 3 [35, 31, 8, 29, 27, 25, 35, 32]
3 6 [36, 28, 25, 30, 38, 18, 30, 31]
4 1 [20, 32, 29, 38, 32, 32, 40, 27]
5 5 [41, 37, 30, 37, 19, 31, 33, 32]
6 8 [36, 32, 33, 36, 28, 38, 34, 27]
7 4 [38, 34, 33, 22, 34, 26, 32, 29]
8 4 [35, 37, 38, 23, 39, 35, 25, 34]
phash
左图编号, 右图编号 当前左图与右图切割后的小图片的汉明距离
1 2 [24, 4, 13, 16, 18, 17, 21, 17]
2 3 [19, 13, 4, 13, 15, 16, 16, 12]
3 6 [18, 18, 15, 14, 20, 11, 19, 15]
4 4 [12, 16, 11, 10, 18, 13, 17, 11]
5 5 [22, 18, 15, 14, 10, 17, 21, 13]
6 8 [19, 11, 10, 11, 13, 16, 20, 8]
7 4 [16, 20, 15, 8, 16, 17, 19, 13]
8 3 [22, 22, 15, 18, 22, 19, 21, 17]
结果分析
令人很失望的是没有一个能全部分析对… 这里用cosin余弦窗跑的实在是太慢了,还没比对两张图片呢,而且效果在这里好像不咋滴,我拼图时间都快到了,其他的虽然秒出,但是效果又不行。