David Lowe's SIFT -- 关于比例空间和图像坐标的问题(奇怪的偏移问题)

David Lowe's SIFT -- Question about scale space and image coordinates (weird offset problem)

本文关键字:问题 坐标 图像 空间 Lowe SIFT 于比例 David      更新时间:2023-10-16

我意识到这是一个高度专业化的问题。。但现在开始了。我正在使用SIFT的实现来查找两个图像上的匹配项。根据我目前的实现方式,当我将图像与90度或180度版本匹配时,我得到的匹配一致地偏离了大约半个像素,但它在一定范围内变化。例如,如果在im1中的像素坐标(x,y)处找到匹配,则其90度旋转图像im2中的对应匹配为(x,y+0.5)。如果我使用180度图像,则偏移量同时出现在x和y坐标中,如果我使用270度(-90)旋转图像,则仅出现在x中。

1) 首先,我假设SIFT应该在旋转图像中给我相同的匹配位置。一个隐含的假设是旋转不会改变图像的像素值,我确认这是真的。(我使用IRFAN视图旋转并保存为.pgm,像素值保持不变)。

2) 我有其他的实现没有给出这个偏移。

3) 我假设这个偏移与编程有关,可能与从比例空间关键点坐标到图像空间关键点的坐标转换有关。

我希望有人遇到过这个问题,或者能给我一个关于如何从比例空间转换到图像空间的参考。

与Mikola的断言相反,可以从SIFT中获得规模和方向。SIFT试图找到DOG极值最大的标度(s),并找到主导方向(r。SIFT特征的每个位置向量返回(x,y,s,r)

要了解缩放空间如何转换为像素,请尝试VLFeat的实现。特别是,使用vl_plotsievdescriptor来绘制描述符。您可以看到s如何相对于此实现的像素进行缩放。要找出其他实现,请在两个实现中找到相同的功能,并查看比例因子s的不同之处。

首先是一条一般性评论:

SIFT只为您提供像素坐标中x,y位置的特征。它并没有直接告诉你任何关于设计中给定特征的缩放或旋转的信息,事实上,特征向量在这些类型的变换下是不变的是SIFT的定义特征(即,这就是SIFT工作的原因)(编辑:这是错误的,我写这篇文章时在想WTF吗?)

0.5像素的偏移是无关紧要的,对于这种差异可能有很多可能的解释。一种可能性是,这两种实现使用不同的原点坐标;例如,一个将原点放在中间,而另一个将其放在拐角处。这可能会影响舍入,这可能会导致报告的像素位置相差0.5。另一种可能性是,它们在使用的旋转样本数量上有所不同;或者可能取决于所考虑的标度的数量。可以想象,改变这些参数中的任何一个都会对观察到的特征产生多达几个像素的影响。当然,这都是纯粹的猜测,因为人们必须真正看到实施情况才能说出任何确定性。

现在解决您更具体的问题:

  1. 这是一个错误的假设。矩形采样图像在旋转下通常不是不变的。如果您的SIFT实现采样的旋转次数不是4的倍数,那么即使旋转90度的倍数也会导致问题。然而,有了足够的样本,你可以期望它在附近得到正确的结果,但它几乎永远不会是准确的(除非在一些非常特殊的退化情况下)。

  2. 你怎么知道他们给出了正确的补偿?它们可能都是相同代码库的克隆或端口,并且可能有类似的错误。

  3. 我不知道为什么你会期望它是一样的,因为SIFT依赖于许多内部的旋转因素,这些因素在不同的实现之间可能会有所不同。

最后,我不知道你说的"从比例空间转换到图像空间"是什么意思。比例空间是为图像而不是点定义的,比例空间和图像空间中的坐标之间没有1:1的映射。如果您只想将比例空间图像转换为常规图像,只需取0比例切片即可。如果要将图像转换为比例空间表示,请将其与一组不同半径的高斯进行卷积。