我正在为游客开发一款安卓应用程序。我需要展示有关文化遗产建筑的信息。我必须将游客拍摄的照片与我的数据库进行比较,以检查是否与该建筑物相关联。由于游客拍摄的照片可能与我的数据库中的照片不完全相同,因此我正在寻找一种实时查找相似图像的算法。我已经阅读了诸如SURF、SIFT和pHash等算法,但仍然对使用哪种算法感到困惑。(图像比较将在服务器端而不是应用程序中进行。)
我正在为游客开发一款安卓应用程序。我需要展示有关文化遗产建筑的信息。我必须将游客拍摄的照片与我的数据库进行比较,以检查是否与该建筑物相关联。由于游客拍摄的照片可能与我的数据库中的照片不完全相同,因此我正在寻找一种实时查找相似图像的算法。我已经阅读了诸如SURF、SIFT和pHash等算法,但仍然对使用哪种算法感到困惑。(图像比较将在服务器端而不是应用程序中进行。)
使用图像哈希算法。
对于简单的图像哈希:
这里是一些哈希已经调整大小的图像的代码
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;
}