Code covered by the BSD License  

Highlights from
Circle Detection

from Circle Detection by Vineet
To detect circle in a gray scale image.

Hughcir.m
function[I2,center]=Hughcir(I)

[r c]=size(I);

%defining max &min values for radius
rmax=272;
rmin=271;

PL=zeros(r,c,rmax-rmin+1);
for rad=rmin:rmax
    
    k=1;
    
    % creating a circle for given radius
    for theta=1:360
        x=rad*cosd(theta);
        y=rad*sind(theta);
        X(k)=floor(x+.5);
        Y(k)=floor(y+.5);
        k=k+1;
    end
    
    for i=1:3:r
        for j=1:3:c
            
            if(I(i,j)==1)
                Xi=X+i;
                Yj=Y+j;
                
                index=find((Xi>=rad)&(Yj>=rad)&(Xi<=r-rad)&(Yj<=c-rad));
                
                [rr cc]=size(index);
                P1=logical(zeros(r,c));   
                for l=1:cc
                    P1(Xi(index(l)),Yj(index(l)))=1;
                end
                PL(:,:,rad-rmin+1)=PL(:,:,rad-rmin+1)+P1(:,:);
            end
            
            
        end
    end
end

ma=max(max(max(PL)));

[r c1 p]=find(PL==ma);

pag=floor(c1/c);
ac=c1-(c*pag);

I2=logical(zeros(size(I)));
nrad=pag+rmin;
center(1)=r(1);
center(2)=ac(1);
for theta=1:.2:360
    x=nrad(1)*cosd(theta);
    y=nrad(1)*sind(theta);
    Xn=r(1)+floor(x+.5);
    Yn=ac(1)+floor(y+.5);
    I2(Xn,Yn)=1;
end

Contact us at files@mathworks.com