Implementing SIFT - How you do the Orientation Assignment to extracted keypoints.?
Mostrar comentarios más antiguos
I was reading the David G.Lowe paper on SIFT, and I followed the paper in order to implement each step that is part of the SIFT algorithm. So far I've implemented the scale space, Difference of Gaussian, extrema (keypoint) detection, keypoint refinement, edges removal from extracted keypoints. The result so far is 4x1 cell containing 4 matrices of nx2 which contains the refined keypoints locations in DoG images from 4 different scales or octave.
I can plot the keypoints and they look pretty good, no issue so far.
Now I'm at this step of SIFT implementation where I've to assign orientation to each extracted keypoint, at this step I've computed the magnitude and orientation images of the DoG images in each octave/scale. Right after this I'm not able to understand the SIFT paper, I don't know what kind of histogram they are talking about, what that 36 bins histogram will hold, what will happen to the magnitude , what kind of circular gaussian blur window they talking about. Here is the paragraphs of the Lowe paper on SIFT that I'm not getting:
"An orientation histogram is formed from the gradient orientations of sample points within a region around the keypoint. The orientation histogram has 36 bins covering the 360 degree range of orientations. Each sample added to the histogram is weighted by its gradient magni- tude and by a Gaussian-weighted circular window with a σ that is 1.5 times that of the scale of the keypoint.
Peaks in the orientation histogram correspond to dominant directions of local gradients. The highest peak in the histogram is detected, and then any other local peak that is within 80% of the highest peak is used to also create a keypoint with that orientation. Therefore, for locations with multiple peaks of similar magnitude, there will be multiple keypoints created at the same location and scale but different orientations. Only about 15% of points are assigned multiple orientations, but these contribute significantly to the stability of matching. Finally, a parabola is fit to the 3 histogram values closest to each peak to interpolate the peak position for better accuracy. "
lets say I have 2 octaves of each holding 3 levels of blured images, the extracted keypoints are in two matrices, matrix1 holding 10x2 keypoints locations (extracted from octave1 DoG images), matrix2 is holding 5x2 keypoints locations (extracted from octave2 DoG images). how would you assign orientation to keypoints in matrix1, and matrix2.??
OR
give me a simple explanation of the given paragraphs in terms of Matlab code or programming conventions.
1 comentario
zakariae drabech
el 4 de Jul. de 2019
Hi!
did you understand the concept of orientation assignment?
Respuestas (0)
Categorías
Más información sobre SIFT - Scale Invariant Feature Transform en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!