资源描述:
《霍夫变换检测圆和直线.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、霍夫变换检测任意形状一、实验目的1.掌握MATLA颤件的使用,以及其设计流程;2.掌握霍夫变换的实现方法;3.用MATLAB!言设计基于霍夫变换的任意图形的识别。二、实验仪器或设备装MATLA颤件的微机一台三、总体设计原理及流程图1、程序设计的原理霍夫变换的基本思想就是把图像平面上的点对应到参数平面上的曲线,最后通过统计特性来解决问题。具有良好的抗噪声性能和对部分遮盖的不敏感等特性。2、程序流程图四、主要程序代码1、霍夫变换检测圆程序clearall;closeall;clc;%[cr,st]=circle_product;%st(1)->x,st(2)->y,st(3)->rcr=im
2、read('sample.bmp');%circle1.bmpfigure;imshow(cr);[row,range]=size(cr);p=row*range;a=0;Y=zeros(1,p);Q=zeros(1,p);fork1=1:1:rowfork2=1:1:rangeifcr(k1,k2)==0a=a+1;XXX=k2-1;YYY=row+1-k1;Y(a)=YYY;Q(a)=XXX;endendendfork3=1:1:pifY(k3)==0&Q(k3)==0break;endend%z=ones(1,5);%a=1:1:300;b=1:1:300;%z1=sqrt((a-
3、Q(1)).A2+(b-Y(1)).A2);%z2=sqrt((a-Q(2))A2+(b-Y(2))A2);%z3=sqrt((a-Q(3)).A2+(b-Y(3)).A2);%z4=sqrt((a-Q(4))A2+(b-Y(4))A2);%z5=sqrt((a-Q(5)).A2+(b-Y(5)).A2);%%z1=sqrt((a-Q(1))*(a-Q(1))+(b-Y(1))*(b-Y(1)));%%Z1=(a-Q(1))A2+(b-Y(1))A2;r0=(abs(z1-z2)<=0.1&abs(z1<=z3)<=0.1&abs(z1<=z4)<=0.1&abs(z1<=z5)<=0.
4、1&abs(z2<=z3)<=0.1&abs(z2<=z4)<=0.1&abs(z2<=z5)<=0.1);%r=r0.*z1;%aa=r0.*a;%bb=r0.*b;%rrr=round(r(r0~=0))%aaa=aa(r0~=0)%bbb=bb(r0~=0)k7=floor(k3/6);k5=2;a=1:1:300;b=1:1:300;rrr=zeros(1,p);aaa=zeros(1,p);bb=zeros(1,p);k6=0;as=0;k11=1;fork5=1:1:k7%k6=0;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5、%%%%%%%%%%%%%%%9%%%%%%z1=sqrt((a-Q(k5)),A2+(b-Y(k5)).A2);z2=sqrt((a-Q(k5+1)),A2+(b-Y(k5+1)),A2);z3=sqrt((a-Q(k5+2)).A2+(b-Y(k5+2)).A2);z4=sqrt((a-Q(k5+3)).A2+(b-Y(k5+3)).A2);z5=sqrt((a-Q(k5+4)).A2+(b-Y(k5+4)).A2);z6=sqrt((a-Q(k5+5)).A2+(b-Y(k5+5)).A2);r0=(abs(z1-z2)<=.1&abs(z1<=z3)<=.1&abs(z1<=z4
6、)<=.1&abs(z1<=z5)<=.1&abs(z1<=z6)<=.1&abs(z2<=z3)<=1&abs(z2<=z4)<=.1&abs(z2<=z5)<=.1&abs(z2<=z6)<=.1);rr=r0.*z1;aa=r0.*a;bb=r0.*b;[m,n]=size(rr);ifrr==zeros(1,n);as=as+1;continue;end[pz1,pz]=size(rr(r0〜=0));rrr=round(rr(r0~=0))aaa=aa(r0~=0)bbb=bb(r0~=0)pz2=pz+k11-1;k9=1;fork8=k11:pz2RR(k8)=rrr(k9
7、);XX(k8)=aaa(k9);YY(k8)=bbb(k9);k9=k9+1;endk11=k8+1;%ifrr==zeros(1,n);%as=as+1;continue;%endend%ifaa==zeros(1,300)%as=1%endrangex=1:1:range;rowy=1:1:row;[RX,RY]=meshgrid(rangex,rowy);RT=RX;figure;mesh(RX,RY,RT);holdon;