2013-04-24 5 views
4

Я использую просеять алгоритм в OpenCV код, чтобы получить дескрипторы и ключевые точки из images.My кодаЗначение Strange Octave в алгоритме SIFT?

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> .После этого я хочу, чтобы получить Octave для каждого 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 

Так что я хочу спросить, правильно ли вычисляется значение Octave в алгоритме SIFT в opencv?

+0

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

ответ

6

Только что наткнулся на this link.

Похоже, значение octave для SIFT ключевых точек потребности в по "заплата":

keyPoint.octave = keyPoint.octave & 0xFF; 

 Смежные вопросы

  • Нет связанных вопросов^_^