Skip to content
AI360Xpert
Beta

FAST Corner Detector

FAST checks a ring of pixels around each candidate and calls it a corner when a long unbroken arc looks clearly brighter or darker.

FAST compares 16 ring pixels to the center and fires on a long contiguous bright or dark arc.
FAST compares 16 ring pixels to the center and fires on a long contiguous bright or dark arc.

Why Does This Exist?

Harris and Shi-Tomasi convolve gradients everywhere, which costs too much on phones and robots. Real time tracking needs hundreds of corners per frame at camera rate. FAST trades gradient math for direct brightness comparisons.

It tests pixels on a Bresenham circle of radius 3, so 16 samples around each candidate. The early reject uses only four compass points, which kills most non-corners fast. Learn the corner idea in corner and keypoint detection, then use FAST when speed matters.

Think of It Like This

Checking a clock face

Look at a clock and compare each hour mark to the center cap. If nine hours in a row are clearly lighter than the cap, you sit on a bright corner. If they are darker, you sit on a dark corner. Four quick glances at 12, 3, 6, and 9 already rule out most faces.

The analogy stops at thresholds: clocks have fixed paint, while FAST uses a brightness margin tt you must pick for your sensor noise.

How It Actually Works

For center pixel pp with intensity IpI_p and threshold tt, label each ring pixel xx as brighter when Ix≥Ip+tI_x \ge I_p + t, darker when Ix≤Ip−tI_x \le I_p - t, else similar. The classic FAST-12 rule calls pp a corner when 1212 contiguous ring pixels share the brighter label or share the darker label.

Worked numbers

Say Ip=120I_p = 120 and t=20t = 20. Brighter means at least 140140, darker means at most 100100. A ring with consecutive values [150,152,148,155,149,151,153,147,150,152,149,151,118,122,119,121][150, 152, 148, 155, 149, 151, 153, 147, 150, 152, 149, 151, 118, 122, 119, 121] has 1212 bright pixels in a row, so FAST fires. Change the first three to [121,119,122][121, 119, 122] and no 1212-long run survives, so it rejects.

Speed comes from the decision tree: test pixels 11, 99, 55, 1313 first. Fewer than three of those four pass, and the candidate dies without reading the rest. Survivors get non-maximum suppression on a corner strength score.

FAST has no orientation, no scale handling, and no descriptor. That is why ORB builds a pyramid plus orientation on top of it.

Watch Out For

Threshold tuned on clean images

A small tt on noisy video fires on grain. A large tt on soft lenses misses real corners. Retune tt when exposure, gain, or blur changes, and always keep non-maximum suppression on.

Expecting matches from points alone

FAST outputs locations only. Two FAST point sets cannot match without descriptors. Pair it with BRIEF or ORB before you attempt feature matching.

The Quick Version

  • FAST samples 16 ring pixels around each candidate center.
  • FAST-12 fires on 12 contiguous pixels all brighter or all darker than center plus margin.
  • Four compass tests reject most candidates early, which makes it very fast.
  • No orientation, scale, or descriptor comes out of the box.
  • Use it inside ORB or a tracking front end, not as a standalone matcher.