我为游客开发了一个Android应用程序。我需要显示有关遗产建筑的信息。我必须将旅游者拍摄的照片与我自己的数据库进行比较,以检查我是否有与该建筑相关的信息。因为旅游者拍摄的照片可能与我的数据库中的照片不完全相同所以我&#39 ;我正在寻找一种算法来实时查找类似的图像。我已经阅读了有关SURF,SIFT,pHash等算法的信息,但我仍然对使用哪种算法感到困惑。(图像比较将在服务器端完成,而不是由应用程序完成。)
答案 0 :(得分:1)
使用图像散列算法。
对于简单的图像哈希:
这里有一些哈希已调整大小的图片的代码
function imageHash(pixels) {
var result = [],
sum = 0,
size = pixels.length,
gray, r, g, b, c, avg, i;
for (i = 0; i < size; i++) {
r = (pixels[i] >> 16) & 0xFF;
g = (pixels[i] >> 8) & 0xFF;
b = (pixels[i]) & 0xFF;
gray = 0.2126 * r + 0.7152 * g + 0.0722 * b;
sum += gray;
result[i] = gray;
}
avg = sum / size;
for (i = 0; i < size; i++) {
result[i] = result[i] > avg ? 1 : 0;
}
return result;
}