|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
在程序运行中总出现这样的提示A function declaration cannot appear within a script M-file.
源代码如下:
- a=imread('go.tif');
- z=rgb2gray(a);
- gradephase(z)
- function gradephase(x)
- [m,n]=size(x);
- bw=edge(x,'sobel');
- gy=x(1:m-1,1:n-1)-x(2:m,1:n-1);
- gx=x(1:m-1,1:n-1)-x(1:m-1,2:n);
- g=gy./(gx+eps);
- ph=atan(g)+(sign(gx)<0&sign(gy)>0)*pi+(sign(gx)<0&sign(gy)<0)*pi+(sign(gx)>0&sign(gy)<0)*2*pi+(sign(gx)==0)*pi;
- grdgp=floor(ph/pi*4)+1;
- cn=0;s=[];
- In_spt=cell(1,1);
- pline=[];
- for i=2:m-1
- for j=2:n-1
- if bw(i,j)~=0&grdgp(i,j)~=0
- ph_cp=grdgp(i,j);grdgp(i,j);bw(i,j);
- cn=cn+1;p=[i,j]';
- while ~isempty(s)
- [cs,rs]=size(s);
- ps=s(:,rs);s=s(:,1:rs-1);
- col=ps(1,1);row=ps(2,1);
- if legal(cil+1,row,m,n)&grdgp(col+1,row)==ph_cp
- s=[s,[col+1,row]'];In_spt{cn}=[In_spt{cn},[col+1,row]'];
- bw(col+1,row)=0;grdgp(col+1,row)=0;
- end
- if legal(col+1,row+1,m,n)&grdgp(col+1,row+1)==ph_cp
- s=[s,[col+1,row+1]'];In_spt{cn}=[In_spt{cn},[col+1,row+1]'];
- bw(col+1,row+1)=0;grdgp(col+1,row+1)=0;
- end
- if legal(col,row+1,m,n)&grdgp(col,row+1)==ph_cp
- s=[s,[col,row+1]'];In_spt{cn}=[In_spt{cn},[col,row+1]'];
- bw(col,row+1)=0;grdgp(col,row+1)=0;
- end
- if legal(col-1,row+1,m,n)&grdgp(col-1,row+1)==ph_cp
- s=[s,[col-1,row+1]'];In_spt{cn}=[In_spt{cn},[col-1,row+1]'];
- bw(col-1,row+1)=0;grdgp(col-1,row+1)=0;
- end
- if legal(col-1,row,m,n)&grdgp(col-1,row)==ph_cp
- s=[s,[col-1,row]'];In_spt{cn}=[In_spt{cn},[col-1,row]'];
- bw(col-1,row)=0;grdgp(col-1,row)=0;
- end
- if legal(col-1,row-1,m,n)&grdgp(col-1,row-1)==ph_cp
- s=[s,[col-1,row-1]'];In_spt{cn}=[In_spt{cn},[col-1,row-1]'];
- bw(col-1,row-1)=0;grdgp(col-1,row-1)=0;
- end
- if legal(col,row-1,m,n)&grdgp(col,row-1)==ph_cp
- s=[s,[col,row-1]'];In_spt{cn}=[In_spt{cn},[col,row-1]'];
- bw(col,row-1)=0;grdgp(col,row-1)=0;
- end
- if legal(col+1,row-1,m,n)&grdgp(col+1,row-1)==ph_cp
- s=[s,[col+1,row-1]'];In_spt{cn}=[In_spt{cn},[col+1,row-1]'];
- bw(col+1,row-1)=0;grdgp(col+1,row-1)=0;
- end
- end
- if length(In_spt{cn})<=10
- In_spt{cn}=[];
- cn=cn-1;
- else
- plne=draw_l(In_spt{cn});
- pline=[pline,plne];
- c(i)=lengh(In_spt{cn});
- end
- end
- end
- end
复制代码 |
|