查看: 1348|回复: 1

如何使用Opencv检测图片的相似度

[复制链接]

10

主题

57

帖子

143

积分

注册会员

Rank: 2

积分
143
发表于 2018-10-12 14:27:50 | 显示全部楼层 |阅读模式
本帖最后由 lovelylucky 于 2018-10-12 14:29 编辑

如何使用Opencv检测图片的相似性


opencv是否支持两个图像的比较,返回一些值来表示这些图像的相似性 我在StackOverflow上阅读了很多类似的主题,也在谷歌上搜索了类似的答案,但是没有很好的答案



回复

使用道具 举报

9

主题

47

帖子

123

积分

注册会员

Rank: 2

积分
123
发表于 2018-10-12 14:33:21 | 显示全部楼层
常用技术:
1、Comparing histograms
最简单快速的方法,几十年前被提出用于发现图片相似性。森林多是绿的,人脸多是粉的,如果比较两张森林的照片,会发现在直方图方面有更多的相似,因为他们都有很多绿色。

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

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

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

Opencv:matchTemplate()

3、Feature matching

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

有很多Opencv手册&例子,有一整个opencv模块(features2d)专用于做这个事情。
不足:速度很慢,并不完美
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表