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. |