Code covered by the BSD License

### Highlights fromCircle Detection via Standard Hough Transform

3.5

3.5 | 16 ratings Rate this file 114 Downloads (last 30 days) File Size: 2.21 KB File ID: #4985

# Circle Detection via Standard Hough Transform

23 May 2004 (Updated 31 Aug 2012)

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

File Information
Description

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)

Acknowledgements
Required Products Image Processing Toolbox
MATLAB release MATLAB 6.5 (R13)
Tags for This File
Everyone's Tags
Tags I've Applied
Comments and Ratings (19)
31 Aug 2012

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 (http://www.computervisiononline.com/software) for more open source software related to image processing and computer vision

09 Apr 2012
09 Apr 2012
02 Jun 2009

The performance is sensitive to the pre-defined radius.

02 Mar 2008

It's nice to read

11 Jan 2008

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

14 Sep 2007

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

10 Apr 2007

do the fair good work.

12 Mar 2007
04 Jan 2007

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

26 Jun 2006

26 Jun 2006
04 Jan 2006
14 Dec 2005

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

16 Nov 2005

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

Does not work at all

04 Jan 2005
27 Oct 2004

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.

low=x-r;
high=x+r;
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;
end
if y02 < size(Imbinary,1) & y02 >= 1
Accumulator(y02,x0) = Accumulator(y02,x0)+1;
end
end

19 Jul 2004

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