Changeset 604
- Timestamp:
- Apr 4, 2013, 10:54:25 PM (12 years ago)
- Location:
- trunk/src
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/civ_matlab.m
r596 r604 89 89 90 90 %set the values of all the global attributes in list_param 91 Data.ListGlobalAttribute=[Data.ListGlobalAttribute Civ1_param];92 91 for ilist=1:length(list_param) 93 92 Civ1_param{ilist}=['Civ1_' list_param{ilist}]; 94 93 Data.(['Civ1_' list_param{ilist}])=Param.Civ1.(list_param{ilist}); 95 94 end 95 Data.ListGlobalAttribute=[Data.ListGlobalAttribute Civ1_param]; 96 96 Data.CivStage=1; 97 97 … … 105 105 Data.VarAttribute{5}.Role='warnflag'; 106 106 107 if strcmp(Param.ListCompareMode, 'PIV volume')107 if isfield(Param,'ListCompareMode') && strcmp(Param.ListCompareMode, 'PIV volume') 108 108 Data.ListVarName=[Data.ListVarName 'Civ1_Z']; 109 109 Data.Civ1_X=[];Data.Civ1_Y=[];Data.Civ1_Z=[]; -
trunk/src/read_image.m
r497 r604 5 5 % OUTPUT: 6 6 % A(npy,npx,rgb): matrix of integers (iunt8 or uint16) representing the image, with sizes npy, npx, and possibly color component rgb=1:3 7 % ObjectOut: video object (=[] for images)7 % ObjectOut: video object (=[] for single images) 8 8 % 9 9 % INPUT: 10 10 % FileName: input file name 11 % other inputs needed only for video and multi-image file: 11 12 % FileType: input file type, as determined by the function get_file_type.m 12 13 % VideoObject: video object (for faster reading if availlable) … … 15 16 function [A,ObjectOut]=read_image(FileName,FileType,VideoObject,num) 16 17 %----------------------------------------------------------------------- 18 if ~exist(FileType,'var') 19 FileType='image'; 20 end 17 21 if ~exist('VideoObject','var') 18 22 VideoObject=[]; -
trunk/src/series.m
r603 r604 1460 1460 nbfield_j=numel(first_j:incr_j:last_j); 1461 1461 1462 %% record nbre of output files for status1462 %% record nbre of output files and starting time for computation for status 1463 1463 StatusData=get(handles.status,'UserData'); 1464 StatusData.NbCore=NbCore; 1465 StatusData.NbProcess=NbProcess; 1466 if isfield(StatusData,'OutputFileMode') 1467 switch StatusData.OutputFileMode 1468 case 'NbInput'%TODO:finish 1469 end 1470 end 1464 switch StatusData.OutputFileMode 1465 case 'NbInput' 1466 StatusData.NbOutputFile=numel(first_i,incr_i:last_i)*numel(first_j,incr_j:last_j); 1467 case 'NbInput_i' 1468 StatusData.NbOutputFile=numel(first_i,incr_i:last_i); 1469 case 'NbSlice' 1470 StatusData.NbOutputFile=str2num(get(handles.num_NbSlice,'String')); 1471 end 1472 StatusData.TimeStart=now; 1473 set(handles.status,'UserData',StatusData) 1471 1474 1472 1475 %% direct processing on the current Matlab session … … 1617 1620 case 'background' 1618 1621 for iprocess=1:NbProcess 1619 system( batch_file_list{iprocess})% directly execute the command file for each process1622 system([batch_file_list{iprocess} ' &'])% directly execute the command file for each process 1620 1623 end 1621 1624 case 'cluster_oar' % option 'oar-parexec' used … … 1935 1938 if isfield(Series.IndexRange,'first_i') 1936 1939 first_i=Series.IndexRange.first_i; 1940 incr_i=Series.IndexRange.incr_i; 1937 1941 last_i=Series.IndexRange.last_i; 1938 1942 end 1939 1943 if isfield(Series.IndexRange,'first_j') 1940 1944 first_j=Series.IndexRange.first_j; 1945 incr_j=Series.IndexRange.incr_j; 1941 1946 last_j=Series.IndexRange.last_j; 1942 1947 end … … 2044 2049 %% Expected nbre of output files 2045 2050 if isfield(ParamOut,'OutputFileMode') 2046 StatusData. NbOutputFile=ParamOut.OutputFileMode;2051 StatusData.OutputFileMode=ParamOut.OutputFileMode; 2047 2052 set(handles.status,'UserData',StatusData) 2048 2053 end … … 2443 2448 set(handles.status,'BackgroundColor',[1 1 0]) 2444 2449 drawnow 2445 StatusData.time_ref=get(handles.RUN,'UserData');% get the time of launch2450 %StatusData.time_ref=get(handles.RUN,'UserData');% get the time of launch 2446 2451 Param=read_GUI(handles.series); 2447 2452 RootPath=Param.InputTable{1,1}; … … 2454 2459 hfig=findobj(allchild(0),'name','series_status'); 2455 2460 if isempty(hfig) 2456 hfig=figure('DeleteFcn',@stop_status,'Position',[600 600 560 600]); 2461 ScreenSize=get(0,'ScreenSize'); 2462 hfig=figure('DeleteFcn',@stop_status,'Position',[ScreenSize(3)-600 ScreenSize(4)-640 560 600]); 2457 2463 set(hfig,'MenuBar','none')% suppress the menu bar 2458 2464 set(hfig,'NumberTitle','off')%suppress the fig number in the title … … 2464 2470 uicontrol('Style','pushbutton','Units','normalized', 'Position', [0.7 0.01 0.2 0.07],'String','Close','FontWeight','bold','FontUnits','points','FontSize',11,'Callback',@stop_status); 2465 2471 hrefresh=uicontrol('Style','pushbutton','Units','normalized', 'Position', [0.1 0.01 0.2 0.07],'String','Refresh','FontWeight','bold','FontUnits','points','FontSize',11,'Callback',@refresh_GUI); 2466 set(hrefresh,'UserData',StatusData)2472 %set(hrefresh,'UserData',StatusData) 2467 2473 BarPosition=[0.05 0.81 0.01 0.05]; 2468 2474 uicontrol('Style','frame','Units','normalized', 'Position',BarPosition ,'BackgroundColor',[1 0 0],'tag','waitbar'); … … 2484 2490 % launched by selecting a file on the list 2485 2491 function view_file(hObject, eventdata) 2492 %------------------------------------------------------------------------ 2486 2493 list=get(hObject,'String'); 2487 2494 index=get(hObject,'Value'); … … 2521 2528 2522 2529 2523 %------------------------------------------------------------------------2524 2525 2530 %------------------------------------------------------------------------ 2526 2531 % launched by refreshing the status figure … … 2530 2535 htitlebox=findobj(hfig,'tag','titlebox'); 2531 2536 hlist=findobj(hfig,'tag','list'); 2532 StatusData=get(hObject,'UserData'); 2537 hseries=findobj(allchild(0),'tag','series'); 2538 hstatus=findobj(hseries,'tag','status'); 2539 StatusData=get(hstatus,'UserData'); 2533 2540 OutputDir=get(htitlebox,'String'); 2534 2541 if ischar(OutputDir),OutputDir={OutputDir};end 2535 2542 ListFiles=dir(OutputDir{1}); 2543 if numel(ListFiles)<1 2544 return 2545 end 2546 ListFiles(1)=[];%removes the first line ='.' 2536 2547 ListDisplay=cell(numel(ListFiles),1); 2537 2548 testrecent=0; 2538 datnum=zeros(numel(ListDisplay) -1,1);2539 for ilist= 2:numel(ListDisplay)2540 ListDisplay{ilist -1}=ListFiles(ilist).name;2549 datnum=zeros(numel(ListDisplay),1); 2550 for ilist=1:numel(ListDisplay) 2551 ListDisplay{ilist}=ListFiles(ilist).name; 2541 2552 if ~ListFiles(ilist).isdir && isfield(ListFiles(ilist),'datenum') 2542 2553 datnum(ilist)=ListFiles(ilist).datenum;%only available in recent matlab versions … … 2547 2558 2548 2559 %% Look at date of creation 2560 ListDisplay=ListDisplay(datnum~=0); 2549 2561 datnum=datnum(datnum~=0);%keep the non zero values corresponding to existing files 2550 ListDisplay=ListDisplay(datnum~=0);2551 2562 if isempty(datnum) 2552 2563 if testrecent … … 2558 2569 [first,indfirst]=min(datnum); 2559 2570 [last,indlast]=max(datnum); 2560 message={[num2str(numel(datnum)) ' file(s) done over ?'] ;['oldest modification: ' ListDisplay{indfirst} ' : ' datestr(first)];... 2571 NbOutputFile_str='?'; 2572 NbOutputFile=[]; 2573 if isfield(StatusData,'NbOutputFile') 2574 NbOutputFile=StatusData.NbOutputFile; 2575 NbOutputFile_str=num2str(NbOutputFile); 2576 end 2577 message={[num2str(numel(datnum)) ' file(s) done over ' NbOutputFile_str] ;['oldest modification: ' ListDisplay{indfirst} ' : ' datestr(first)];... 2561 2578 ['latest modification: ' ListDisplay{indlast} ' : ' datestr(last)]}; 2562 2579 end 2563 titlebox=findobj(hfig,'tag','titlebox'); 2564 msg_old=get(titlebox,'String'); 2565 set(titlebox,'String', [msg_old(1);message]) 2580 set(htitlebox,'String', [OutputDir{1};message]) 2581 2582 %% update the waitbar 2566 2583 hwaitbar=findobj(hfig,'tag','waitbar'); 2584 if ~isempty(NbOutputFile) 2585 BarPosition=get(hwaitbar,'Position'); 2586 BarPosition(3)=0.9*numel(datnum)/NbOutputFile; 2587 set(hwaitbar,'Position',BarPosition) 2588 end 2567 2589 %TODO: adjust waitbar 2568 2590 … … 2641 2663 % set(hlist,'String',Tabchar) 2642 2664 % set(htitlebox,'String', message) 2643 % if count>0 %&& ~test_new 2644 % BarPosition(3)=0.9*count/nbfiles; 2645 % set(hwaitbar,'Position',BarPosition) 2646 % end 2665 % 2647 2666 %------------------------------------------------------------------------ 2648 2667 % launched by deleting the status figure … … 2672 2691 end 2673 2692 end 2674 currentdir=pwd; 2675 cd(get(handles.ActionPath,'String')) 2676 sh_file=dir([ActionName '.sh']); 2677 m_file=dir([ActionName '.m']); 2678 if isfield(m_file,'datenum') && m_file.datenum>sh_file.datenum 2693 sh_file_info=dir(fullfile(get(handles.ActionPath,'String'),[ActionName '.sh'])); 2694 m_file_info=dir(fullfile(get(handles.ActionPath,'String'),[ActionName '.m'])); 2695 if isfield(m_file_info,'datenum') && m_file_info.datenum>sh_file_info.datenum 2679 2696 set(handles.ActionExt,'BackgroundColor',[1 1 0]) 2680 2697 drawnow 2681 2698 answer=msgbox_uvmat('INPUT_Y-N',[ActionName '.sh needs to be updated: recompile now?']); 2682 2699 if strcmp(answer,'Yes') 2700 currentdir=pwd; 2701 cd(get(handles.ActionPath,'String')) 2683 2702 compile(ActionName) 2703 cd(currentdir) 2684 2704 end 2685 2705 set(handles.ActionExt,'BackgroundColor',[1 1 1]) 2686 2706 end 2687 cd(currentdir)2688 2707 end 2689 2708 -
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.