Looking at the sift for a few days is also a bit of a little understanding of it here describes my understanding of it!
Sift is the algorithm for Image feature comparison. It is primarily intended to be mathematically descriptive : an area around a particular point in the image, so that the difference between this area and another area can be compared .
Here's a little more on how to describe this mathematical method:
1. Data structure: The area selected in Sift is 4*4 that is 16 points or area. The histogram is then counted in 8 directions. It's dizzy!
Double feature[4][4][8]; It's actually ..... (0,0)-(3,3) 8 values in different directions in the area are summed up
2. Its characteristics: position, scale and direction of invariance (this good professional, more dizzy)
Explain: The position is the same, that is, you can not make every point of the image into a feature point, so you have to find a representative point, and this point, no matter what the image is to be extracted.
(In fact, you can not, a little more, there are always some feature points the same.) That is, two images have coincident parts, you put forward the two coincident parts of the characteristics of the same point, otherwise how to compare it.
Scale unchanged: Two images, shoot the table than, may be large, may be small, so you have to take this situation into account. The idea is to copy the images a few more, then zoom in and out so you can
The direction is the same: it is the process of taking pictures of the same table with the possibility of shaking hands, the camera is crooked, this situation. SIFT processing is to choose the direction (histogram, the largest 80% direction, there may be a lot of this point to copy a few), and then in this direction to do 1 of the features described in the extraction.
What else does the light do?: The professional way is to use that dog pyramid. Speaking of White point, is to use the gradient map of the image to do .... (What is a gradient?) Is (x1-x0) + (Y1-Y0)) can not understand just look like the basis of processing it!
3. Such a number of problems have been solved. If you want to add any affine degeneration, it is simply the scaling of the image of the 2*2 scaling vector, into the 3*3 image transformation vector.
I'm talking about simplicity here, but the actual implementation still has a lot of details to deal with. For example, what dog operator is sensitive to the gradient value, why it should be blurred, and so on, as long as the understanding of the better processing. But don't understand why use Gauss blur, for tall? Understand the better programming, no longer use to see the opencv inside that deep source. Really dizzy!
Image stitching: Sift's understanding