Question

I want to find the sift descriptor at a co-ordinate ( x ,y ) in the image with a patch size of 5X5 neighbour with the co-ordinate in the middle.

The intention behind it is to analyse the orientation values that I get on that co-ordinate for further processing.

Is there any method in matlab that would allow me to do this ?

I have tried to understand vl_dsift which would give me sift descriptor at every point and maybe use it for just the co-ordinate that I want but could not understand how to use it ...

Could someone help me with it or suggest any better alternative out there ?

Was it helpful?

Solution

The MATLAB command vl_sift (and the command line utility) can bypass the detector and compute the descriptor on custom frames using the Frames option.

For instance, we can compute the descriptor of a SIFT frame centered at position (100,100), of scale 10 and orientation -pi/8 by

fc = [100;100;10;-pi/8] ;
[f,d] = vl_sift(I,'frames',fc) ;

Multiple frames fc may be specified as well. In this case they are re-ordered by increasing scale. The Orientations option instructs the program to use the custom position and scale but to compute the keypoint orientations, as in

fc = [100;100;10;0] ;
[f,d] = vl_sift(I,'frames',fc,'orientations') ;

Notice that, depending on the local appearance, a keypoint may have multiple orientations. Moreover, a keypoint computed on a constant image region (such as a one pixel region) has no orientations!

checkout http://www.vlfeat.org/overview/sift.html . vl_feat is really really neat, and very easy to use, even easier to install.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top