I got really confused by the content of SIFT descriptor. As I got the descriptor should contain the orientation of keypoints. For each keypoint 128 numbers different orientations. And then a feature vector which is histogram of these orientations could be generated. My questions are first after saving the descriptor file I found that the orientations are not more than 150. I saved image with its keypoints using drawKeypoints function and DRAW_RICH_KEYPOINTS as the flag and in documentation it is said that : "For each keypoint the circle around keypoint with keypoint size and orientation will be drawn." In that image I could see some keypoints' orientations look like 300!! Why this is happened? and second the orientations should be in 8 dimensions, is that right? It means I should have just these numbers: 45,90,135, 180, 225, 270, 315 and 360. But I have more than these 8 directions in descriptor! Almost any number between 0 and 150. Why? Does it mean to make a histogram of keypoints I should group all orientations to those 8 groups myself?
Please someone give me an answer, There is a while I am reading about it and still have these issues to understand SIFT completely. Many thanks in advance