Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Image Descriptors with SIFT/VLFEAT

I want to perform a classification task in which I map a given image of an object to one of a list of predefined constellations that object can be in (i.e. find the most probable match). In order to get descriptors of the image (on which i will run machine learning algorithms) i was suggested using SIFT with the VLFeat implementation.

First of all my main question - I would like to ignore the key-point finding part of sift, and only use it for its descriptors. In the tutorial I saw that there is an option to do exactly that by calling

[f,d] = vl_sift(I,'frames',fc) ;

where fc specifies the key-points. My problem is that I want to explicitly specify the bounding box in which i want to calculate the descriptors around the key-point - but it seems i can only specify a scale parameter which right now is a bit cryptic to me and doesn't allow me to specify explicitly the bounding box. Is there a way to achieve this?

The second question is does setting the scale manually and getting the descriptors this way make sense? ( i.e. result in a good descriptor? ). Any other suggestions regarding better ways of getting descriptors ? ( using SIFT with other implementations, or other non-SIFT descriptors ). I should mention that my object is always the only object in the image, is centered, has constant illumination, and changes by some kinds of rotations of its internal parts - And this is why I thought SIFT would work out as i understood it focuses on the orientation gradients which would change accordingly with the rotations of the object.

Thanks

like image 214
Dan Avatar asked Mar 21 '11 08:03

Dan


1 Answers

Agreed about the fact that the descriptor scale looks a bit cryptic.

See the third image in the VLFeat SIFT tutorial where they overlay the extracted descriptors on the image with the following commands

h3 = vl_plotsiftdescriptor(d(:,sel),f(:,sel)) ;  
set(h3,'color','g') ;

You can thus play with scale and see if the region where the histogram is extracted jives with what you expected.

SIFT sounds like it might be overkill for your application if you have that much control over the imaging environment but it should work.

like image 62
peakxu Avatar answered Sep 18 '22 17:09

peakxu