【问题标题】:Index on images to access data in a database图像索引以访问数据库中的数据
【发布时间】:2009-04-09 21:17:56
【问题描述】:

当数据集的键是字符串时,我们有 Trie 结构可以有效地访问数据。如果数据集的关键是图像,那么最好的索引是什么?

我说的关键是指一些可以唯一区分数据的东西。这是一个不太常用的场景,即通过图像访问数据吗?我确实觉得有些应用程序像指纹数据库一样使用它。

在这种情况下散列有帮助吗?我的意思是根据像素值将图像散列成一个唯一的数字。

请分享这方面的任何指示。

干杯

【问题讨论】:

  • 使用图像作为密钥是什么意思?你是指图像标识符还是文件名?
  • 为了提出更好的建议,您应该更详细地说明您想要做什么。

标签: database indexing


【解决方案1】:

您可以使用哈希函数根据图像查找项目。但我认为这种情况几乎没有实际用途。

指纹识别、人脸识别或物体识别等应用程序执行特征提取过程。这意味着他们将复杂的图像结构转换为更简单的特征向量,可以与存储的模式进行比较。

真正艰巨的工作是特征提取过程,必须将重要信息与图像中的“噪声”分开。

仅对图像进行散列将不会产生任何可用的特征。我会考虑散列图像以查找一些信息的唯一情况是构建图像数据库。但即使在这种情况下,像 SHA1 或 MD5 这样的通用散列函数也几乎没有用处,因为修改单个像素或元数据(例如作者)会更改散列,并且无法根据通用散列函数识别两个图像。

【讨论】:

    【解决方案2】:

    我不能 100% 确定您要做什么,但散列应该为您提供一个唯一的字符串来识别图像。你没有指定你的语言,但大多数都有一个函数来散列整个文件的数据,所以你可以通过它运行图像文件。 (比如PHP有md5_file()

    【讨论】:

      【解决方案3】:

      目前尚不清楚您要解决什么问题。您绝对可以获取整个图像的哈希并将其用作 Trie 结构中的键,尽管我认为在这种情况下,与常规哈希表相比,Trie 结构几乎不会给您带来任何性能优势,因为您正在执行(大) 每次查找时散列。

      如果您想要比较两个图像或在树中快速找到相似图像,您可以考虑使用图像的 GIF 或 JPEG 标头作为键的开头。这将导致具有相似类型、大小、索引颜色等的图像在 Trie 结构中彼此靠近分组。然后,您可以仅在发生冲突时计算图像的哈希(即,Trie 中的多个图像具有完全相同的标头)。

      【讨论】:

        猜你喜欢
        • 2013-03-20
        • 1970-01-01
        • 2018-11-11
        • 1970-01-01
        • 1970-01-01
        • 2011-07-21
        • 1970-01-01
        • 2012-08-28
        • 1970-01-01
        相关资源
        最近更新 更多