2013-04-24 4 views
4

SIFT 알고리즘에 이상한 옥타브 값이 있습니까? 내가 images.My 코드에서 설명하고 키포인트를 얻기 위해 OpenCV의 코드에서 알고리즘을 선별 사용하고

여기
Ptr<IplImage> image; 
    vector<KeyPoint> keypoints; 
    OutputArray des; 

    Feature2D *descriptor_type = new SIFT() 
    Mat image_mat(image); 
    (*descriptor_type)(image_mat,noArray(),keypoints,des,false); 

내가 벡터 < 키포인트> 그 후론에서 이미지의 키포인트를 얻을 수있다, 나는 싶어 자세한 내용은 각 KeyPoint의 옥타브를 참조하십시오. 그러나 하나의 이미지에 대해 각 키포인트 옥타브 값을 계산할 때 그것이 옳은지 확인하고 싶다는 것이 이상하게 보입니다.

for(int i=0;i<keypoints.size();i++) 
{ 
    cout<< (keypoints[i].octave) <<endl; 
} 

9765375 
9765375 
2621951 
8323583 
13763071 
6488575 
12845567 
721407 
3604991 
12321279 
9568767 
7406079 
8585727 
4653567 
7799295 
7799295 
5112319 
10486271 
9961983 
6226431 
1245951 

내가 SIFT 알고리즘을 SURF 알고리즘으로 변경하면 정상이 될 것입니다.

0 
0 
0 
0 
0 
0 
1 
0 
0 
0 
0 
1 
1 
1 
0 
1 
1 
1 
0 
0 
1 
0 

그래서 SIFT 알고리즘의 옥타브 값 계산이 opencv에서 올바른지 묻고 싶습니다.

+0

http://code.opencv.org/issues/2987 – Amro

답변

6

그냥 this link에 도달했습니다.

이 SIFT에 대한 octave 값이 "패치"에 의해 요구 키포인트 것 같아 :

keyPoint.octave = keyPoint.octave & 0xFF;