tpx840520 发表于 2006-4-8 16:30

请各位高人帮我修改一下算法中的错误,谢谢

function f=gradephase(x)
I=imread('go.tif');
x=rgb2gray(I);
gradephase(x)
function gradephase(x)
=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=';
while ~isempty(s)
=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='];In_spt{cn}='];
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='];In_spt{cn}='];
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='];In_spt{cn}='];
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='];In_spt{cn}='];
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='];In_spt{cn}='];
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='];In_spt{cn}='];
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='];In_spt{cn}='];
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='];In_spt{cn}='];
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=;
c(i)=lengh(In_spt{cn});
end
end
end
end

cdwxg 发表于 2006-4-8 23:50

这么长,高手们看也要半天吧
你把错误说出来
他们才会相应地给你看的
我是不会:)

happy 发表于 2006-4-9 08:32

function f=gradephase(x)
I=imread('go.tif');
x=rgb2gray(I);
x=double(x);
gradephase(x)
function gradephase(x)
=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=';
while ~isempty(s)
=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='];In_spt{cn}='];
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='];In_spt{cn}='];
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='];In_spt{cn}='];
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='];In_spt{cn}='];
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='];In_spt{cn}='];
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='];In_spt{cn}='];
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='];In_spt{cn}='];
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='];In_spt{cn}='];
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=;
c(i)=lengh(In_spt{cn});
end
end
end
end


你这里的错误都很简单的,自己仔细检查一下就不应该出现的
1. 两个函数重名了,看红色标记
2. 数据类型不对,增加蓝色标记部分
3. 字母大小写问题,matlab严格区分大小写,I改称i就行了,粉色标记部分
页: [1]
查看完整版本: 请各位高人帮我修改一下算法中的错误,谢谢