junren 发表于 2008-5-14 16:43

求关于椭圆检测的程序

请教
谁有检测椭圆的程序。
具体说来就是:在一幅图像中,有一幅已经边缘检测好的图像。首先要验证图像中存在椭圆,(这个椭圆不一定是标准椭圆!)其次,确定椭圆的中心,长半轴,短半轴,(倾斜角度)。

[ 本帖最后由 eight 于 2008-5-14 17:06 编辑 ]

frogfish 发表于 2008-5-21 10:58

hough变换检测椭圆的MATLAB程序

=size(fedge);
minofa=a;
maxofa=round(row/2);
minofy0=round(col/2)-30;
maxofy0=round(col/2)+30;
minofb=round(col/2)-60;
maxofb=round(col/2);
maxofx=round(row/2);
scalor=4;
H=zeros(floor((maxofa-minofa)/scalor)+1,floor((maxofa-minofa)/scalor)+1,...
floor((maxofy0-minofy0)/scalor)+1,floor((maxofb-minofb)/scalor)+1);
for x=1:maxofx
   for y=1:col
   temp=fedge(x,y);
       if temp==255
         for a=minofa:scalor:maxofa
         for x0=a:scalor:maxofa
             for b=minofb:scalor:maxofb
               for y0=minofy0:scalor:maxofy0
                  temp=((y-y0)/b)^2+((x-x0)/a)^2;
                  if abs(temp-1)<=0.01
                         xtemp=floor((x0-minofa)/scalor)+1;
                         atemp=floor((a-minofa)/scalor)+1;
                         ytemp=floor((y0-minofy0)/scalor)+1;
                         btemp=floor((b-minofb)/scalor)+1;
                         H(xtemp,atemp,ytemp,btemp)=H(xtemp,atemp,ytemp,btemp)+1;
                     end
                end
            end
            end
          end
      end
   end
end

maxofH=max(max(max(max(H))));
for i=1:floor((maxofa-minofa)/scalor)+1
    for j=1:floor((maxofa-minofa)/scalor)+1
      for m=1:floor((maxofy0-minofy0)/scalor)+1
         for n=1:floor((maxofb-minofb)/scalor)+1
               temp=H(i,j,m,n);
                   if temp==maxofH
                     xtemp=i;
                     atemp=j;
                     ytemp=m;
                     btemp=n;
                     break;
                  end
            end
         end
   end
end

x0=(xtemp-1)*scalor+minofa;
a=(atemp-1)*scalor+minofa;
y0=(ytemp-1)*scalor+minofy0;
b=(btemp-1)*scalor+minofb;
figure;
imshow(fedge,[]);
hold on;
plot(y0,x0,'r+');
t=0:pi/180:2*pi;
plot(y0+b*sin(t),x0+a*cos(t),'r-');
hold off;

看看这个好不好使

ivylife 发表于 2009-3-10 11:06

请问下a是什么?
fedge是什么?正好要用到这个程序。多谢了
页: [1]
查看完整版本: 求关于椭圆检测的程序