Ask Your Question
2

Brisk does not calculate orientation when keypoints are provided

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

Hi,

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:

void
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,
                                       useProvidedKeypoints);
}

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

Thanks in advance,

Gil.

edit retag flag offensive close merge delete

Comments

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
2

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

Stats

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

Seen: 330 times

Last updated: Aug 10 '13