我有一个图像数据库.当我拍摄新照片时,我想将其与此数据库中的图像进行比较,并获得相似性得分(使用OpenCV).这样我想检测,如果我有一个图像,这与新图片非常相似.
是否可以创建我的数据库图像的指纹/哈希并匹配新的数据库图像?
最好,
斯特凡
解决方法
正如Pual R评论的那样,这种“指纹/散列”通常是一组特征向量或一组特征描述符.但是,计算机视觉中使用的大多数特征向量对于搜索数据库来说通常计算量太大.因此,此任务需要一种特殊的特征描述符,因为即使使用各种优化,SURF和SIFT等描述符也会花费太多时间进行搜索.
OpenCV对您的任务(对象分类)的唯一要求是实现Bag of visual Words(BOW).
它可以计算特殊的图像特征并训练视觉词汇词汇.接下来,您可以使用此词汇表在数据库中查找类似图像并计算相似性得分.
Here is OpenCV文档包含单词.此外,OpenCV还有一个名为bagofwords_classification.cpp的示例.它真的很大但可能会有所帮助.