c++ - David Lowe 的 SIFT——关于尺度空间和图像坐标的问题(奇怪的偏移问题)

标签 c++ image-processing computer-vision sift

我意识到这是一个高度特化的问题.. 但在这里。我正在使用 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) 我假设这个偏移量与编程相关,并且可能与从比例空间关键点坐标到图像空间关键点坐标的转换有关。

我希望有人遇到过这个问题,或者可以向我指出如何从比例空间转换为图像空间的引用。

最佳答案

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

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

关于c++ - David Lowe 的 SIFT——关于尺度空间和图像坐标的问题(奇怪的偏移问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6311759/

相关文章:

C++ - 没有获得控制台的预期输出

c# - 处理大量图像数据的策略

python - 从打印的心电图中提取图形

python - 从包含带有边框的表格的图像中提取表格结构

image-processing - 从霍夫变换中提取线段

machine-learning - 如何划分数据集以降低 kNN 的时间复杂度?

c++ - 如何使用结构作为模板编写 union ,同时将该 union 作为元素

c++ - SIMD XOR 运算不如 Integer XOR 有效?

c++ - 如何迭代地获取具有重复元素的排序旋转数组中的枢轴点?

image-processing - 在目标检测中执行均值平移以合并检测窗口