|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
版主和eight(八)及各位高手我想问一下我的代码可以在编辑的M文件里正常运行,但是怎么我将代码添加到GUI里之后就会出错!
下面是我的一部分代码,请帮忙看一下。谢谢!代码有点长,但是还请高手帮忙看看,我这里先谢了,真是急死我了!
a=imread('1.bmp');
b=imread('2.bmp');
N1=40; %模板大小
N2=size(a); %图象大小
N=20; %搜索区
n=2*N+1; %搜索范围
qs=58; %区域起始点
js=70; %区域结束点
bj=1; %计算步进
U=zeros(N2);
V=zeros(N2);
for a0=qs:bj:js;
for b0=qs:bj:js;
a1=a((a0-N1/2):(a0+N1/2),(b0-N1/2):(b0+N1/2));
c=zeros(1,n^2);
G=zeros(n);
k=0;
for uz=-N:N
for vz=-N:N
b1=b((a0-N1/2+uz):(a0+N1/2+uz),(b0-N1/2+vz):(b0+N1/2+vz));
k=k+1;
c(k)=corr2(a1,b1);
end
end
k=0;
for i=n:-1:1
for j=1:n
k=k+1;
G(i,j)=c(k);
end
end
max_c=max(c);
B=find(c==max_c);
if mod(B,n)==0
uz=fix(B/n)-N-1;
vz=N;
else
uz=fix(B/n)-N;
vz=mod(B,n)-N-1;
end
max_G=max(max(G));
[Gx,Gy]=find(G==max_G);
ds=3;
G1=G(Gx-ds:Gx+ds,Gy-ds:Gy+ds);
[xi,yi]=meshgrid(0:0.01:2*ds+1);
z=interp2(G1,xi,yi,'*spline');%灰度插值
max_z=max(max(z));
[zx,zy]=find(z==max_z);
[zGx,zGy]=find(z==max_G);
V(a0,b0)=uz+(zGx-zx)*0.01; %V代表行方向的位移,即Y方向
U(a0,b0)=vz+(zy-zGy)*0.01; %U代表列方向的位移,即X方向
end
end
x1=V(a0,b0);
y1=U(a0,b0);
U=U(qs:js,qs:js);
V=V(qs:js,qs:js);
meanU=mean(mean(U));
maxU=max(max(U));
minU=min(min(U));
stdU=std2(U);
meanV=mean(mean(V));
maxV=max(max(V));
minV=min(min(V));
stdV=std2(V);
% figure,quiver(U,V) %这是我用单独用M文件编译之后产生的图像,这种情况下是可以正常运行的
% xlabel('x方向(pixel)');
% ylabel('y方向(pixel)');
% title('位移场');
axes(handles.axes4); %这是我把上面代码加到GUI的按钮callback里之后再产生图像,但是这种情况下就会出错,错误如下
imshow(plot(quiver(U,V)))
xlabel('x方向(pixel)');
ylabel('y方向(pixel)');
%%%%%%错误
??? Error using ==> plot
Not enough input arguments.
Error in ==> displacementstrain>filed_Callback at 280
imshow(plot(quiver(U,V)))
Error in ==> gui_mainfcn at 95
feval(varargin{:});
Error in ==> displacementstrain at 42
gui_mainfcn(gui_State, varargin{:});
??? Error using ==> displacementstrain('filed_Callback',gcbo,[],guidata(gcbo))
Error using ==> plot
Not enough input arguments.
[ 本帖最后由 zheng720 于 2007-9-6 20:15 编辑 ] |
|