我意识到这是一个高度专业化的问题..但这是开始了。我正在使用SIFT的一个实现来查找两个图像上的匹配。使用我目前的实现,当我匹配一个90度或180度版本的图像时,我得到的匹配一致地偏离了大约半个像素,但它在一个范围内变化。因此,例如,如果在im1中的像素坐标(x,y)处找到匹配,则其90度旋转图像im2中的对应匹配在(x,y+ 0.5)处。如果我使用180度的图像,那么偏移量在x和y坐标上都会出现,如果我使用的是270度(-90)旋转的图像,那么偏移量只会出现在x坐标中。
1)首先,我假设SIFT应该在旋转后的图像中给出相同的匹配位置。一个隐含的假设是,旋转不会改变图像的像素值,我确认这是真的。(我使用IRFAN View旋转并保存为.pgm,而像素值保持不变)。
2)我还有其他不提供这个偏移量的实现。
3)我假设这个偏移量与编程有关,并且可能与从比例空间关键点坐标到图像空间关键点坐标的转换有关。
我希望有人遇到了这个问题,或者可以给我指出一个关于如何从比例空间转换到图像空间的参考资料。
发布于 2011-06-17 00:24:53
与Mikola的断言相反,有可能从SIFT中获得规模和方向。SIFT试图找到具有最大狗极值(s)的尺度,并找到主导方向(r)。SIFT特征的每个位置向量返回(x,y,s,r)
要查看缩放空间如何转换为像素,请尝试VLFeat的implementation。特别是,使用vl_plotsiftdescriptor来绘制描述符。在这个实现中,您可以看到s是如何相对于像素缩放的。要找出其他实现,请找到两种实现的相同功能,并查看比例因子有何不同。
发布于 2011-06-14 03:36:43
First a general comment:
SIFT只是给出了像素坐标中x,y位置的特征。它没有直接告诉你任何关于给定特征的比例或旋转的设计,事实上,它是SIFT的定义特征,特征向量在这些类型的变换下是不变的(例如,这就是SIFT工作的原因).~~ (EDIT:这是错误的,我写这篇文章的时候在想吗?)
0.5像素的偏移量是微不足道的,对于这种差异可能有许多可能的解释。一种可能是两种实现使用不同的原点坐标;例如,一种将原点放在中间,而另一种将原点放在角落。这可能会影响舍入,这可能会导致报告的像素位置存在0.5的差异。另一种可能性是,它们在使用的旋转样本数量上存在差异;或者可能在所考虑的尺度数量上存在差异。可以想象,更改这些参数中的任何一个都会对观察到的特征产生多达几个像素的影响。当然,这都是纯粹的猜测,因为人们必须真正看到实现才能说出任何明确的话。
现在来解决您更具体的问题:
,
。
最后,我不确定你所说的“从比例空间转换到图像空间”是什么意思。比例空间是为图像定义的,而不是点,并且在比例空间和图像空间中的坐标之间没有1:1的映射。如果您只想将比例空间图像转换为常规图像,则只需使用0比例切片。如果要将图像转换为尺度空间表示,请将其与一组不同半径的高斯卷积。
https://stackoverflow.com/questions/6311759
复制相似问题