2012-08-04 59 views
0

我有興趣構建能夠搜索類似於給定圖像的圖像的特定於域的圖像搜索應用程序。隨着一點谷歌福,我設法找到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

它看起來像你把每個圖像放入一個3維空間 - 你有沒有試過看任何地理空間/多維查詢引擎。使用你的方法,相似的圖像應該在三維空間中彼此靠近。