View License

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video

4.7 | 28 ratings Rate this file 34 Downloads (last 30 days) File Size: 2.75 MB File ID: #7652 Version: 1.1
image thumbnail

A Corner Detector based on Global and Local Curvature Properties


Xiaochen He (view profile)


12 May 2005 (Updated )

A robust corner detector works on grey-level images as well as planar curves.

| Watch this File

File Information

CORNER works by the following step:
1. Apply the Canny edge detector to the grey level image and obtain a binary edge-map.
2. Extract the edge contours from the edge-map, fill the gaps in the contours.
3. Compute curvature at a low scale for each contour to retain all true corners.All of the curvature local maxima are considered as initial corner candidates.
4. Initial corner candidates are compared using an adaptive local threshold to remove the round corners.
5. The angles of corner candidates are evaluated to eliminate any false corners due to quantization noise and trivial details. The above evaluation is based on a dynamic region of support, which changes according to its adjacent corner candidates.
6. End points of contours are considered with an additional criterion.

Algorithm is derived from:
X.C. He and N.H.C. Yung, "Curvature Scale Space Corner Detector with Adaptive Threshold and Dynamic Region of Support", Proceedings of the 17th International Conference on Pattern Recognition, 2:791-794, August 2004.

Improved algorithm of above has been published in:
X.C. He and N.H.C. Yung, “Corner detector based on global and local curvature properties”, Optical Engineering, 47(5), pp: 057008, 2008. (This paper is included in corner.rar for reference)


This file inspired Robust Image Corner Detection Based On The Chord To Point Distance Accumulation Technique and A Fast Corner Detector Based On The Chord To Point Distance Accumulation Technique.

Required Products Image Processing Toolbox
MATLAB release MATLAB 6.5 (R13)
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (39)
19 Sep 2016 viviek

viviek (view profile)

07 May 2015 sathish balakrishnan

21 Apr 2015 jarrar manel

code plz

14 Apr 2014 Abdulkadir SENGUR

Output argument "curve" (and maybe others) not assigned during call to
% Extract curves

Comment only
28 Dec 2013 Hg

Hg (view profile)

do you also implement it on C++ or opencv?

11 Dec 2013 Shasha Glow

Can i get the code... just for reference..

09 Jun 2013 Meng

Meng (view profile)

Very usefull

03 Jun 2013 CHARFI

CHARFI (view profile)

does anyone have the matlab source code of the Rosenfeld method for corner detection? or how to find it? PLEASE!

Comment only
08 Jul 2012 Winnie

Winnie (view profile)

Can anyone tell me how to call this function? What is the parameter(s) to be passed to this function? PLS HELP!

Comment only
29 Jun 2012 Winnie

Winnie (view profile)


Comment only
11 Feb 2012 Pushpajit Khaire

Thanks..was very useful great work...

10 Feb 2012 Lili

Lili (view profile)

08 Aug 2011 mercy jesu

good it was very much useful to me....

Comment only
05 Jul 2011 sanjay

sanjay (view profile)

19 Apr 2011 Tatsiana

to avoid the failure set Endpoint = 0;

Comment only
19 Apr 2011 Tatsiana

If the corner detector doesnt find any corners in the image, a failure occures:
"Error using ==> minus
Matrix dimensions must agree.

Error in ==> corner>get_corner at 291
compare_corner=cout-ones(size(cout,1), 1)*curve_start(i,:);"

Comment only
14 May 2010 anand mishra

why higher sigma value some time gives more corner? can any one explain me.

Comment only
21 Jul 2009 Jozs

Jozs (view profile)

16 May 2009 hbu 

hbu  (view profile)

good ,thank you very much!

Comment only
29 Jul 2008 liu YY

22 May 2008 Suvdaa B

Thank you very much.
Good luck for your research work.

28 Feb 2008 minde min daugelis

22 Dec 2007 z lijie

thank you very much!

28 Nov 2007 Somaya Mostafa

Good code for making edge and corner detection

14 Nov 2007 Nat Ang

Good code, works fine. Just a little addition...if the image (like in some of my cases) does not have corners the program produces an error...solved by adding in the function get_corner another conditional in the last if...
if count,
if Endpoint,....

Other than that it's perfect. The error was generated when evaluating segments of ellipsoids and looking for corners in the edges to identify overlapping ellipses.
If the segment did not have corners neither was closes (a full ellipse) then the error was generated....this is for general information it might be useful for someone!.


25 Oct 2007 Jonathan Perilla

17 Apr 2007 rainer martin

good work and thansk for this publication

29 Mar 2007 Nan Jiang

The flip on retrieving zero-crossing point is smart.
In Fit a circle step, what (x0, y0) suppose to mean? I guess it the center of the fitted circle? Am I right?

Comment only
28 Nov 2006 Daniel Daniel

14 Nov 2006 Xiaochen He

Reply to ming cui's comments: the multiscale tracing is not a step of my corner detector. It is adopted by CSS corner detector, which was referenced in my ICPR paper.

Comment only
09 Nov 2006 gorkem serbes

It works perfect, nice job.

03 Nov 2006 ming cui

Well ,the result is pretty good, but the author did not do the multiscale tracing, claimed as step 5 & 6 in his icpr paper. If this programmme is used to prove the paper, then it's kind of incomplete.

09 Sep 2006 Don M

Excellent job. Code works as perfect. Thank you for your great work!

20 Aug 2006 abu bakar elmi

I had tried and it work great.

04 Jul 2006 Mohammad Awrangjeb

simply gr8!

09 Jun 2006 Zhigang Tan

it integrates both local and global information to determine a salient corner. Just behave as a multi-scale corner detector. Really great work! Though better mathematical explanation would reputate it.

05 Jun 2006 Shripad Kondra

Simply gr8 ! This is a nice algorithm, easy to understand, specially for newbies in contour tracing

24 May 2006 Youn Kim

I like the "extract_curve" function in this code.

18 Oct 2005 Itachi Uchiha

Great work! I've tried many corner detectors (Harris-Plessey, SUSAN, Kitchen/Rosenfeld...) and this one gives the best results. Highly recommended!

06 Sep 2005

Add information that the paper related to this algorithm has been submitted to IEEE Transaction on Image Processing

19 May 2009 1.1

1. BSD license assigned
2. Newly published paper based on this code is included for reference

Contact us