I was looking at the API for EMGU and the BrutheForceMatcher
. If you create BruteForceMatcher(T)(DistanceType)
constructor, it does not do cross check. However, I do not know what cross check is, and it doesn't seem to be mentioned in the API. In terms of this EMGU and computer vision, what is cross check?

- 13,614
- 6
- 43
- 65
1 Answers
From the C++ API documentation:
crossCheck – If it is false, this will be default BFMatcher behavior when it finds the k nearest neighbors for each query descriptor. If crossCheck==true, then the knnMatch() method with k=1 will only return pairs (i,j) such that for i-th query descriptor the j-th descriptor in the matcher’s collection is the nearest and vice versa, i.e. the BFMatcher will only return consistent pairs. Such technique usually produces best results with minimal number of outliers when there are enough matches. This is alternative to the ratio test, used by D. Lowe in SIFT paper.
Edit:
From what I understood I'm quite sure you can sum up the above by saying that, if you found the closest match B
for feature A
, the tuple (A,B)
is only considered a Consistent Pair
and therefore returned if A
is also the closest match for your feature B
.
A 1D example:
-----A------B---C
In this case even though B
is the best match for A
it is not vice versa. Instead, (B,C)
will be your Consistent Pair
-----A--B-------C
Here, on the other hand, obviously (A,B)
is the better match and it will be returned.
(The other approach by Loewe mentioned in the documentation has also already been discussed on SO over here)

- 1
- 1

- 679
- 14
- 32
-
Whoever wrote that definition in the API didn't proof read it lol. Can you put this in ***layman's terms***? – But I'm Not A Wrapper Class Jun 26 '14 at 14:52