2010-07-14 14 views

Répondre

3

Tout d'abord, SURF (au moins, celui d'OpenCV) ne prend en charge que les images .

Il y a beaucoup de paramètres descripteurs avalable pour régler, les mettre à des valeurs inférieures peuvent augmenter les performances:

typedef struct CvSURFParams 
{ 
    int extended; // 0 means basic descriptors (64 elements each), 
       // 1 means extended descriptors (128 elements each) 
    double hessianThreshold; // only features with keypoint.hessian 
     // larger than that are extracted. 
       // good default value is ~300-500 (can depend on the 
     // average local contrast and sharpness of the image). 
       // user can further filter out some features based on 
     // their hessian values and other characteristics. 
    int nOctaves; // the number of octaves to be used for extraction. 
       // With each next octave the feature size is doubled 
     // (3 by default) 
    int nOctaveLayers; // The number of layers within each octave 
     // (4 by default) 
} 
CvSURFParams; 

Voir OpenCV's SURF docs.

En outre, vérifiez d'origine article et notes on OpenSURF lib

0

Il y a un problème avec la fonction cvRound, qui est largement utilisé par le code SURF. Pour résumer, la surcharge de fonction est accompagnée d'une conversion de type supplémentaire entre double et float, ce qui ralentit le code d'arrondi. Vous pouvez trouver une explication détaillée, ainsi que des mesures de vitesse et un patch ici: http://computer-vision-talks.com/2011/06/a-few-thoughts-about-cvround/.