我对构建特定于域的图像搜索应用程序感兴趣,该应用程序能够搜索与给定图像类似的图像。通过一点google-fu,我设法在这个网站上找到了this个问题。如果我正确理解了最受好评的答案,那么我希望通过在我的库中存储每个图像的光度数据来实现。
这一切都很好,但我需要一种方法来快速搜索并与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
)并在该列上构建全文搜索索引,以便允许在数据中搜索类似的图像。
另一种可能性是使用查询直方图和存储的直方图之间的汉明距离,但我不相信可以快速对数据库中的所有记录。
我是否以正确的方式接近这个?我也对关系数据库的任何替代方案持开放态度,可以在我的数据集中提供快速,实时的搜索。
答案 0 :(得分:0)
看起来您正在将每个图像放入三维空间 - 您是否尝试过查看任何地理空间/多维查询引擎。用你的方法,类似的图像应该在3空间内彼此靠近。