View License

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

» Watch video

Highlights from
Circle Detection via Standard Hough Transform

Join the 15-year community celebration.

Play games and win prizes!

» Learn more

3.5 | 17 ratings Rate this file 36 Downloads (last 30 days) File Size: 2.21 KB File ID: #4985 Version: 1.1

Circle Detection via Standard Hough Transform


Amin Sarafraz (view profile)


23 May 2004 (Updated )

Find circles with specific radius in a binary image via Standard Hough Transform.

| Watch this File

File Information

Function uses Standard Hough Transform to detect circles in a binary image.
According to the Hough Transform for circles, each pixel in image space
corresponds to a circle in Hough space and vise versa.
upper left corner of image is the origin of coordinate system.

Example :
[y0detect,x0detect,Accumulator] = houghcircle(Imbinary,r,thresh)


This file inspired Hough Transform For Circle Detection (Gui), Parabola Detection Using Hough Transform, and Hough Transform For Circle Detection.

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 (20)
24 Oct 2014 YIBO

YIBO (view profile)

31 Aug 2012 Amin Sarafraz

Amin Sarafraz (view profile)

all the reported bugs are fixed, please let me know if you find any other bug. Thanks. and check out the software section on the Computer Vision Online ( for more open source software related to image processing and computer vision

Comment only
09 Apr 2012 waspinator  
09 Apr 2012 Mr Smart  
02 Jun 2009 David

David (view profile)

The performance is sensitive to the pre-defined radius.

02 Mar 2008 varadha raj

It's nice to read

11 Jan 2008 smitha deepu

pls send me the mat lab coding for creation of bounding box using regionprops.

Comment only
14 Sep 2007 Georg Wiora

Hardly appliable to real problems, because you need to know the exact radius of the circle you are looking for.

10 Apr 2007 he yi

do the fair good work.

12 Mar 2007 ahmed ahmed  
04 Jan 2007 zainal muttaqin

i want to know algorithm for image processing, now iam starting to experiment

26 Jun 2006 Jamal Joder


Comment only
26 Jun 2006 Big Huy  
04 Jan 2006 mcs swami  
14 Dec 2005 Dennis Bush

If you can let the user set the range of radius, it would be better.

16 Nov 2005 Peter Bone

apart from the speed-up of only looking over the range where the sqrt is real, you can also remove the repeated calculations for y01 and y02.

yOffset = sqrt(r^2-(xIndex(cnt)-x0)^2);
y01 = yIndex(cnt) - yOffset;
y02 = yIndex(cnt) + yOffset;

Also, take the r^2 and image size calculations out of the for loop. They only need to be claculated once.

19 Oct 2005 Joseph Nguyen

Does not work at all

04 Jan 2005 anish l  
27 Oct 2004 CJ Taylor

You should replace your inner loop to look only over the range of value for which your sqrt is real. This will noticably speed up your routine.

if (low<1) low=1; end
if (high>size(Imbinary,2)) high=size(Imbinary,2); end
for x0 = low:high
y01 = y-sqrt(r^2-(x-x0)^2);
y02 = y+sqrt(r^2-(x-x0)^2);
y01 = round(y01); y02 = round(y02);
if y01 < size(Imbinary,1) & y01 >= 1
Accumulator(y01,x0) = Accumulator(y01,x0)+1;
if y02 < size(Imbinary,1) & y02 >= 1
Accumulator(y02,x0) = Accumulator(y02,x0)+1;

19 Jul 2004 Mirko Beccaria

Semplice e ben fatto,magari andrebbero aggiunte alcune note per spiegare meglio il programma.Comunque complimenti

31 Aug 2012 1.1

Implemented suggestion by Peter Bone/ Better documentation

Contact us