Computation of Match Metric in matchFeatures

5 次查看(过去 30 天)
I'm using the matchFeatures function to match two sets of SURF features. Running with the default arguments, I know that sum-of-squares distances (SSD) are computed and both a threshold test and ratio test are used. I'm a little curious at how the threshold test works. Ratio tests and nearest neighbor matching are well documented.
From generating C code output, I know with the default threshold parameter of 1%, match metrics greater than 0.4 are rejected. This is because (per the documentation) ideal matches have a metric of 0 and the worst matches have a metric of 4. Everything else is buried in library code.
If I were trying to replicate this threshold test in Python (or even C++ without Coder) and OpenCV, what kind of math would I be doing to compute the metrics? Why is the max distance 4? Is there some sort of normalization or statistical technique being used?

采纳的回答

Prabhan Purwar
Prabhan Purwar 2020-3-27
Hi,
  • Each feature vector is normalized before computing similarity score between feature vectors. This brings each value of feature vector to range [-1,1].
Normalization =(fVec-mean(fVec))/norm(fVec);
  • SSD is computed using formula
(|| fVec1 - fVec2 ||L2 ) / || fVec2||);
and match score computed between normalized feature vectors rather than exact feature vectors.
  • Ideal matches have a metric of 0 and the worst matches have a metric of 4 as maximum value of the above equation is 4 when fVec1 = -fVec2 and min is 0 when fVec1 = fVec2.
Hope it helps!!
  1 个评论
Jonathan Bittner
Jonathan Bittner 2020-10-8
I'm just seeing this now as I went in to look for an archived answer to one of my other questions. Thank you! I believe this answered my question.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Feature Detection and Extraction 的更多信息

产品


版本

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by