Robust Image Corner Detection based on the Chord-to-Point Distance Accumulation Technique

A robust scale-space corner detector that outperforms existing single and multi-scale detectors.

You are now following this Submission

1. Find the edge image using the Canny edge detector.

2. Extract edges (curves) from the edge image:
2a. fill gaps if they are within a range and select long edges,
2b. find T-junctions and mark them as T-corners.
2c. obtain the `status' of each selected edge ${\Gamma}$ as either `loop' or `line'.

3. Smooth ${\Gamma}$ using a small width Gaussian kernel in order to remove quantization noises and trivial details. This small scale Gaussian smoothing also offers good localization of corners.

4. At each point of the smoothed curve ${\Gamma_s}$, compute three discrete curvatures following the CPDA technique using three chords of different lengths.

5. Find three normalized curvatures at each point of ${\Gamma_s}$ and then multiply them to obtain the curvature product.

6. Find the local maxima of the absolute curvature products as candidate corners and remove weak corners by comparing with the curvature-threshold ${T_h}$.

7. Calculate angles at each candidate corners obtained from the previous step and compare with the angle-threshold ${\delta}$ to remove false corners.

8. Find corners, if any, between the ends of smoothed `loop' curves and add those corners which are far away from the detected corners.

9. Compare T-corners with the detected corners and add those T-corners which are far away from the detected corners.

Cite As

Mohammad Awrangjeb (2026). Robust Image Corner Detection based on the Chord-to-Point Distance Accumulation Technique (https://www.mathworks.com/matlabcentral/fileexchange/22390-robust-image-corner-detection-based-on-the-chord-to-point-distance-accumulation-technique), MATLAB Central File Exchange. Retrieved .

General Information

MATLAB Release Compatibility

  • Compatible with any release

Platform Compatibility

  • Windows
  • macOS
  • Linux
Version Published Release Notes Action
1.3.0.0

We set sigma=3 for all curves for the CPDA detector, since setting the sigma value based on the curve-length is rather impractical. This change improves the performance of the detector.

1.2.0.0

The absolute CPDA curvature values are calculated before normalization (line 118).

1.1.0.0

Bug fixed at function getcorner(). Thanks to users Natalia & piao lin.

1.0.0.0