Feature Descriptors
A descriptor turns the patch around a keypoint into a compact numeric fingerprint, so two views of one corner look alike to code.
Why Does This Exist?
Detectors give locations, but locations alone cannot match. A corner at in photo one could pair with any of corners in photo two. Descriptors solve the identity problem by summarizing the local patch into a vector.
Good descriptors stay near each other under rotation, blur, and brightness shifts, while different patches stay far apart. That gap lets nearest neighbor search work. Start with corner and keypoint detection for locations, then read this for identity.
Think of It Like This
A spice mix, not the recipe
You cannot ship a full curry to identify it, so you send its spice ratios: so much cumin, so much chili, so much turmeric. Two kitchens with the same ratios made the same dish.
A descriptor is that ratio card for an image patch. SIFT sends orientation histograms, BRIEF sends brightness comparisons. The analogy stops at exactness: spice ratios identify dinner, descriptors only propose a match that geometry must confirm.
How It Actually Works
A descriptor pipeline has four steps. Normalize the patch for scale and rotation using the detector output. Sample gradients or pixel comparisons in a fixed layout. Pool them into histograms or bit strings. Normalize the vector to resist lighting change.
Worked numbers
SIFT builds cells of around the keypoint, orientation bins each, for floats. A patch rotated degrees first rotates its sampling grid by degrees, so the same physical edge lands in the same bins. After unit normalization, two views of one window might sit at Euclidean distance , while unrelated patches sit near . A binary BRIEF string of bits instead compares fixed pixel pairs and stores wins as bits, matched by Hamming distance.
Float vectors use Euclidean or cosine distance. Binary strings use Hamming distance, which counts differing bits and runs very fast.
Watch Out For
Matching raw patches instead of descriptors
Raw pixel windows break under one exposure shift. Descriptors exist because normalized gradients and comparisons survive it. If matches collapse at dusk, you skipped description, not detection.
Mixing distance metrics
Euclidean on binary strings and Hamming on SIFT floats both give nonsense rankings. Pair float descriptors with L2 and binary ones with Hamming, then confirm with the ratio test.
The Quick Version
- Detectors answer where, descriptors answer which one.
- SIFT style floats pool orientations; BRIEF style strings store comparisons.
- Rotation handling comes from the keypoint orientation, lighting handling from normalization.
- Floats match with Euclidean distance, binary strings with Hamming distance.
- Descriptors propose matches, geometry like RANSAC disposes.