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.
5.8K Downloads
Updated 25 May 2009

View License

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 (2024). 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 .

MATLAB Release Compatibility
Created with R14
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes
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