之前在伯乐在线上看过一篇译文,《用Python和OpenCV创建一个图片搜索引擎的完整指南》。我对照了原文,翻译质量不错。原文作者是个外国小哥,文章写的很好,从图像处理的基础概念入手,由浅入深的介绍了利用OpenCV进行图片搜索的方法。在更进一步学习了OpenCV的帮助文档之后,我我觉得他在此文中使用的方法有几处可以加以改进,以便提高搜索质量。对于使用OpenCV不太熟悉的同学,建议移步原文先。
注,小哥也许为了快速直观,采用Python作demo的开发语言,我出于语言的移植性考虑,选择了C++。
1. 卡方检测值的计算
对于两幅图片的直方图(histogram)比较,由于选用了卡方相似度检测(Chi-Square),所以应该使用OpenCV的API, 而非自己实现。
小哥的python代码:
def chi2_distance(self, histA, histB, eps = 1e-10):
# compute the chi-squared distance
d = 0.5 * np.sum([