Lowe's Ratio Test
The ratio test keeps a match only when the best candidate beats the runner up clearly, which drops pairs from repetitive texture.
Why Does This Exist?
Nearest neighbor always returns something, even on brick walls where every patch looks alike. Absolute distance thresholds fail because good pairs in hard lighting can sit farther than false pairs in clean texture. Lowe's fix compares each query against itself: how much better is best than second best.
A clear winner means a distinctive patch. A close race means ambiguity, so the pair is dropped before geometry. It sits between feature matching and robust fitting.
Think of It Like This
A photo finish rule
A race winner by a full stride is clear. A blanket finish with three noses together is a guess. Judges demand a margin before paying out.
The ratio is that margin. Below about pays, above it refuses. The analogy stops at calibration: sprint margins are fixed, while descriptor margins shift with binary versus float distances.
How It Actually Works
Run knn with per query to get best distance and runner up . Keep the match when:
Lowe's suits SIFT floats. Binary ORB often uses to on Hamming distances. Apply before cross check and RANSAC so estimators see cleaner input.
Worked numbers
A SIFT query with and gives ratio and survives. A brick query with and gives and is dropped even though its absolute best beats the first query. On raw pairs, ratio filtering often keeps to , and most drops are correct rejections of repeated texture. Tighten to for cleaner input, loosen to when recall starves.
Watch Out For
One threshold for all descriptors
Float Euclidean gaps and binary Hamming gaps live on different scales. Copying everywhere either starves ORB or floods SIFT. Tune per descriptor family on your own pairs.
Ratio as the only filter
Ratio kills ambiguity, not geometric error. Repeated windows can still pass by chance. Always follow with cross check or a RANSAC vote before estimating pose.
The Quick Version
- Needs knn with distances per query.
- Keeps matches with below threshold, classically .
- Rejects repetitive texture better than absolute caps.
- Cheap and essential before geometric estimation.
- Tune separately for float and binary descriptors.