Code covered by the BSD License  

4.76

4.8 | 25 ratings Rate this file 72 Downloads (last 30 days) File Size: 2.75 MB File ID: #7652
image thumbnail

A Corner Detector based on Global and Local Curvature Properties

by

 

12 May 2005 (Updated )

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

| Watch this File

File Information
Description

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)

Acknowledgements

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 (36)
14 Apr 2014 Abdulkadir SENGUR

[L,W]=size(BW);
Output argument "curve" (and maybe others) not assigned during call to
[curve,curve_start,curve_end,curve_mode,curve_num]=extract_curve(BW,Gap_size);
% Extract curves

28 Dec 2013 Hg

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

Very usefull

03 Jun 2013 CHARFI

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

08 Jul 2012 Winnie

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

29 Jun 2012 Winnie

WHERE DO I DOWNLOAD THE SOURCE CODE?? PLEASE!

11 Feb 2012 Pushpajit Khaire

Thanks..was very useful great work...

10 Feb 2012 Lili  
08 Aug 2011 mercy jesu

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

05 Jul 2011 sanjay  
19 Apr 2011 Tatsiana

to avoid the failure set Endpoint = 0;

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,:);"

14 May 2010 anand mishra

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

21 Jul 2009 Jozs  
16 May 2009 hbu 

good ,thank you very much!

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!
Excellent!

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

THIS CODE SAVE ME A LOT OF TIME!!!
THANKS

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

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.

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!

Updates
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. BSD license assigned
2. Newly published paper based on this code is included for reference

Contact us