Reputation: 31
I have a question about FREAK function in OpenCV 2.4.3. In the definition of FREAK, it says:
FREAK( bool orientationNormalized = true,
bool scaleNormalized = true,
float patternScale = 22.0f,
int nOctaves = 4,
const vector<int>& selectedPairs = vector<int>());
What does "patternScale" mean exactly? I couldn't find anything about "scale" in the FREAK papers. How are the kernel sizes of Gaussians in FREAK determined? I am asking this because BruteForce Matcher's matching pairs depend on the parameter "patternScale".
If I leave it as default, the matcher misses a few keypoints and they are not matched. However, if I change it to 1.0, the matcher matches every point. Is there anybody who knows why?
Upvotes: 3
Views: 1014
Reputation: 883
what does "patternScale" means exactly?
Around a found keypoint a pattern will be constructed to execute the testing. If you look into the paper you will see this human-inspired pattern. The patternscale defines how big this pattern is.
Isn't the kernel sizes of Gaussians in FREAK determined?
Yes. I would think so.
Additional you could look at the source-code of OpenCV.
Upvotes: 2
Reputation: 8120
So here's a little insight into the code surrounding the FREAK constructor and how it uses the patternScale parameter at OpenCV's own answers site:
http://answers.opencv.org/question/5360/freaks-patternscale-parameter-tuning/
That combined with this post about "eating" keypoints (similar to what you're experiencing, it seems)
Which seems to indicate that the patternScale is used to "scale up" the lookup keypoints of the original pattern. When they scale past the size of the image itself, they're simply dropped from the computation.
Upvotes: 3