Changeset 231 for trunk/src/civ.m


Ignore:
Timestamp:
Apr 5, 2011, 12:46:34 AM (13 years ago)
Author:
sommeria
Message:

interactive test for piv introduced various bug corrections

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/civ.m

    r230 r231  
    21192119            disp(cmd_str);
    21202120        else       %run PIVlab if selected
    2121             image1=imread(par_civ1.filename_ima_a);
    2122             image2=imread(par_civ1.filename_ima_b);     
    2123             stepx=str2num(par_civ1.dx);
    2124             stepy=str2num(par_civ1.dy);
    2125             ibx2=ceil(str2num(par_civ1.ibx)/2);
    2126             iby2=ceil(str2num(par_civ1.iby)/2);
    2127             isx2=ceil(str2num(par_civ1.isx)/2);
    2128             isy2=ceil(str2num(par_civ1.isy)/2);
    2129             shiftx=str2num(par_civ1.shiftx);
    2130             shifty=str2num(par_civ1.shifty);
    2131 %             ibx=2*ibx2-1;%ibx and iby odd, reduced by 1 if even
    2132 %             iby=2*iby2-1;
    2133             miniy=max(1+isy2-shifty,1+iby2);
    2134             minix=max(1+isx2-shiftx,1+ibx2);
    2135             maxiy=min(size(image1,1)-isy2-shifty,size(image1,1)-iby2);
    2136             maxix=min(size(image1,2)-isx2-shiftx,size(image1,2)-ibx2);
    2137 %             maxix=stepx*(floor(size(image1_roi,2)/stepx))-(2*ibx2-2)+ibx2;
    2138             [GridX,GridY]=meshgrid(miniy:stepy:maxiy,minix:stepx:maxix);
    2139             PointCoord(:,1)=reshape(GridX,[],1);
    2140             PointCoord(:,2)=reshape(GridY,[],1);
    2141                [xtable ytable utable vtable ctable typevector] = pivlab (image1,image2,ibx2,iby2,isx2,isy2,shiftx,shifty,PointCoord, 1, []);
    2142                Data.ListGlobalAttribute={'title','Time','Dt'};
    2143                Data.title='PIVlab';
    2144                Data.Time=str2double(par_civ1.T0);
    2145                Data.Dt=str2double(par_civ1.Dt);
    2146                Data.ListVarName={'X','Y','U','V','C','FF'};%  cell array containing the names of the fields to record
    2147                Data.VarDimName={'nbvec','nbvec','nbvec','nbvec','nbvec','nbvec'};
    2148                 Data.VarAttribute{1}.Role='coord_x';
    2149             Data.VarAttribute{2}.Role='coord_y';
    2150             Data.VarAttribute{3}.Role='vector_x';
    2151             Data.VarAttribute{4}.Role='vector_y';
    2152             Data.VarAttribute{5}.Role='errorflag';
    2153             Data.X=reshape(xtable,[],1);
    2154             Data.Y=reshape(ytable,[],1);
    2155             Data.U=reshape(utable,[],1);
    2156             Data.V=reshape(vtable,[],1);
    2157             Data.C=reshape(ctable,[],1);
    2158             Data.FF=reshape(~typevector,[],1);
     2121            Data=civ_uvmat(par_civ1);
     2122%             image1=imread(par_civ1.filename_ima_a);
     2123%             image2=imread(par_civ1.filename_ima_b);     
     2124%             stepx=str2num(par_civ1.dx);
     2125%             stepy=str2num(par_civ1.dy);
     2126%             ibx2=ceil(str2num(par_civ1.ibx)/2);
     2127%             iby2=ceil(str2num(par_civ1.iby)/2);
     2128%             isx2=ceil(str2num(par_civ1.isx)/2);
     2129%             isy2=ceil(str2num(par_civ1.isy)/2);
     2130%             shiftx=str2num(par_civ1.shiftx);
     2131%             shifty=str2num(par_civ1.shifty);
     2132% %             ibx=2*ibx2-1;%ibx and iby odd, reduced by 1 if even
     2133% %             iby=2*iby2-1;
     2134%             miniy=max(1+isy2-shifty,1+iby2);
     2135%             minix=max(1+isx2-shiftx,1+ibx2);
     2136%             maxiy=min(size(image1,1)-isy2-shifty,size(image1,1)-iby2);
     2137%             maxix=min(size(image1,2)-isx2-shiftx,size(image1,2)-ibx2);
     2138%             [GridX,GridY]=meshgrid(minix:stepx:maxix,miniy:stepy:maxiy);
     2139%             PointCoord(:,1)=reshape(GridX,[],1);
     2140%             PointCoord(:,2)=reshape(GridY,[],1);
     2141%             % caluclate velocity data (y and v in indices, reverse to y component)
     2142%             [xtable ytable utable vtable ctable typevector] = pivlab (image1,image2,ibx2,iby2,isx2,isy2,shiftx,shifty,PointCoord, 1, []);
     2143%                Data.ListGlobalAttribute={'title','Time','Dt'};
     2144%                Data.title='PIVlab';
     2145%                Data.Time=str2double(par_civ1.T0);
     2146%                Data.Dt=str2double(par_civ1.Dt);
     2147%                Data.ListVarName={'X','Y','U','V','C','FF'};%  cell array containing the names of the fields to record
     2148%                Data.VarDimName={'nbvec','nbvec','nbvec','nbvec','nbvec','nbvec'};
     2149%                 Data.VarAttribute{1}.Role='coord_x';
     2150%             Data.VarAttribute{2}.Role='coord_y';
     2151%             Data.VarAttribute{3}.Role='vector_x';
     2152%             Data.VarAttribute{4}.Role='vector_y';
     2153%             Data.VarAttribute{5}.Role='errorflag';
     2154%             Data.X=reshape(xtable,[],1);
     2155%             Data.Y=reshape(size(image1,1)-ytable+1,[],1);
     2156%             Data.U=reshape(utable,[],1);
     2157%             Data.V=reshape(-vtable,[],1);
     2158%             Data.C=reshape(ctable,[],1);
     2159%             Data.FF=reshape(~typevector,[],1);
    21592160            errormsg=struct2nc(filecell.nc.civ1{ifile,j},Data);
    21602161            if isempty(errormsg)
     
    42894290end
    42904291
    4291 
     4292%------------------------------------------------------------------------
     4293% --- civ using pivlab
     4294function Data=civ_uvmat(par_civ1)
     4295%------------------------------------------------------------------------
     4296image1=imread(par_civ1.filename_ima_a);
     4297image2=imread(par_civ1.filename_ima_b);
     4298stepx=str2num(par_civ1.dx);
     4299stepy=str2num(par_civ1.dy);
     4300ibx2=ceil(str2num(par_civ1.ibx)/2);
     4301iby2=ceil(str2num(par_civ1.iby)/2);
     4302isx2=ceil(str2num(par_civ1.isx)/2);
     4303isy2=ceil(str2num(par_civ1.isy)/2);
     4304shiftx=str2num(par_civ1.shiftx);
     4305shifty=str2num(par_civ1.shifty);
     4306miniy=max(1+isy2-shifty,1+iby2);
     4307minix=max(1+isx2-shiftx,1+ibx2);
     4308maxiy=min(size(image1,1)-isy2-shifty,size(image1,1)-iby2);
     4309maxix=min(size(image1,2)-isx2-shiftx,size(image1,2)-ibx2);
     4310[GridX,GridY]=meshgrid(minix:stepx:maxix,miniy:stepy:maxiy);
     4311PointCoord(:,1)=reshape(GridX,[],1);
     4312PointCoord(:,2)=reshape(GridY,[],1);
     4313
     4314% caluclate velocity data (y and v in indices, reverse to y component)
     4315[xtable ytable utable vtable ctable typevector] = pivlab (image1,image2,ibx2,iby2,isx2,isy2,shiftx,shifty,PointCoord, 1, []);
     4316Data.ListGlobalAttribute={'title','Time','Dt'};
     4317Data.title='PIVlab';
     4318Data.Time=str2double(par_civ1.T0);
     4319Data.Dt=str2double(par_civ1.Dt);
     4320Data.ListVarName={'X','Y','U','V','C','FF'};%  cell array containing the names of the fields to record
     4321Data.VarDimName={'nbvec','nbvec','nbvec','nbvec','nbvec','nbvec'};
     4322Data.VarAttribute{1}.Role='coord_x';
     4323Data.VarAttribute{2}.Role='coord_y';
     4324Data.VarAttribute{3}.Role='vector_x';
     4325Data.VarAttribute{4}.Role='vector_y';
     4326Data.VarAttribute{5}.Role='errorflag';
     4327Data.X=reshape(xtable,[],1);
     4328Data.Y=reshape(size(image1,1)-ytable+1,[],1);
     4329Data.U=reshape(utable,[],1);
     4330Data.V=reshape(-vtable,[],1);
     4331Data.C=reshape(ctable,[],1);
     4332Data.FF=reshape(~typevector,[],1);
    42924333
    42934334%------------------------------------------------------------------------
     
    46384679    Data.nx=[1 size(Data.A,2)];
    46394680    par_civ1=read_param_civ1(handles,filecell.ima1.civ1{1});
    4640    
    4641             stepx=str2num(par_civ1.dx);
    4642             stepy=str2num(par_civ1.dy);
    4643             ibx2=ceil(str2num(par_civ1.ibx)/2);
    4644             iby2=ceil(str2num(par_civ1.iby)/2);
    4645             isx2=ceil(str2num(par_civ1.isx)/2);
    4646             isy2=ceil(str2num(par_civ1.isy)/2);
    4647             shiftx=str2num(par_civ1.shiftx);
    4648             shifty=str2num(par_civ1.shifty);
    4649 %             ibx=2*ibx2-1;%ibx and iby odd, reduced by 1 if even
    4650 %             iby=2*iby2-1;
    4651             miniy=max(1+isy2-shifty,1+iby2);
    4652             minix=max(1+isx2-shiftx,1+ibx2);
    4653             maxiy=min(size(image1,1)-isy2-shifty,size(image1,1)-iby2);
    4654             maxix=min(size(image1,2)-isx2-shiftx,size(image1,2)-ibx2);
    4655 %             maxix=stepx*(floor(size(image1_roi,2)/stepx))-(2*ibx2-2)+ibx2;
    4656             [GridX,GridY]=meshgrid(miniy:stepy:maxiy,minix:stepx:maxix);
    4657             PointCoord(:,1)=reshape(GridX,[],1);
    4658             PointCoord(:,2)=reshape(GridY,[],1);
    4659     hh=view_field(Data);
    4660     set(0,'CurrentFigure',hh)
    4661     plot(PointCoord(:,2),PointCoord(:,1),'+')
    4662     ViewData=get(hh,'UserData');
     4681    par_civ1.filename_ima_a=filecell.ima1.civ1{1};
     4682    par_civ1.filename_ima_b=filecell.ima2.civ1{1};
     4683    par_civ1.T0=0;
     4684    par_civ1.Dt=1;
     4685    Data=civ_uvmat(par_civ1);
     4686%     stepx=str2num(par_civ1.dx);
     4687%     stepy=str2num(par_civ1.dy);
     4688%     ibx2=ceil(str2num(par_civ1.ibx)/2);
     4689%     iby2=ceil(str2num(par_civ1.iby)/2);
     4690%     isx2=ceil(str2num(par_civ1.isx)/2);
     4691%     isy2=ceil(str2num(par_civ1.isy)/2);
     4692%     shiftx=str2num(par_civ1.shiftx);
     4693%     shifty=str2num(par_civ1.shifty);
     4694% %             ibx=2*ibx2-1;%ibx and iby odd, reduced by 1 if even
     4695% %             iby=2*iby2-1;
     4696%     miniy=max(1+isy2-shifty,1+iby2)
     4697%     minix=max(1+isx2-shiftx,1+ibx2)
     4698%     maxiy=min(size(Data.A,1)-isy2-shifty,size(Data.A,1)-iby2)
     4699%     maxix=min(size(Data.A,2)-isx2-shiftx,size(Data.A,2)-ibx2)
     4700% %             maxix=stepx*(floor(size(image1_roi,2)/stepx))-(2*ibx2-2)+ibx2;
     4701%     [GridX,GridY]=meshgrid(minix:stepx:maxix,miniy:stepy:maxiy);
     4702%     PointCoord(:,1)=reshape(GridX,[],1);
     4703%     PointCoord(:,2)=reshape(GridY,[],1);
     4704    Data.ListVarName=[Data.ListVarName {'ny','nx','A'}];
     4705    Data.VarDimName=[Data.VarDimName {'ny','nx',{'ny','nx'}}];
     4706    Data.A=imread(filecell.ima1.civ1{1});
     4707    Data.ny=[size(Data.A,1) 1];
     4708    Data.nx=[1 size(Data.A,2)];
     4709    hview_field=view_field(Data);
     4710    set(0,'CurrentFigure',hview_field)
     4711    hhview_field=guihandles(hview_field);
     4712    set(hview_field,'CurrentAxes',hhview_field.axes3)
     4713    %hpoints=line(PointCoord(:,1),PointCoord(:,2),'Color','y','LineStyle','.','Marker','*','LineWidth',4,'Tag','grid_points');
     4714    ViewData=get(hview_field,'UserData');
     4715    ViewData.CivHandle=handles.civ;% indicate the handle of the civ GUI in view_field
    46634716    ViewData.axes3.B=imread(filecell.ima2.civ1{1});%store the second image in the UserData of the GUI view_field
     4717    ViewData.axes3.X=Data.X; %keep the set of points in memeory
     4718    ViewData.axes3.Y=Data.Y;
     4719    set(hview_field,'UserData',ViewData)
    46644720    corrfig=findobj(allchild(0),'tag','corrfig');% look for a current figure for image correlation display
    46654721    if isempty(corrfig)
     
    46694725        set(corrfig,'DeleteFcn',{@closeview_field})%
    46704726    end
    4671     set(hh,'UserData',ViewData)
    46724727else
    46734728    corrfig=findobj(allchild(0),'tag','corrfig');% look for a current figure for image correlation display
Note: See TracChangeset for help on using the changeset viewer.