Changeset 604 for trunk/src/series
- Timestamp:
- Apr 4, 2013, 10:54:25 PM (12 years ago)
- Location:
- trunk/src/series
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/series/civ_input.m
r603 r604 25 25 26 26 27 % Last Modified by GUIDE v2.5 04-Apr-2013 09:14:1427 % Last Modified by GUIDE v2.5 04-Apr-2013 22:08:23 28 28 % Begin initialization code - DO NOT EDIT 29 29 gui_Singleton = 1; … … 82 82 %% input file info 83 83 RootPath=Param.InputTable{1,1}; 84 set(handles.RootPath,'String',RootPath) 84 85 RootFile=Param.InputTable{1,3}; 85 86 SubDir=Param.InputTable{1,2}; … … 116 117 imageinput=''; 117 118 Data=nc2struct(FileInput,'ListGlobalAttribute','Civ2_ImageA','Civ1_ImageA','Civ2_ImageB','Civ1_ImageB'); 119 [PathCiv1_ImageA,Civ1_ImageA,FileExtA]=fileparts(Data.Civ1_ImageA); 120 [PathCiv1_ImageB,Civ1_ImageB,FileExtA]=fileparts(Data.Civ1_ImageB); 121 [PathCiv2_ImageA,Civ2_ImageA,FileExtA]=fileparts(Data.Civ2_ImageA); 122 [PathCiv2_ImageB,Civ2_ImageB,FileExtA]=fileparts(Data.Civ2_ImageB); 123 set(handles.Civ1_ImageA,'String',Civ1_ImageA) 124 set(handles.Civ1_ImageB,'String',Civ1_ImageB) 125 set(handles.Civ2_ImageA,'String',Civ2_ImageA) 126 set(handles.Civ2_ImageB,'String',Civ2_ImageB) 118 127 if isfield(Data,'Txt') 119 128 errormsg=Data.Txt; … … 121 130 %TODO: introduce the image in the input table of series 122 131 end 123 % if ~isempty(Data.Civ2_ImageB)%get the corresponding input image in the netcdf file 124 % imageinput=Data.Civ2_ImageB; 125 % [tild,ImaName,ImaExt]=fileparts(Data.Civ2_ImageA); 126 % set(handles.RootFile_1,'String',[ImaName ImaExt]) 127 % elseif ~isempty(Data.Civ1_ImageB) 128 % imageinput=Data.Civ1_ImageB; 129 % [tild,ImaName,ImaExt]=fileparts(Data.Civ1_ImageA); 130 % set(handles.RootFile_1,'String',[ImaName ImaExt]) 131 % end 132 % settings for civx data, 133 % look for the corresponding input images 134 check_letter=~isempty(regexp(NomTypeInput,'[ab|AB]$','once'));%detect pair label by letter 135 NomTypeIma=NomTypeInput; 136 if check_letter 137 NomTypeIma=NomTypeInput(1:end-1); 138 else 139 r=regexp(NomTypeIma,'.-(?<num2>\d+)$','names'); 140 if ~isempty(r) 141 NomTypeIma=regexprep(NomTypeIma,['-' r.num2],''); 142 end 143 r=regexp(NomTypeIma,'.-(?<num2>\d+)','names'); 144 if ~isempty(r) 145 NomTypeIma=regexprep(NomTypeIma,['-' r.num2],''); 146 end 147 end 148 % if ~exist(imageinput,'file') 149 % imageinput=fullfile_uvmat(RootPath,regexprep(SubDir,'.civ(_?)(\d*)$',''),RootFile,'.png',NomTypeIma,i1,[],j1); 150 % end 132 [RootPath,SubDir,RootFile,i1,i2,j1,j2,FileExt,NomTypeImaA]=fileparts_uvmat(Data.Civ1_ImageA); 133 [RootPath,SubDir,RootFile,i1,i2,j1,j2,FileExt,NomTypeImaB]=fileparts_uvmat(Data.Civ1_ImageB); 151 134 case 'civxdata'% case of civx data, 152 135 NomTypeNc=NomTypeInput; … … 407 390 408 391 %% determine nomenclature types and extension of the input files 409 % [RootPath,SubDir, RootFile,i1,i2,j1,j2,ExtInput,NomTypeInput]=fileparts_uvmat(fileinput);392 % [RootPath,SubDir,Civ2_ImageB,i1,i2,j1,j2,ExtInput,NomTypeInput]=fileparts_uvmat(fileinput); 410 393 % NomTypeNc='';%default 411 394 … … 416 399 % detect the file type, get the movie object if relevant, and look for the corresponding file series: 417 400 % the root name and indices may be corrected by including the first index i1 if a corresponding xml file exists 418 %[RootPath, ImageACiv1,RootFile,i1_series,tild,j1_series,tild,NomTypeIma,FileType,MovieObject]=find_file_series(FilePath,[FileName ImaExt]);401 %[RootPath,Civ1_ImageA,Civ2_ImageB,i1_series,tild,j1_series,tild,NomTypeIma,FileType,MovieObject]=find_file_series(FilePath,[FileName ImaExt]); 419 402 switch Param.FileType{1} 420 403 case {'image','multimage','video','mmreader'} … … 424 407 end 425 408 set(handles.RootPath,'String',RootPath) 426 set(handles. ImageACiv1,'String',SubDirImages)427 set(handles. RootFile,'String',RootFile)409 set(handles.Civ1_ImageA,'String',SubDirImages) 410 set(handles.Civ2_ImageB,'String',RootFile) 428 411 if strcmp(ExtInput,'.nc') 429 412 SubDirCiv=regexprep(SubDir,['^' SubDirImages],'');%suppress the root SuddirImages; … … 431 414 SubDirCiv= '.civ'; 432 415 end 433 set(handles. ImageBCiv1,'String',SubDirCiv)434 set(handles. ImageACiv2,'String',SubDirCiv)416 set(handles.Civ1_ImageB,'String',SubDirCiv) 417 set(handles.Civ2_ImageA,'String',SubDirCiv) 435 418 browse=get(handles.RootPath,'UserData'); 436 419 browse.incr_pair=[0 0];%default … … 511 494 %------------------------------------------------------------------------ 512 495 % --- Executes on carriage return on the subdir checkciv1 edit window 513 function ImageBCiv1_Callback(hObject, eventdata, handles)514 %------------------------------------------------------------------------ 515 SubDir=get(handles. ImageBCiv1,'String');496 function Civ1_ImageB_Callback(hObject, eventdata, handles) 497 %------------------------------------------------------------------------ 498 SubDir=get(handles.Civ1_ImageB,'String'); 516 499 menu_str=get(handles.ListSubdirCiv1,'String');% read the list of subdirectories for update 517 500 ichoice=find(strcmp(SubDir,menu_str),1); … … 523 506 set(handles.ListSubdirCiv1,'Value',ilist)% select the selected subdir in the menu 524 507 if get(handles.CheckCiv1,'Value')% if Civ1 is performed 525 set(handles. ImageACiv2,'String',SubDir);% set by default civ2 directory the same as civ1508 set(handles.Civ2_ImageA,'String',SubDir);% set by default civ2 directory the same as civ1 526 509 % set(handles.ListSubdirCiv2,'Value',ilist) 527 510 else % if Civ1 data already exist … … 534 517 %------------------------------------------------------------------------ 535 518 % --- Executes on carriage return on the SubDir checkciv1 edit window 536 function ImageACiv2_Callback(hObject, eventdata, handles)537 %------------------------------------------------------------------------ 538 SubDir=get(handles. ImageBCiv1,'String');519 function Civ2_ImageA_Callback(hObject, eventdata, handles) 520 %------------------------------------------------------------------------ 521 SubDir=get(handles.Civ1_ImageB,'String'); 539 522 menu_str=get(handles.ListSubdirCiv2,'String');% read the list of subdirectories for update 540 523 ichoice=find(strcmp(SubDir,menu_str),1); … … 609 592 % end 610 593 set(handles.PairIndices,'Visible','on') 611 set(handles. ImageBCiv1,'Visible','on')594 set(handles.Civ1_ImageB,'Visible','on') 612 595 set(handles.TitleSubdirCiv1,'Visible','on') 613 596 if opening==0 … … 620 603 set(handles.TitlePairCiv2,'Visible','on') 621 604 set(handles.TitleSubdirCiv2,'Visible','on') 622 set(handles. ImageACiv2,'Visible','on')605 set(handles.Civ2_ImageA,'Visible','on') 623 606 %set(handles.ListSubdirCiv2,'Visible','on') 624 607 set(handles.ListPairCiv2,'Visible','on') … … 631 614 else 632 615 set(handles.TitleSubdirCiv2,'Visible','off') 633 set(handles. ImageACiv2,'Visible','off')616 set(handles.Civ2_ImageA,'Visible','off') 634 617 set(handles.ListPairCiv2,'Visible','off') 635 618 end … … 1130 1113 1131 1114 %% reads .nc subdirectoy and image numbers from the interface 1132 SubDirImages=get(handles. ImageACiv1,'String');1133 subdir_civ1=[SubDirImages get(handles. ImageBCiv1,'String')];%subdirectory subdir_civ1 for the netcdf data1134 subdir_civ2=[SubDirImages get(handles. ImageACiv2,'String')];%subdirectory subdir_civ2 for the netcdf data1115 SubDirImages=get(handles.Civ1_ImageA,'String'); 1116 subdir_civ1=[SubDirImages get(handles.Civ1_ImageB,'String')];%subdirectory subdir_civ1 for the netcdf data 1117 subdir_civ2=[SubDirImages get(handles.Civ2_ImageA,'String')];%subdirectory subdir_civ2 for the netcdf data 1135 1118 ref_i=str2double(get(handles.ref_i,'String')); 1136 1119 ref_j=[]; … … 1166 1149 testpair=0; 1167 1150 RootPath=get(handles.RootPath,'String'); 1168 RootFile=get(handles. RootFile,'String');1151 RootFile=get(handles.Civ2_ImageB,'String'); 1169 1152 if index==1 % case civ1 1170 1153 if ~get(handles.CheckCiv1,'Value') % … … 1592 1575 nbslice=1; 1593 1576 1594 % subdir=get(handles. ImageBCiv1,'String');1577 % subdir=get(handles.Civ1_ImageB,'String'); 1595 1578 [Path,Name]=fileparts(filebase); 1596 1579 if ~isdir(Path) … … 1688 1671 % end 1689 1672 % end 1690 % set(handles. ImageBCiv1,'String',SubDir);1673 % set(handles.Civ1_ImageB,'String',SubDir); 1691 1674 % errormsg=find_netcpair_civ(handles,1); 1692 1675 % if ~isempty(errormsg) … … 1709 1692 % end 1710 1693 % end 1711 % set(handles. ImageACiv2,'String',SubDir);1694 % set(handles.Civ2_ImageA,'String',SubDir); 1712 1695 1713 1696 %------------------------------------------------------------------------ … … 2202 2185 2203 2186 2204 function NcFileCiv2_Callback(hObject, eventdata, handles)2205 % hObject handle to NcFileCiv2 (see GCBO)2206 % eventdata reserved - to be defined in a future version of MATLAB2207 % handles structure with handles and user data (see GUIDATA)2208 2209 % Hints: get(hObject,'String') returns contents of NcFileCiv2 as text2210 % str2double(get(hObject,'String')) returns contents of NcFileCiv2 as a double2211 2212 2213 % --- Executes during object creation, after setting all properties.2214 function NcFileCiv2_CreateFcn(hObject, eventdata, handles)2215 % hObject handle to NcFileCiv2 (see GCBO)2216 % eventdata reserved - to be defined in a future version of MATLAB2217 % handles empty - handles not created until after all CreateFcns called2218 2219 % Hint: edit controls usually have a white background on Windows.2220 % See ISPC and COMPUTER.2221 if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))2222 set(hObject,'BackgroundColor','white');2223 end2224 2225 2226 2227 function ImageACiv1_Callback(hObject, eventdata, handles)2228 % hObject handle to ImageACiv1 (see GCBO)2229 % eventdata reserved - to be defined in a future version of MATLAB2230 % handles structure with handles and user data (see GUIDATA)2231 2232 % Hints: get(hObject,'String') returns contents of ImageACiv1 as text2233 % str2double(get(hObject,'String')) returns contents of ImageACiv1 as a double -
trunk/src/series/civ_series.m
r601 r604 192 192 Civ1_param=list_param;%default 193 193 194 %set the values of all the global attributes in list_param 195 Data.ListGlobalAttribute=[Data.ListGlobalAttribute Civ1_param]; 194 %set the values of all the global attributes in list_param 196 195 for ilist=1:length(list_param) 197 196 Civ1_param{ilist}=['Civ1_' list_param{ilist}]; 198 197 Data.(['Civ1_' list_param{ilist}])=Param.ActionInput.Civ1.(list_param{ilist}); 199 198 end 199 Data.ListGlobalAttribute=[Data.ListGlobalAttribute Civ1_param]; 200 200 Data.CivStage=1; 201 201 -
trunk/src/series/ima_levels.m
r602 r604 4 4 % function GUI_input=ima_levels(Param) 5 5 % 6 %------------------------------------------------------------------------ 6 7 %%%%%%%%%%% GENERAL TO ALL SERIES ACTION FCTS %%%%%%%%%%%%%%%%%%%%%%%%%%% 7 8 % 8 % This function is used in four modes by the GUI series:9 % 1) config GUI: with no input argument, the function determine the suitable GUI configuration10 % 2) interactive input: the function is used to interactively introduce input parameters, and then stops11 % 3) RUN: the function itself runs, when an appropriate input structure Param has been introduced.12 % 4) BATCH: the function itself proceeds in BATCH mode, using an xml file 'Param' as input.13 %14 9 %OUTPUT 15 % GUI_input=list ofoptions in the GUI series.fig needed for the function10 % ParamOut: sets options in the GUI series.fig needed for the function 16 11 % 17 12 %INPUT: 18 13 % In run mode, the input parameters are given as a Matlab structure Param copied from the GUI series. 19 14 % In batch mode, Param is the name of the corresponding xml file containing the same information 20 % In the absence of input (as activated when the current Action is selected 21 % in series), the function ouput GUI_input set the activation of the needed GUI elements 22 % 23 % Param contains the elements:(use the menu bar command 'export/GUI config' in series to see the current structure Param) 15 % when Param.Action.RUN=0 (as activated when the current Action is selected 16 % in series), the function ouput paramOut set the activation of the needed GUI elements 17 % 18 % Param contains the elements:(use the menu bar command 'export/GUI config' in series to 19 % see the current structure Param) 24 20 % .InputTable: cell of input file names, (several lines for multiple input) 25 21 % each line decomposed as {RootPath,SubDir,Rootfile,NomType,Extension} 26 22 % .OutputSubDir: name of the subdirectory for data outputs 27 % .OutputDir : directory for data outputs, including path23 % .OutputDirExt: directory extension for data outputs 28 24 % .Action: .ActionName: name of the current activated function 29 25 % .ActionPath: path of the current activated function 26 % .ActionExt: fct extension ('.m', Matlab fct, '.sh', compiled Matlab fct 27 % .RUN =0 for GUI input, =1 for function activation 28 % .RunMode='local','background', 'cluster': type of function use 29 % 30 30 % .IndexRange: set the file or frame indices on which the action must be performed 31 31 % .FieldTransform: .TransformName: name of the selected transform function 32 32 % .TransformPath: path of the selected transform function 33 % .TransformHandle: corresponding function handle34 33 % .InputFields: sub structure describing the input fields withfields 35 % .FieldName: name of the field34 % .FieldName: name(s) of the field 36 35 % .VelType: velocity type 37 36 % .FieldName_1: name of the second field in case of two input series 38 37 % .VelType_1: velocity type of the second field in case of two input series 38 % .Coord_y: name of y coordinate variable 39 % .Coord_x: name of x coordinate variable 39 40 % .ProjObject: %sub structure describing a projection object (read from ancillary GUI set_object) 40 41 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% … … 44 45 %% set the input elements needed on the GUI series when the action is selected in the menu ActionName 45 46 if isstruct(Param) && isequal(Param.Action.RUN,0) 46 ParamOut.NbViewMax=1;% max nbre of input file series (default ='', no limitation)47 ParamOut.NbViewMax=1;% max nbre of input file series (default , no limitation) 47 48 ParamOut.AllowInputSort='off';% allow alphabetic sorting of the list of input file SubDir (options 'off'/'on', 'off' by default) 48 49 ParamOut.WholeIndexRange='off';% prescribes the file index ranges from min to max (options 'off'/'on', 'off' by default) … … 54 55 ParamOut.Mask='off';%can use mask option (option 'off'/'on', 'off' by default) 55 56 ParamOut.OutputDirExt='.lev';%set the output dir extension 56 ParamOut.OutputFileMode='NbInput';%NbInput= 1 output file per input file index, NbInput_i=1 fileper input file index i,NbSlice= 1 file per slice 57 ParamOut.OutputFileMode='NbInput';% ='=NbInput': 1 output file per input file index, '=NbInput_i': 1 file per input file index i, '=NbSlice': 1 file per slice 58 %check the type of the existence and type of the first input file: 59 Param.IndexRange.last_i=Param.IndexRange.first_i;%keep only the first index in the series 60 Param.IndexRange.last_j=Param.IndexRange.first_j; 61 filecell=get_file_series(Param); 62 if ~exist(filecell{1,1},'file') 63 msgbox_uvmat('WARNING','the first input file does not exist') 64 else 65 FileType=get_file_type(filecell{1,1}); 66 if isempty(find(strcmp(FileType,{'image','multimage','mmreader','video'})));% =1 for images 67 msgbox_uvmat('ERROR',['bad input file type for ' mfilename ': an image is needed']) 68 end 69 end 57 70 return 58 71 end … … 66 79 end 67 80 68 ParamOut=Param; %default output 69 if ~isfield(Param,'InputFields') 70 Param.InputFields.FieldName=''; 71 end 72 OutputSubDir=[Param.OutputSubDir Param.OutputDirExt];% subdirectory for output files 73 74 %% root input file(s) and type 81 %% root input file names and nomenclature type (cell arrays with one element) 75 82 RootPath=Param.InputTable(:,1); 76 83 RootFile=Param.InputTable(:,3); … … 78 85 NomType=Param.InputTable(:,4); 79 86 FileExt=Param.InputTable(:,5); 80 OutputSubDir=[Param.OutputSubDir Param.OutputDirExt];% subdirectory for output files 81 82 % get the set of input file names (cell array filecell), and the lists of 83 % input file or frame indices i1_series,i2_series,j1_series,j2_series 87 88 %% subdirectory for output files 89 SubdirOut=[Param.OutputSubDir Param.OutputDirExt]; 90 91 %% get the set of input file names (cell array filecell), and file indices 84 92 [filecell,i1_series,i2_series,j1_series,j2_series]=get_file_series(Param); 85 93 % filecell{iview,fileindex}: cell array representing the list of file names … … 88 96 % i1_series(iview,ref_j,ref_i)... are the corresponding arrays of indices i1,i2,j1,j2, depending on the input line iview and the two reference indices ref_i,ref_j 89 97 % i1_series(iview,fileindex) expresses the same indices as a 1D array in file indices 90 % set of frame indices used for movie or multimage input 91 % numbers of slices and file indices 92 93 NbSlice=1;%default 94 if isfield(Param.IndexRange,'NbSlice') 95 NbSlice=Param.IndexRange.NbSlice; 96 end 97 nbview=numel(i1_series);%number of input file series (lines in InputTable) 98 nbfield_j=size(i1_series{1},1); %nb of fields for the j index (bursts or volume slices) 98 nbfield_j=size(j1_series{1},1); %nb of fields for the j index (bursts or volume slices) 99 99 nbfield_i=size(i1_series{1},2); %nb of fields for the i index 100 100 nbfield=nbfield_j*nbfield_i; %total number of fields 101 nbfield_i=floor(nbfield/NbSlice);%total number of indexes in a slice (adjusted to an integer number of slices) 102 nbfield=nbfield_i*NbSlice; %total number of fields after adjustement 103 104 %determine the file type on each line from the first input file 105 ImageTypeOptions={'image','multimage','mmreader','video'};%allowed input file types(images) 106 107 [FileType{1},FileInfo{1},MovieObject{1}]=get_file_type(filecell{1,1}); 108 CheckImage{1}=~isempty(find(strcmp(FileType,ImageTypeOptions)));% =1 for images 101 [FileType{1},FileInfo{1},VideoObject{1}]=get_file_type(filecell{1,1});% type of input file 102 103 %% frame index for movie or multimage file input 109 104 if ~isempty(j1_series{1}) 110 105 frame_index{1}=j1_series{1}; … … 125 120 % EDIT FROM HERE 126 121 127 %% check the validity of input file types 128 if CheckImage{1} 129 FileExtOut='.png'; % write result as .png images for image inputs 130 if strcmp(lower(NomType{1}(end)),'a') 131 NomTypeOut=NomType{1}; 132 else 133 NomTypeOut='_1_1'; 134 end 135 else 136 msgbox_uvmat('ERROR',['invalid file type input: ' FileType{1} ' not an image']) 137 return 138 end 122 %% Extension and indexing nomenclature for output file 123 FileExtOut='.png'; % write result as .png images for image inputs 124 if strcmpi(NomType{1}(end),'a') 125 NomTypeOut=NomType{1}; 126 else 127 NomTypeOut='_1_1'; 128 end 139 129 140 130 %% Set field names and velocity types … … 153 143 j1=[];%default 154 144 for ifile=1:nbfield 155 if checkrun 156 stopstate=get(Param.RUNHandle,'BusyAction'); 157 update_waitbar(Param.WaitbarHandle,ifile/nbfield) 158 else 159 stopstate='queue'; 160 end 161 if isequal(stopstate,'queue') % enable STOP command 162 if ~isempty(j1_series)&&~isequal(j1_series,{[]}) 163 j1=j1_series{1}(ifile); 164 end 165 filename=fullfile_uvmat(RootPath{1},SubDir{1},RootFile{1},FileExt{1},NomType{1},i1_series{1}(ifile),[],j1); 166 A=read_image(filename,FileType{1},MovieObject{1},frame_index{1}(ifile)); 167 if ndims(A)==3;%color images 168 A=sum(double(Aread),3);% take the sum of color components 169 end 170 % operation on images 171 A=levels(A); 172 filename_new=fullfile_uvmat(RootPath{1},OutputSubDir,RootFile{1},FileExtOut,NomTypeOut,i1_series{1}(ifile),[],j1); 173 imwrite(A,filename_new) 174 display([filename_new ' written']) 175 end 145 if checkrun 146 stopstate=get(Param.RUNHandle,'BusyAction'); 147 update_waitbar(Param.WaitbarHandle,ifile/nbfield) 148 else 149 stopstate='queue'; 150 end 151 if ~isequal(stopstate,'queue') % enable STOP command 152 break 153 end 154 if ~isempty(j1_series)&&~isequal(j1_series,{[]}) 155 j1=j1_series{1}(ifile); 156 end 157 filename=fullfile_uvmat(RootPath{1},SubDir{1},RootFile{1},FileExt{1},NomType{1},i1_series{1}(ifile),[],j1); 158 A=read_image(filename,FileType{1},VideoObject{1},frame_index{1}(ifile)); 159 if ndims(A)==3;%color images 160 A=sum(double(Aread),3);% take the sum of color components 161 end 162 % operation on images 163 A=levels(A); 164 % write output file 165 filename_new=fullfile_uvmat(RootPath{1},SubdirOut,RootFile{1},FileExtOut,NomTypeOut,i1_series{1}(ifile),[],j1); 166 imwrite(A,filename_new) 167 display([filename_new ' written']) 176 168 end 177 169 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Note: See TracChangeset
for help on using the changeset viewer.