我有5000个图像,每个图像可以生成一个大约1000维度的矢量(猪特征),但是有些图像非常相似,所以我想删除相似的图像。有没有办法实现这个目标?
=============================================== ================
正如他们提到的@thedarkside所建议的那样,让我再解释一下我想要做些什么。我正在使用SVM + HOG功能进行图像分类。我准备了一些训练数据,但是一些训练图像非常相似,所以我想删除类似的训练数据以降低计算成本。我不知道删除类似图像是否会对最终分类率产生副作用,因此必须找到“相似性”的良好标准。这就是我想要做的。
答案 0 :(得分:0)
另一种方式(不使用生猪功能),您可以为每张图片计算color histogram并与其他图片进行比较。
像,
获取第一张图片并计算直方图,
现在,对于其他图像,计算直方图和compare与第一个。
如果您在直方图上找到紧密匹配,则可以将其丢弃。通过使用CV_COMP_CORREL
,您将获得0-1范围内的匹配。
答案 1 :(得分:0)
这取决于你的意思相似,目前我最喜欢的图像相似性描述符是gist描述符。
http://people.csail.mit.edu/torralba/code/spatialenvelope/
但它不在opencv中。但是它在这里用C编码,所以可以添加到c ++项目(extern" C"),如果你使用c ++ opencv,不确定python抱歉。
http://people.rennes.inria.fr/Herve.Jegou/software.html
我发现这非常好,效率很高。
(对不起,这不是一个直接的opencv解决方案,但我觉得这是一个合理的答案,因为gist C代码可以添加到c ++项目中,并且效果很好。)
编辑: 如果您只想删除具有类似猪的描述符的那些,您可以使用: http://docs.opencv.org/modules/ml/doc/k_nearest_neighbors.html 要么 http://docs.opencv.org/trunk/modules/flann/doc/flann_fast_approximate_nearest_neighbor_search.html