In my continuous struggle to remember things that I once learned, this part I will deal with SIFT feature.
SIFT proposed by David Lowe-extract some local features in an image that are invariant to
- Scale
- Illumination
- Rotation
- Affine transformation (of the form Ax+T, which is another thing I always forget.)
The theory behind the SIFT requires more understanding, so I will leave it for later. Here I will deal with the outcome of the SIFT. Given an image, we can compute several key-points in the image along with its 128 bin long histogram of descriptor. For example given an image of building I can get following SIFT descriptors using VL_FEAT implementation of SIFT:
f: [4x683 double]
d: [128x683 uint8]
name: 'b10_1.jpg'
size: 683
The there are 683 frames found for the image 'b10_1.jpg'. For each of the 683 frames we also have a 128-Dimensional descriptor. The first frame, for example, has following attibutes:
trainSet(1).f(:,4)
x_location_of_the_disc = 12.9428 % in the column direction in the image
y_location_of_the_disc = 10.3563 % in the row direction
scale = 2.0881
orientation = -0.0163
If the frames are plotted using vl_feat is function then it will look something like this (it is a different image though):
The yellow discs denote some random frames.
2 comments:
Lowe was the first to come up with SIFT, but he patented his work. Rob Hess published open source SIFT library, written in C. Kudos to Hess.
I didn't know about that. VLfeat library works well too.
Post a Comment