0

我有兴趣构建一个特定于域的图像搜索应用程序,该应用程序能够搜索与给定图像相似的图像。通过一点 google-fu,我设法在这个网站上找到了这个问题。如果我正确理解了评分最高的答案,那么我要做的就是通过将每个图像的亮度数据存储在我的库中来实现。

这一切都很好,但我需要一种方法来快速搜索并与 25,000 多条记录进行比较。我使用过 PostgreSQL,所以我立即想到了它。我发现自己面临的问题是,要存储跨 3 种颜色的 256 个离散可能值的亮度数据,我需要一个包含 768 列 ( r0,g0,b0,...,r255,g255,b255) 的表,并且为了有效地在所有记录中搜索相似性,我需要 768 个索引。我以前从未真正处理过这个级别的大规模数据,但这个数字对我来说似乎有点笨拙(虽然我不知道,我的经验并没有扩展到这个领域)。

我的另一个想法是将亮度数据存储在一个大文本列中(格式如下:)r0:rrr g0:ggg b0:bbb ... r255:rrr g255:ggg b255:bbb并在该列上构建一个全文搜索索引,以便允许在数据中搜索相似图像。

另一种可能性是使用查询直方图和存储直方图之间的汉明距离,但我不认为可以快速针对数据库中的所有记录进行操作。

我是否以正确的方式接近这个?我也愿意接受任何可以在我的数据集中提供快速、实时搜索的关系数据库替代方案。

4

1 回答 1

0

看起来您正在将每个图像放入 3 维空间——您是否尝试过查看任何地理空间/多维查询引擎。使用您的方法,相似的图像应该在 3 空间中彼此靠近。

于 2012-08-07T21:28:21.250 回答