使用opencv检测图片相似度


常用技术:

1、Comparing histograms

最简单快速的方法,几十年前被提出用于发现图片相似性。森林多是绿的,人脸多是粉的,如果比较两张森林的照片,会发现在直方图方面有更多的相似,因为他们都有很多绿色。

不足:过于简化,香蕉和沙滩因为颜色的原因,看上去很像

Opencv:compareHist()


2、Template matching

一个很好的用处是寻找优质匹配(good match)。使用要进行搜索的图片和被搜索图片进行卷积。通常用于在大图中寻找小图片段。

不足:仅返回优质结果,相同图片、相同大小或方向

Opencv:matchTemplate()


3、Feature matching

很可能是图片搜索中最有效率的方法。以一种保险的方式从一张图片中提取一些特征,保证即使进行了旋转、缩放、扭曲(skewed),仍然能够再次提取出相同的特征。按照这种方式提取的特征能够匹配其他图片的特征集合。另一张图片如果含有很高比例第一张图片所具有的特征的话,他们在很大程度上描绘了相同的对象或场景。能用于在照片中寻找不同拍摄角度的相对差异,或者重叠量。

有很多Opencv手册&例子,有一整个opencv模块(features2d)专用于做这个事情。

不足:速度很慢,并不完美。


附录:

其他技术:

http://answers.opencv.org/question/877/how-to-match-2-hog-for-object-detection/#882

原文:

http://stackoverflow.com/questions/11541154/checking-images-for-similarity-with-opencv

你可能感兴趣的:(相似度)