我正在搜索 SURF 的可用指标。比如一张图片与另一张图片在比例上的匹配程度,假设为 0 到 1,其中 0 表示没有相似之处,1 表示相同的图片。
SURF 提供以下数据:
- 查询图像(集合 Q)中的兴趣点(及其描述符)
- 目标图像(集合 T)中的兴趣点(及其描述符)
- 使用最近邻算法可以从上面的两个集合中创建对
到目前为止我一直在尝试一些东西,但似乎没有什么效果太好:
使用不同集合大小的度量:d = N/min(size(Q), size(T)) 其中 N 是匹配兴趣点的数量。这给出了非常相似的图像非常低的评级,例如0.32 即使从 Q 的大约 600 和 T 的 200 中匹配了 70 个兴趣点。我认为 70 是一个非常好的结果。我在考虑使用一些对数缩放,所以只有非常低的数字才会得到低结果,但似乎找不到正确的方程式。使用
d = log(9*d0+1)
我得到了 0.59 的结果,这是相当不错的,但它仍然有点破坏了 SURF 的力量。使用对内距离的度量:我做了一些事情,比如找到 K 个最佳匹配并添加它们的距离。两幅图像相似的距离最小。这个问题是我不知道兴趣点描述符元素的最大值和最小值是多少,距离是从中计算出来的,因此我只能相对地找到结果(从许多输入中最好的)。正如我所说,我想将该指标精确地设置在 0 和 1 之间。我需要它来将 SURF 与其他图像指标进行比较。
这两者最大的问题是排斥对方。一个不考虑比赛的数量,另一个不考虑比赛之间的距离。我迷路了。
编辑:对于第一个,log(x*10^k)/k 的方程式(其中 k 为 3 或 4)在大多数情况下给出了不错的结果,但最小值并不好, 在极少数情况下,它可以使 d 大于 1,否则返回的结果很小。
最佳答案
您可以轻松创建一个指标,它是两个指标的加权和。使用机器学习技术学习适当的权重。
您所描述的内容与基于内容的图像检索领域密切相关,这是一个非常丰富多样的领域。谷歌搜索会给你带来很多点击。虽然 SURF 是一种出色的通用中低级特征检测器,但它还远远不够。 SURF 和 SIFT(SURF 的派生来源)在重复或近似重复检测方面表现出色,但在捕捉感知相似性方面表现不佳。
性能最佳的 CBIR 系统通常利用通过某些训练集优化组合的特征集合。一些值得尝试的有趣检测器包括 GIST (最适合用于检测人造环境与自然环境的快速且便宜的检测器)和 Object Bank (基于直方图的检测器本身由 100 个对象检测器输出组成)。
关于algorithm - 冲浪指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6365634/