当数据集的键是字符串时,我们有Trie结构来有效地访问数据。如果数据集的关键是图像,那么最好的索引是什么?
按键,我的意思是区分数据的一些东西。这是一种不太常用的场景,即通过图像访问数据吗?我觉得有些应用程序可以像指纹数据库一样使用它。
在这种情况下哈希有帮助吗?我的意思是根据像素值将图像散列为唯一的数字。
请分享关于此的任何指示。
欢呼声
答案 0 :(得分:2)
您可以使用哈希函数根据图像查找项目。但我认为这种情况几乎没有实际用途。
指纹识别,面部识别或对象识别等应用程序执行特征提取处理。这意味着他们将复杂的图像结构转换为更简单的特征向量,可以与存储的模式进行比较。
真正的努力工作是特征提取过程,必须将重要信息与图像中的“噪音”分开。
只是对图像进行散列将不会产生任何可用的功能。我想考虑散列图像以找到一些信息的唯一情况是构建一个图像数据库。但即使在这种情况下,作为SHA1或MD5的公共散列函数也没什么用处,因为修改单个像素或诸如作者之类的元数据将改变散列并使得不可能基于公共散列函数来识别这两个图像。
答案 1 :(得分:1)
我不是100%确定你要做什么,但是哈希应该给你一个唯一的字符串来识别图像。您没有指定语言,但大多数都具有散列整个文件数据的功能,因此您可以通过它运行映像文件。 (例如,PHP有md5_file()
)
答案 2 :(得分:1)
目前还不清楚你要解决的问题是什么。您绝对可以获得整个图像的哈希并将其用作Trie结构中的键,尽管在这种情况下我认为Trie结构几乎没有比常规哈希表更好的性能,因为您正在执行(大型) )每次进行查找时都会哈希。
如果要实现要比较两个图像或在树中快速查找相似图像的内容,可以考虑使用图像的GIF或JPEG标题作为键的开头。这将导致具有相似类型,大小,索引颜色等的图像在Trie结构内彼此靠近分组。然后,只有在发生碰撞时(即Trie中具有完全相同标头的多个图像),才能为图像计算散列。