这是找到类似于"输入"的最佳算法。来自一组图像的图像

时间:2015-09-15 16:05:28

标签: android algorithm image-processing

我为游客开发了一个Android应用程序。我需要显示有关遗产建筑的信息。我必须将旅游者拍摄的照片与我自己的数据库进行比较,以检查我是否有与该建筑相关的信息。因为旅游者拍摄的照片可能与我的数据库中的照片不完全相同所以我&#39 ;我正在寻找一种算法来实时查找类似的图像。我已经阅读了有关SURF,SIFT,pHash等算法的信息,但我仍然对使用哪种算法感到困惑。(图像比较将在服务器端完成,而不是由应用程序完成。)

1 个答案:

答案 0 :(得分:1)

使用图像散列算法。

  • 哈希所有存储的图像
  • 哈希您的传入图片
  • 比较您收到的图片'散列到存储的哈希值。

对于简单的图像哈希:

  • 将图片大小调整为较小的标准尺寸(例如16x16),因此哈希不会占用太多空间
  • 将图片转换为灰度
  • 如果像素值大于平均灰度值,请将其设置为1,否则将其设置为0

这里有一些哈希已调整大小的图片的代码

​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;
}