【问题标题】:SIFT Taylor Expansion working out subpixel locationsSIFT 泰勒展开计算子像素位置
【发布时间】:2012-03-20 21:42:04
【问题描述】:

我正在尝试实现 SIFT,目前只是想在开始在 MATLAB 中实现它之前了解它是如何工作的,除了如何使用泰勒展开计算亚像素精度之外,我了解其中的大部分内容:

以上是原始论文中的方程式。我有几个关于它是如何应用的问题。

是否在每个维度上分别计算导数,然后将方程应用于 x 然后 y?

一阶和二阶导数是否也沿 sigma 轴应用?

我已经厌倦了查看以前的实现,但无法找到它们在哪里执行此操作。 提前致谢

【问题讨论】:

    标签: sift subpixel


    【解决方案1】:

    在我们的例子中,D 是具有变量 x = (x,y,s) 的体积函数,其中 s 是八度音阶。

    问题:是否分别在每个维度上求导,然后将方程应用于 x 和 y?

    答案:“每个维度的导数是分开计算的吗?”是的,对于一阶导数,我们分别计算 x、y 和 s 的偏导数。 “方程应用于 x 然后 y?”,不,偏导数的结果将是长度为 3 的向量,我们只需将其乘以逆 Hessian(3 X 3 矩阵)即可计算 x

    对于二阶导数,我们使用 Hessian 矩阵(本例中为 3X3 矩阵)。

    问题:一阶和二阶导数是否也沿 sigma 轴应用?

    答案是的,因为它代表 3D 空间中的一个轴,其中定义了 D。

    注意事项:

    • 对于数学上的详细解释see
    • 对于 C++ 中的代码see
    • 为了计算离散域中的偏导数, 我们使用finite differences

    【讨论】:

    • 为什么我们会在 sift 中找到子像素?为什么我们不能只使用极值?
    猜你喜欢
    • 2020-04-10
    • 2012-10-22
    • 2019-08-10
    • 2016-04-26
    • 1970-01-01
    • 2020-03-01
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多