我正在开发一个草图搜索引擎,该引擎将某人的草图与数据库中的图片相关联(数据库现在只有大约 40 张图片)。我这样做主要是为了好玩,所以我不太精通计算机成像技术。
首先,关于如何创建直方图(bin 大小、范围等)是否有任何经验法则?我正在使用在http://www.scribd.com/doc/6194304/Histograms找到的一些直方图代码(但已移植到 JavaCV)。有时我得到好结果,有时我得到坏结果,大多数时候我得到“meh”的结果。我一直在用 bin 大小和范围试验 TON,我想知道比较高维直方图是否可能是这里的答案。
其次,在我当前的直方图设置中,黑色似乎非常重要(即使是一个黑点也会改变整个结果集)。这应该预期吗?还是我搞砸了什么?示例:
在点之后:
注意我已经将“earthrise”的图片作为“接近”匹配。
我还想知道应该使用什么方法进行 blob 或特征分析。我认为像 SURF 这样的东西可能有点矫枉过正,因为我只想广泛比较 blob,而不是准确地映射模板。有什么方法可以在通过 Canny 过滤器后比较边缘?(如果可能的话,低复杂度):
例如,在这里,我希望两个笑脸位于顶部,因为针状笑脸“blob”与笑脸形状的关系比与一堆百香果或银河更密切相关。
长长的问题。如果您想亲自试用引擎,请访问http://skrch.dvt.name/(无耻插件,我知道,我知道 - 仅适用于 FF/Chrome/Safari)。也许更有经验的计算机视觉人员可以根据结果提出建议。哦,我CV_COMP_BHATTACHARYYA
在比较直方图时使用了距离(似乎它给出了最好的结果,尽管卡方也不错)。