Hot answers tagged

61

Both SIFT and SURF authors require license fees for usage of their original algorithms. I have done some research about the situation and here are the possible alternatives: Keypoint detector: Harris corner detector Harris-Laplace - scale-invariant version of Harris detector (an affine invariant version also exists, presented by Mikolajczyk and Schmidt, ...


26

There is a relatively new method, you might want to look into: BRISK, Binary Robust Invariant Scalable Keypoints: In this paper we propose BRISK, a novel method for keypoint detection, description and matching. A comprehensive evaluation on benchmark datasets reveals BRISK’s adaptive, high quality performance as in state-of-the-art algorithms, albeit at a ...


16

If you could implement an SVM, you can quantize the features. :) Typically the features are quantized using k-means clustering. First, you decide what your "vocabulary size" should be (say 200 "visual words"), and then you run k-means clustering for that number of clusters (200). The SIFT descriptors are vectors of 128 elements, i. e. points in 128-...


14

What you are supposed to do when matching a template to an image using sift is to run sift against your template and then look for those sift features in that arrangement in your scene. Rule of thumb: Compare like to like. Sift(Template) Contained Within Sift(Image) You cannot tune Sift to extract the "features you want" Sift *uses invariant measures to ...


12

Don't trust anyone here, talk to a lawyer. The Legal world is subtly different from ours, if I may say. Depending on what you exactly want to do (and where, etc.), there may be a solution where you could use SURF or SIFT. I have been surprised in the past how seemingly strong licenses can be overcome.


9

As far as alternatives to SIFT/SURF go, the question you linked provides very good answers. There were two more questions I could read out: "how could I build a useful (e.g. rotation invariant) feature descriptor"? "regarding the statement from the linked question, how does he accomplish free rotational invariance?" Building feature descriptors This is a ...


8

I would rather look into KAZE / AKAZE, which perform equally good with significant speed-up. The deformation cases are also tolerated. OpenCV has recently obtained an implementation through GSoC 2014. You can find it here. Its OpenCV tutorial is also present here.


7

I'm not sure if you just want to match two images (e.g. find the common points), or you want to attempt something like CBIR (Content-based image retrieval -- searching a database with a template image to find all that contain the object). I am currently doing CBIR research, so I am pretty up-to-date with current methods. Here and here are the links to my ...


7

The term "scale-invariant" means the following here. Let's say you have image I, and you have detected a feature (aka an interest point) f at some location (x,y) and at some scale level s. Now let's say you have an image I', which is a scaled version of I (downsampled, for instance). Then, if your feature detector is scale-invariant, you should be able to ...


5

Difference of gaussians is not scale invariant. SIFT (to limited degree) scale invariant because it looks for DoG extrema across scale-space - that is finding scale in with DoG extremal both spatially and relatively to neighboring scales. Because output DoG is obtained for this fixed scale (that is not a function of input scale) result is scale-independent, ...


4

Another way to get rotational invariance for free, is to choose objects that are rotationally invariant. For instance, a circle or a ring is invariant to rotations. Feature extractor: Run edge detection. For each neighborhood of NxN pixels, calculate edge direction and magnitude 2D histogram. Find all points that have high total magnitude, and high angular ...


4

We must produce s + 3 images in the stack of blurred images for each octave, so that final extrema detection covers a complete octave. For $s=3$ this means you will have $s + 3 = 6$ blurred images (the Gaussian images shown in the paper in Figure 1 on the left). Having $6$ Gaussian images will result in $5$ DoG images (shown in Figure 1 on the right). This ...


4

The $\sigma$ parameter is both. The Gaussian function can generate a scale-space where $\sigma$ is the scale parameter. It doesn't mean the image is scaled, instead it is the scale at which the features are being evaluated. For example, with higher $\sigma$ the image is more blurred and therefore only larger image features contribute to the gradient ...


4

There are two versions of optical flow(OF): Feature based (sparse) or dense. In the dense version OF is applied to all the image pixels, while in the sparse one, only certain characteristic feature points are tracked. However, both approaches depend on the tracking of pixel quantities. This is fundamentally different than tracking the whole patch, because in ...


3

If I understand correctly what you are asking -- In general, the feature is found at the same scale as the SIFT detector says, but in David Lowe's SIFT, the image is pre-smoothed with sigma: 0.5, so, you need to "subtract" this amount of smoothing from the sigma, so the "real" scale could be: sqrt(sigma^2 - 0.5^2) where sigma is the scale the feature was ...


3

Probably not. The SIFT detector finds centers of blob-like features. Shi-Tomasi detector finds corners. Furthermore, SIFT detector operates at multiple scales, while the classic Shi-Tomasi does not.


2

Building on previous responses: (1) You can use SIFT (or another improved variant of this local-patch descriptor) with dense sampling, instead of the inbuilt detector. You can choose the size of the local patch and the sampling density to suit your requirements of performance and computational cost. (2) SIFT is an affine invariant descriptor for wide ...


2

The paper referenced in your link seems to be this one. Of particular interest there is Table 1 (included below). The accuracy rates aren't great, though they are better than other approaches.


2

I don't know if I completely understand your question, but I will have a go at clarifying the scale space, multi-resolution ocataves and why they are important for SIFT. To understand the scale space it is helpful to consider how you recognise images at different distances (e.g far away you may be able to distinguish the shape of a person. As that person ...


2

Horizontal and vertical gradients are computed by taking neighbor pixel differences: $$g_{x}=L(x+1,y)-L(x-1,y)\\g_{y}=L(x,y+1)-L(x,y-1)$$ Gradient magnitude is computed the same way as in your formula: $$m(x,y)=\sqrt{g_x^2+g_y^{2}}$$ Replacing $g_{x}$ and $g_{y}$ with above will give you the original formula. Gradients are usually computed by forward or ...


2

Consider one-dimensional function $f(x)$. The first order taylor expansion is $f(x_0+h) \approx f(x_0) + f'(x_0)h$ The second order taylor exapnsion is $f(x_0+h) \approx f(x_0) + f'(x_0)h + \frac 1 2 f''(x_0)h^2$ Now we expand three-dimensional function. $$ D(\mathbf{x_0}+\mathbf h) \approx D(\mathbf{X_0}) + \bigg(\frac{ \partial D}{\partial \mathbf x}\...


2

Each SIFT descriptor corresponds to a region of the image. You take these from a bunch of images and group them into some number of clusters. I think what he's showing in the slide there is just a few samples from each cluster where he chose human-meaningful names for the clusters after the fact.


2

The answer boils down to 2 issues with the practical approximations of the Gaussian Kernel: Though the Gaussian Kernel is radially symmetric its discrete approximation has a rectangle support. Unless this support will have infinite length a rotation by any angle different from a multiplication of 90 degrees will yield a shape which has to modified to fit ...


2

The ROC: ROC curves are popularly used as performance metric for classification tasks. If the images in your dataset has class labels, then you can employ supervised learning to train a classifier (SVM for example). The dataset is split into training and testing and predicted class score from the classifier for images in the test set are compared to ground ...


1

First of all, there are two distinct parts to SIFT. The first part is interest point detection algorithm (aka key-point detection), which finds local extrema of the multi-scale difference-of-gaussians function. The second part is computing the feature descriptor, which is a vector describing the image patch around each key point. SIFT computes this ...


1

With slight modification you might want to use RootSift: http://www.robots.ox.ac.uk/~vgg/publications/2012/Arandjelovic12/arandjelovic12.pdf Also the other steps in the paper will guide to improve the recall rate. Cheers,


1

SIFT works on points in an image while segmentation is about dividing up the image into regions. So, no, segmentation is not necessary when using SIFT. In segmentation you divide up the image into regions so classification can be done by extracting features from each region and see if you can recognize your object. A downside to this approach is that ...


1

The descriptor obtained from a $64\times 64$ neighborhood of interest point at the obtained scale. It will divide this $64\times 64$ region to $16\times 16$ patches which lead to 16 patches. For each patch we calculate the gradients and then find the dominant direction of gradients(which has some details), then taking the dominant direction as the ...


1

I can only find this is the paper: As this graph shows, the highest repeatability is obtained when sampling 3 scales per octave, and this is the number of scale samples used for all other experiments throughout this paper. It might seem surprising that the repeatability does not continue to improve as more scales are sampled. The reason is that ...


1

Yes, only scale space is sufficient, but at some point when you are scaling it down, instead of creating new Gaussian filters, it's more efficient to just resize the image and use the same/old filters (ie, don't need to keep increasing sigma, but rather decrease image size) this has the same effect as just increasing the scale (σ^2 = scale)


Only top voted, non community-wiki answers of a minimum length are eligible