我正在开发一个草图搜索引擎,它将某人正在绘制的任何草图与数据库中的图片相关联(数据库现在只有大约 40 张图片)。我这样做主要是为了好玩,所以我不太精通计算机成像技术。
首先,是否有关于如何创建直方图(bin 大小、范围等)的经验法则?我正在使用在 http://www.scribd.com/doc/6194304/Histograms 中找到的一些直方图代码(但已移植到 JavaCV)。有时我得到好的结果,有时我得到坏的结果,大多数时候我得到“meh”的结果。我一直在试验一个具有 bin 大小和范围的 TON,我想知道比较高维直方图是否可能是这里的答案。
其次,在我当前的直方图设置中,黑色似乎非常重要(即使是一个黑点也会改变整个结果集)。这应该是预期的吗?还是我搞砸了什么?例子:
在点之后:
请注意我是如何将“地出”图片作为“接近”匹配的。
我也想知道我应该使用什么方法进行 blob 或特征分析。我认为像 SURF 这样的东西可能有点矫枉过正,因为我只想广泛地比较 blob,而不是准确地映射模板。通过 Canny 过滤器后,有什么方法可以比较边缘吗? (如果可能,低复杂度):
例如,在这里,我希望两个笑脸位于顶部,因为针状笑脸“ Blob ”与笑脸形状的关系比与一束百香果或星系的关系更密切。
唉长的问题。如果您想亲自试用该引擎,请访问 http://skrch.dvt.name/(无耻的插件,我知道,我知道——仅适用于 FF/Chrome/Safari)。也许更有经验的计算机视觉人员可以根据结果提出建议。哦,我在比较直方图时使用了 CV_COMP_BHATTACHARYYA
距离(虽然卡方也不错,但它似乎给出了最好的结果)。
最佳答案
有背景吗?
重要吗?
也许您需要查看是否有用户提供的背景。
那么你“只”需要每个 db 条目有 2 个直方图,一个有 bg,一个没有。
这将阻止地出看起来像一个带点的苹果。
对于基本的背景分离,请尝试使用精明的方法,然后将“外部”取出并将其从原始副本中删除。
关于java - 特征/ Blob 相关性和直方图分析,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5332212/