资源简介

利用霍夫变换进行圆检测的MATLAB代码,带有详细解释,适合新手

资源截图

代码片段和文件信息



 function   [xyrcount]=hough(BW1x0y0r0rr)   
  %   BW1为输入的需检测的圆图象的矩阵[x0y0]为估算的定位中心的位置r0为估算的定位的半径rr是检测范围的外扩值   
  [mn]=size(BW1);   
  %确定搜索范围,搜索的矩形的四个定点为[e3e1][e3e2][e4e1][e4e2]   
  e1=floor(x0-r0)-rr;   
  if   e1<1   
          e1=1;   
  end   
  e2=ceil(x0+r0)+rr;   
  if   e2>n   
          e2=n;   
  end   
  e3=floor(y0-r0)-rr;   
  if   e3<1   
          e3=1;   
  end   
  e4=ceil(y0+r0)+rr;   
  if   e4>m   
          e4=m;   
  end   
  %Hough变换求瞳孔中心   
  flag=1;count=0;                         %flag为循环控制变量,count记录落在所得圆上的点   
  while(flag)   
          flag=0;   
          BW2=zeros(mn);                 %设0矩阵BW2,以BW2为变换空间   
          for   j=e1:e2                           
                  for   i=e3:e4   
                          if   BW1(ij)==1                                           %在搜索范围内找到一个值为1点   
                                  k=(j-x0)^2+(i-y0)^2-r0^2;               
                                  if   k>-1600&k<1600                             %这个点在有效区内   
                                          real=j-x0;imag=y0-i;   
                                          theta=atan2(imagreal);  

评论

共有 条评论