我正在尝试实现 SIFT,目前只是想在开始在 MATLAB 中实现它之前了解它是如何工作的,除了如何使用泰勒展开计算亚像素精度之外,我了解其中的大部分内容:
以上是原始论文中的方程式。我有几个关于它是如何应用的问题。
是否在每个维度上分别计算导数,然后将方程应用于 x 和 y?
一阶和二阶导数是否也沿 sigma 轴应用?
我已经厌倦了查看以前的实现,但无法找到他们这样做的地方。提前致谢
在我们的例子中,D 是一个带有变量x = (x,y,s) 的体积函数,其中 s 是八度音阶中的音阶。
问题:是否在每个维度上分别计算导数,然后将方程应用于 x 和 y?
回答: “每个维度的导数是分开计算的吗?” 是的,对于一阶导数,我们分别计算 x、y 和 s 的偏导数。“方程应用于 x 然后 y?”,不,偏导数的结果将是长度为 3 的向量,我们只需将其乘以逆 Hessian(3 X 3 矩阵)即可计算x的子像素位置。
对于二阶导数,我们使用 Hessian 矩阵(在本例中为 3X3 矩阵)。
问题:一阶和二阶导数是否也沿 sigma 轴应用?
回答是的,因为它代表 3D 空间中的一个轴,其中定义了 D。
笔记: