Во-первых, SURF (по крайней мере, OpenCV) поддерживает только серый изображения.
Существует множество параметров дескрипторов, доступных для настройки, установка их на более низкие значения может повысить производительность:
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;
См. Документы OpenCV SURF .
Кроме того, ознакомьтесь с оригинальными статьями и примечаниями по OpenSURF lib