I am trying to implement SIFT and am currently just trying to understand how it works before starting to implement it in MATLAB, i understand most of it except how to work out subpixel accuracy using Taylor Expansion:
Above is the equation from the original paper. I have a few question on how it is applied.
Are the derivatives worked out in each dimension seperatly and then the equation applied to x then y?
Are the first and second derivates applied along the sigma axis aswell?
I have tired looking at previous implementations but cannot seam to find where they do this.
Thanks in advance
In our case, D is a volumetric function with variables x = (x,y,s), where s is the scale in the octave.
Question: Are the derivatives worked out in each dimension seperatly and then the equation applied to x then y?
Answer: "Are the derivatives worked out in each dimension seperatly?" Yes, for the first derivative, we calculate the partial derivatives for x, y, and s separately. "the equation applied to x then y?", No, the result of the partial derivatives will be a vector of length 3, which we simply multiply it by the inverse Hessian (3 X 3 matrix) to calculate the subpixel position of x.
For the second derivative, we use the Hessian Matrix (3X3 Matrix in this case).
Question: Are the first and second derivates applied along the sigma axis aswell?
Answer Yes, because it represents an axis in the 3D space, where D is defined.
Notes:
- For mathematically elaborated explanation see
- For code in C++ see.
- In order to calculate the partial derivative in the discrete domain,
we use the the finite differences.