在提取 SIFT 特征之前转换图像

Transforming an image before extracting SIFT features

在计算 SIFT 特征之前转换图像有什么好处吗?例如,我正在尝试匹配香蕉的 "target" 图像:

...到 "scene" 图像,其中也包含香蕉,但方向和视角未知。

第一种方法:从目标图像中提取SIFT特征,与场景图像中的SIFT特征匹配,计算单应性。

第二种方法:对目标图像进行各种变换,模拟视角的变化:

...在从每个变换中提取 SIFT 特征之前。组合提取的特征,然后将它们与场景匹配并计算单应性。

就特征匹配的保真度而言,方法 2 有什么优势吗?

我猜不会。但你永远不会知道,直到你尝试。 SIFT 在可靠性方面表现出色。如果它有任何好处,我想有人已经将其作为改进算法实施了。

我想这也取决于算法检测到的斑点有多大。我更熟悉 SURF,但我知道 SIFT 的工作原理类似。两种算法都检测不同规模的斑点。当视角改变时,我猜较大的斑点将无法匹配,但较小的斑点将继续有效。

此外,如果您转换图像然后提取特征,如果转换不够重要,如果它与原始特征太相似,则匹配算法将丢弃原始特征和转换后的特征。因为匹配的工作原理是排除所有匹配,但排除比下一个最佳匹配高 X 倍的匹配。

当你有一个有纹理的对象时,SIFT 是很好的...香蕉主要是一个单一颜色的形状。

在这种情况下,关键点提取(筛选等)将失败。不管怎样

一定会有帮助。 有两篇对 SIFT 有很大改进的论文就是基于这个原理。 首先 - ASIFT - 模拟一个非常大的数字,然后以 n x n 方式匹配图像。比 SIFT 更强大,但速度更慢。

其次 - MODS - 迭代合成(仅在需要时)并使用 Hessian-Affine 和 MSER 作为检测器,这提高了 ASIFT 的稳健性和速度。实际上,香蕉示例在MODS论文中:

在这两个链接中,您都可以找到论文和源代码 (C++)。