Changeset 494 for trunk/src/civ_matlab.m


Ignore:
Timestamp:
Jul 19, 2012, 11:50:39 AM (12 years ago)
Author:
sommeria
Message:

various bugs corrected after testing in Windows OS. Introduction
of filter tps

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/civ_matlab.m

    r493 r494  
    8888%% Civ1
    8989if isfield (Param,'Civ1')
    90     %     check_civ1=1;% test for further use of civ1 results
    91     % %% prepare images
    92 
    9390    par_civ1=Param.Civ1;
    94     if isfield(par_civ1,'reverse_pair')
     91    if isfield(par_civ1,'reverse_pair')% A REVOIR
    9592        if par_civ1.reverse_pair
    9693            if ischar(par_civ1.ImageB)
     
    103100        end
    104101    else
    105         if isfield(par_civ1,'ImageA')%&&...
    106             %    (ischar(par_civ1.ImageA)||strcmp(class(par_civ1.ImageA),'VideoReader')||strcmp(class(par_civ1.ImageA),'mmreader')) % case with no image: only the PIV grid is calculated           
     102        if isfield(Param.Civ1,'ImageA')%&&...   
    107103             Param.Civ1.ImageA=regexprep(Param.Civ1.ImageA,'''','\');
    108             [par_civ1.ImageA,ParamOut] = read_image(Param.Civ1.ImageA,par_civ1.FileTypeA,par_civ1.ImageA,par_civ1.FrameIndexA);
    109 %             if ~isempty(errormsg)
    110 %                 errormsg=['error in civ_matlab/read_field:' errormsg];
    111 %                 return
    112 %             end
    113             %par_civ1.ImageA=Field.A;%= image matrix A in the first input field
    114         end
    115         if isfield(par_civ1,'ImageB')%&& ...
    116               %  (ischar(par_civ1.ImageB)||strcmp(class(par_civ1.ImageB),'VideoReader')||strcmp(class(par_civ1.ImageB),'mmreader'))
     104            [par_civ1.ImageA,VideoObject] = read_image(Param.Civ1.ImageA,par_civ1.FileTypeA,[],par_civ1.FrameIndexA);
     105        end
     106        if isfield(Param.Civ1,'ImageB')%&& ...
    117107             Param.Civ1.ImageB=regexprep(Param.Civ1.ImageB,'''','\');
    118             [par_civ1.ImageB,ParamOut] = read_image(Param.Civ1.ImageB,par_civ1.FileTypeB,par_civ1.ImageB,par_civ1.FrameIndexB);
    119 %             if ~isempty(errormsg)
    120 %                 errormsg=['error in civ_matlab/read_field:' errormsg];
    121 %                 return
    122 %             end
    123            % par_civ1.ImageB=Field.A;%= image matrix A in the second input field
     108             if strcmp(Param.Civ1.ImageA,Param.Civ1.ImageB)% use the same movie object
     109                 [par_civ1.ImageB,VideoObject] = read_image(Param.Civ1.ImageB,par_civ1.FileTypeB,VideoObject,par_civ1.FrameIndexB);
     110             else
     111            [par_civ1.ImageB,VideoObject] = read_image(Param.Civ1.ImageB,par_civ1.FileTypeB,par_civ1.ImageB,par_civ1.FrameIndexB);
     112             end
    124113        end
    125114    end
     
    239228    [Data.Civ1_SubRange,Data.Civ1_NbSites,Data.Civ1_Coord_tps,Data.Civ1_U_tps,Data.Civ1_V_tps,tild,Ures, Vres,tild,FFres]=...
    240229        filter_tps([Data.Civ1_X(ind_good) Data.Civ1_Y(ind_good)],Data.Civ1_U(ind_good),Data.Civ1_V(ind_good),[],Data.Patch1_SubDomain,Data.Patch1_Rho,Data.Patch1_Threshold);
    241     fill=zeros(3,2,size(Data.Civ1_SubRange,3)); %matrix of zeros to complement the matrix Data.Civ1_Coord_tps (conveninent for file storage)
    242     Data.Civ1_Coord_tps=cat(1,Data.Civ1_Coord_tps,fill);
     230%     fill=zeros(3,2,size(Data.Civ1_SubRange,3)); %matrix of zeros to complement the matrix Data.Civ1_Coord_tps (conveninent for file storage)
     231%     Data.Civ1_Coord_tps=cat(1,Data.Civ1_Coord_tps,fill);
    243232    Data.Civ1_U_smooth(ind_good)=Ures;
    244233    Data.Civ1_V_smooth(ind_good)=Vres;
     
    250239if isfield (Param,'Civ2')
    251240    par_civ2=Param.Civ2;
    252     if ~isfield (Param,'Civ1') || ~strcmp(Param.Civ1.ImageA,par_civ2.ImageA)
    253         %read first image if not already done for civ1
    254         [Field,ParamOut,errormsg] = read_field(Param.Civ2.ImageA,par_civ2.FileTypeA,par_civ2.ImageA,par_civ2.FrameIndexA);
    255                     if ~isempty(errormsg)
    256                 errormsg=['error in civ_matlab/read_field:' errormsg];
    257                 return
    258             end
    259         par_civ2.ImageA=Field.A;
    260     else
    261         par_civ2.ImageA=par_civ1.ImageA;
    262     end
    263     if ~isfield (Param,'Civ1') || ~strcmp(Param.Civ1.ImageB,par_civ2.ImageB)
    264         %read first image if not already done for civ1
    265         [Field,ParamOut,errormsg] = read_field(Param.Civ2.ImageB,par_civ2.FileTypeB,par_civ2.ImageB,par_civ2.FrameIndexB);
    266          if ~isempty(errormsg)
    267                 errormsg=['error in civ_matlab/read_field:' errormsg];
    268                 return
    269             end
    270         par_civ2.ImageB=Field.A;
    271     else
    272         par_civ2.ImageB=par_civ1.ImageB;
     241    par_civ2.ImageA=[];
     242    par_civ2.ImageB=[];
     243    if isfield(Param.Civ2,'ImageA') && isfield(Param.Civ2,'ImageB')
     244        Param.Civ2.ImageA=regexprep(Param.Civ2.ImageA,'''','\');
     245        Param.Civ2.ImageB=regexprep(Param.Civ2.ImageB,'''','\');
     246        if isfield (Param,'Civ1')
     247            Param.Civ2.ImageA=regexprep(Param.Civ2.ImageA,'''','\');
     248            if strcmp(Param.Civ1.ImageA,Param.Civ2.ImageA)
     249                if isequal(Param.Civ1.FrameIndexA,Param.Civ2.FrameIndexA)
     250                    par_civ2.ImageA=par_civ1.ImageA;
     251                else % read another frame of the same movie object
     252                    par_civ2.ImageA = read_image(Param.Civ2.ImageA,Param.Civ2.FileTypeA,VideoObject,Param.Civ2.FrameIndexA);
     253                end
     254            end
     255            Param.Civ2.ImageB=regexprep(Param.Civ2.ImageB,'''','\');
     256            if strcmp(Param.Civ1.ImageB,Param.Civ2.ImageB)
     257                if isequal(Param.Civ1.FrameIndexB,Param.Civ2.FrameIndexB)
     258                    par_civ2.ImageB=par_civ1.ImageB;
     259                else % read another frame of the same movie object
     260                    par_civ2.ImageB = read_image(Param.Civ2.ImageB,Param.Civ2.FileTypeB,VideoObject,Param.Civ2.FrameIndexB);
     261                end
     262            end
     263        end
     264        if isempty(par_civ2.ImageA) && isfield(Param.Civ2,'ImageA')
     265            [par_civ2.ImageA,VideoObject] = read_image(Param.Civ2.ImageA,Param.Civ2.FileTypeA,[],Param.Civ2.FrameIndexA);
     266        end
     267        if isempty(par_civ2.ImageB)&& isfield(Param.Civ2,'ImageB')
     268            if strcmp(Param.Civ2.ImageA,Param.Civ2.ImageB)
     269                par_civ2.ImageB = read_image(Param.Civ2.ImageB,Param.Civ2.FileTypeB,VideoObject,Param.Civ2.FrameIndexB);
     270            else
     271                par_civ2.ImageB = read_image(Param.Civ2.ImageB,Param.Civ2.FileTypeB,[],Param.Civ2.FrameIndexB);
     272            end
     273        end
    273274    end
    274275    ibx2=ceil(par_civ2.CorrBoxSize(1)/2);
     
    423424    [Data.Civ2_SubRange,Data.Civ2_NbSites,Data.Civ2_Coord_tps,Data.Civ2_U_tps,Data.Civ2_V_tps,tild,Ures, Vres,tild,FFres]=...
    424425        filter_tps([Data.Civ2_X(ind_good) Data.Civ2_Y(ind_good)],Data.Civ2_U(ind_good),Data.Civ2_V(ind_good),[],Data.Patch2_SubDomain,Data.Patch2_Rho,Data.Patch2_Threshold);
    425     fill=zeros(3,2,size(Data.Civ2_SubRange,3)); %matrix of zeros to complement the matrix Data.Civ1_Coord_tps (conveninent for file storage)
    426     Data.Civ2_Coord_tps=cat(1,Data.Civ2_Coord_tps,fill);
     426%     fill=zeros(3,2,size(Data.Civ2_SubRange,3)); %matrix of zeros to complement the matrix Data.Civ1_Coord_tps (conveninent for file storage)
     427%     Data.Civ2_Coord_tps=cat(1,Data.Civ2_Coord_tps,fill);
    427428    Data.Civ2_U_smooth(ind_good)=Ures;
    428429    Data.Civ2_V_smooth(ind_good)=Vres;
     
    434435if exist('ncfile','var')
    435436    errormsg=struct2nc(ncfile,Data);
     437    if isempty(errormsg)
     438        disp([ncfile ' written'])
     439    else
     440        disp(errormsg)
     441    end
    436442end
    437443
Note: See TracChangeset for help on using the changeset viewer.