哪位高手帮忙改下一个程序错误 急用 谢
			 
			 
			
		
		
		
			
			clear all 
close all 
aviobj=avifile('object.avi'); 
info=aviinfo('D:\SampleVideo.avi'); 
numframe=info.NumFrames; 
mov=aviread('D:\SampleVideo.avi'); 
frame1=frame2im(mov(1,1)); 
frame1=rgb2gray(frame1); 
% imshow(frame1); 
[m,n]=size(frame1); 
 
for i=1:numframe-1 
    %提取第i帧和第i+1帧,并将之转化为两幅图像 
    f1=aviread('D:\SampleVideo.avi',i); 
    f2=aviread('D:\SampleVideo.avi',i+1); 
    f1=frame2im(f1); 
    I1=rgb2gray(f1); 
    f2=frame2im(f2); 
    I2=rgb2gray(f2); 
    %求差分图像并二值化 
    Im=abs(imsubtract(I2,I1)); 
    if Im>150 
        Imby=1; 
    else  
        Imby=0; 
    end 
    I=Imby; 
     
    %求二值后目标图像的质点 
        M00=0; 
        M10=0; 
        M01=0; 
        M20=0; 
        M02=0; 
        M11=0; 
        for j=1:m; 
            for k=1:n; 
                M00=M00+I(j,k); 
                M10=M10+j*I(j,k); 
                M01=M01+k*I(j,k); 
                M20=M20+(j^2)*I(j,k); 
                M02=M02+(k^2)*I(j,k); 
                M11=M11+j*k*I(j,k); 
             end  
        end 
        xcenter=M10/M00; 
        ycenter=M01/M00; 
        a=M20/M00-xcenter^2; 
        b=M11/M00-xcenter*ycenter; 
        c=M02/M00-ycenter^2; 
        %下段程序实现功能:求目标长轴与短轴的长度以确定目标大小 
        l=sqrt(1/2*((a+c)+sqrt(b^2+(a-c)^2)));%目标长轴计算 
        w=sqrt(1/2*((a+c)-sqrt(b^2+(a-c)^2)));%目标短轴计算 
        xmin=round(xcenter-l/2); 
        xmax=round(xcenter+l/2); 
        ymin=round(ycenter-w/2); 
        ymax=round(ycenter+w/2); 
        %以目标中心为中心画框形以框住目标  
        tagx=[xmin,xmax,xmax,xmin]; 
        tagy=[ymin,ymin,ymax,ymax]; 
        fill(x,y,'w'); 
         
        %将图像转化为帧,并加入到新avi文件中 
        I1=gray2rgb(I1); 
           I1=im2frame(I1); 
           aviobj=addframe(aviobj,I1); 
end 
           mov=aviread('aviobject.avi'); 
           movie(mov); 
      
执行后,出现“index exceeds matrix dimensions"! 在此多谢了!急!能给出详细的程序改正语句,更好!
		 
		
		
		
		
		
		
		
	 |