Ask Your Question

Brisk does not calculate orientation when keypoints are provided

asked 2013-08-10 09:53:01 -0600


I encountered something that looks a bit strange to me regarding Brisk's implementation.

A common way to use Brisk is:

    Ptr<FeatureDetector> detector = FeatureDetector::create(detector_name);
    Ptr<DescriptorExtractor> descriptor = DescriptorExtractor::create(descriptor_name);
    string s = format("%s\\%s\\img%d.ppm", dataset_dir.c_str(), dsname, k);
    Mat imgK=imread(s, 0);
    detector->detect(imgK, kp);
    descriptor->compute(imgK, kp, desc);

However, when using it this way, we supply the keypoints to the Brisk descriptor and the flag "useProvidedKeypoints" is true, thus Brisk does not compute orientation:

BRISK::operator()( InputArray _image, InputArray _mask, vector<KeyPoint>& keypoints,
                   OutputArray _descriptors, bool useProvidedKeypoints) const
  bool doOrientation=true;
  if (useProvidedKeypoints)
    doOrientation = false;
  computeDescriptorsAndOrOrientation(_image, _mask, keypoints, _descriptors, true, doOrientation,

Is that a bug or am I missing something here about Brisk's implementation?

Thanks in advance,


edit retag flag offensive close merge delete


Guess it is assumed, that the keypoints already have computed an orientation.

Guanta gravatar imageGuanta ( 2013-08-10 10:48:41 -0600 )edit

1 answer

Sort by ยป oldest newest most voted

answered 2013-08-10 14:21:21 -0600

Problem solved: when calling the Brisk detector, it computes orientation.

edit flag offensive delete link more

Question Tools


Asked: 2013-08-10 09:53:01 -0600

Seen: 312 times

Last updated: Aug 10 '13