algorithm - 为什么我们在 SIFT 算法中将图像大小调整为一半?

标签 algorithm image-processing sift

在SIFT算法尺度空间的构建中,我们逐步将图像的尺寸减半,然后得到每个尺寸的一系列模糊图像。

我的问题是,在构建尺度空间将图像大小减半对SIFT算法有何帮助?

谢谢。

最佳答案

其实这是两个问题:

  1. 缩小图片尺寸的原因是什么
  2. 为什么图像缩小了 2 倍

关于第一个问题:为了计算筛选特征,我们需要针对不同的 sigma 参数将图像与高斯核进行卷积。当 sigma 参数很小时,这个内核就不会那么大(因为随着到中间距离的增加,它几乎很快变为 0)。然而,sigma 参数在分析过程中呈指数增长,因此精确计算所需的核大小也呈指数增长。增加高斯核的大小意味着增加计算时间。另一方面,在与高斯核卷积之后,图像频谱中的较高频率几乎被删除 - 保持更高分辨率没有任何好处,因为在这个级别上没有留下任何细节。

因此,减小图像的大小消除了对更大内核的需求,而无需以牺牲精度为代价。

那么为什么要将图像缩小 2 倍呢?我们可以使用任何其他因素,但是

  1. 因子 2 优于因子 1.5,因为它更容易计算结果图像 - 不需要插值。
  2. 因子 2 优于因子 3,因为在因子 3 的情况下,我们需要更大的高斯核:如果我们将图像缩小因子 2,则 sigma 参数 3 与最大 sigma 参数 2 相比。

编辑:正如 Yves 所指出的,我们不仅不必为较大的 sigma 参数计算更多,而且我们必须计算更少,因为每次重新缩放后图像都会变小(我们可以这样做不会损失精度,因为与高斯核的卷积消除了图像中的较高频率)。

关于algorithm - 为什么我们在 SIFT 算法中将图像大小调整为一半?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38880137/

相关文章:

c++ - 减少整数分数算法 - 解决方案解释?

java - 添加 fragment ?

opencv - 基于密度的图像-Opencv 热图

c++ - 关键点大小和倍频程之间的 OpenCV 连接

opencv - PCA如何用于SIFT或VLAD载体?

python - 在 python opencv 中使用 drawKeypoints 给出错误 : 'module' object has no attribute 'drawKeypoints'

c - 逻辑哪里错了?

python - Python 文本文件中的字典

image - 反向图片搜索图片保护

python-2.7 - 在一系列图像和筛选描述符上执行kmeans