Changeset 1187 for trunk/src/uvmat.m


Ignore:
Timestamp:
Dec 3, 2025, 6:18:13 PM (4 days ago)
Author:
sommeria
Message:

mask accessory updated

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/uvmat.m

    r1184 r1187  
    12171217        shift_x=diff(Slice.SliceAngle(:,1));
    12181218        shift_y=diff(Slice.SliceAngle(:,2));
    1219         if min(shift_x)<max(shift_x)||min(shift_y)<max(shift_y)
     1219        if size(Slice.SliceAngle,1)>1 &&( min(shift_x)<max(shift_x)||min(shift_y)<max(shift_y))
    12201220            app.unequalintervalsCheckBox.Value=1;
    12211221        end
     
    30003000    end
    30013001    FileInfo=get_file_info(fileinput);
    3002     if isfield(FileInfo,'MaskFile')&& exist(FileInfo.MaskFile,'file')
    3003         filemask=FileInfo.MaskFile;
     3002    if isfield(FileInfo,'MaskFile')%&& exist(FileInfo.MaskFile,'file')
     3003        Mask.MaskFile=FileInfo.MaskFile;
     3004        if isfield(FileInfo,'MaskNbSlice')
     3005            Mask.MaskNbSlice=FileInfo.MaskNbSlice;
     3006        end
    30043007    else
    3005         %     MaskSubDir=regexprep(SubDir,'\..*','');%take the root part of SubDir, before the first dot '.'
    3006         %     MaskPath=fullfile(RootPath,[MaskSubDir '.mask']);
    3007         %    mdetect=0;
    3008         %     if exist(MaskPath,'dir')
    3009         %         ListStruct=dir(MaskPath);%look for a mask file
    3010         %         ListCells=struct2cell(ListStruct);% transform dir struct to a cell arrray
    3011         %         check_dir=cell2mat(ListCells(4,:));% =1 for directories, =0 for files
    3012         %         ListFiles=ListCells(1,:);%list of file and dri names
    3013         %         ListFiles=ListFiles(~check_dir);%list of file names (excluding dir)
    3014         %         if ~isempty(ListFiles)
    3015         %             for ifile=1:numel(ListFiles)
    3016         %                 [tild,tild,MaskExt]=fileparts(ListFiles{1});
    3017         %                 [tild,tild,MaskFile{ifile},i1_series,i2_series,j1_series,j2_series,MaskNomType,MaskFileInfo]=find_file_series(MaskPath,ListFiles{ifile},0);
    3018         %                 MaskFileType=MaskFileInfo.FileType;
    3019         %                 if strcmp(MaskFileType,'image') && isempty(i2_series) && isempty(j2_series)
    3020         %                     mdetect=1;
    3021         %                 end
    3022         %                 if ~strcmp(MaskFile{ifile},MaskFile{1})
    3023         %                     mdetect=0;% cancel detection test in case of multiple masks, use the brower for selection
    3024         %                     break
    3025         %                 end
    3026         %             end
    3027         %         end
    3028         %         RootPath=MaskPath;
    3029         %     end
    3030         filemask= uigetfile_uvmat('pick a mask image file:',RootPath,'image');
    3031     end
    3032     if ~isempty(filemask)
    3033         [MaskPath,FileName,FileExt]=fileparts(filemask);
    3034         Mask.File=filemask;
    3035         [~,~,~,i1_series,~,~,~,NomType]=find_file_series(MaskPath,[FileName FileExt]);
    3036         Mask.NbSlice=[];%default
    3037         Mask.VolumeScan=0;% TO UPDATE ***
    3038         if strcmp(NomType,'_1')
    3039             Mask.NbSlice=i1_series(1,2,end);
    3040             set(handles.num_NbSlice,'String',num2str(Mask.NbSlice))
    3041         elseif ~strcmp(NomType,'*')
    3042             msgbox_uvmat('ERROR','multilevel masks must be labeled with a single index as _1,_2,...');
    3043             return
    3044         end
    3045         %set(hObject,'UserData',filemask);%store for future use
    3046         set(handles.CheckMask,'UserData',Mask);
    3047         errormsg=update_mask(handles);
    3048         if ~isempty(errormsg)
    3049             msgbox_uvmat(['ERROR','error in displaying mask, ' errormsg]);
    3050         end
     3008        filemask= uigetfile_uvmat('pick a mask image file:',fileinput,'image');
     3009        if ~isempty(filemask)
     3010            [FilePath,FileName,FileExt]=fileparts(filemask);
     3011            [RootPath,SubDir,RootFile,i1_series,i2,j1,j2,NomType]=find_file_series(FilePath,[FileName FileExt]);
     3012            if strcmp(NomType,'_1')
     3013                Mask.MaskFile=fullfile(RootPath,SubDir,RootFile);
     3014                Mask.MaskExt=FileExt;
     3015                Mask.MaskNbSlice=i1_series(1,2,end);
     3016            elseif ~strcmp(NomType,'*')
     3017                msgbox_uvmat('ERROR','multilevel masks must be labeled with a single index as _1,_2,...');
     3018                set(handles.CheckMask,'Value',0)
     3019                return
     3020            end
     3021        end
     3022    end
     3023    %         i1=str2double(get(handles.num_i1,'String'));
     3024    %         filemask=FileInfo.MaskFile;
     3025    %         if isfield(FileInfo,'MaskNbSlice')
     3026    %         i1=str2double(get(handles.num_i1,'String'));
     3027    %         MaskIndex=mod(i1,FileInfo.MaskNbSlice)
     3028    %         filemask=[filemask '_' num2str(MaskIndex) FileInfo.MaskExt]
     3029    % %     else
     3030    % %         filemask= uigetfile_uvmat('pick a mask image file:',RootPath,'image');
     3031    %     end
     3032    %     if ~isempty(filemask)
     3033    %         [MaskPath,FileName,FileExt]=fileparts(filemask);
     3034    %         Mask.File=filemask;
     3035    %         [~,~,~,i1_series,~,~,~,NomType]=find_file_series(MaskPath,[FileName FileExt]);
     3036    %         Mask.NbSlice=[];%default
     3037    %         Mask.VolumeScan=0;% TO UPDATE ***
     3038    %         if strcmp(NomType,'_1')
     3039    %             Mask.NbSlice=i1_series(1,2,end);
     3040    %             set(handles.num_NbSlice,'String',num2str(Mask.NbSlice))
     3041    %         elseif ~strcmp(NomType,'*')
     3042    %             msgbox_uvmat('ERROR','multilevel masks must be labeled with a single index as _1,_2,...');
     3043    %             return
     3044    %         end
     3045    %set(hObject,'UserData',filemask);%store for future use
     3046    set(handles.CheckMask,'UserData',Mask);
     3047    errormsg=update_mask(handles);
     3048    if ~isempty(errormsg)
     3049        msgbox_uvmat(['ERROR','error in displaying mask, ' errormsg]);
    30513050    end
    30523051else % desactivate mask display
    30533052    MaskData=get(handles.CheckMask,'UserData');
    30543053    if isfield(MaskData,'maskhandle') && ishandle(MaskData.maskhandle)
    3055        % delete(MaskData.maskhandle)
    3056        set(MaskData.maskhandle,'Visible','off')
     3054        % delete(MaskData.maskhandle)
     3055        set(MaskData.maskhandle,'Visible','off')
    30573056    end
    30583057    set(handles.CheckMask,'UserData',[])
     
    30733072%% get the current mask name recorded in CheckMask/UserData, possibly indexed with file index
    30743073MaskInfo=get(handles.CheckMask,'UserData');
    3075 if isfield(MaskInfo,'File')
    3076     if isfield(MaskInfo,'NbSlice')&& ~isempty(MaskInfo.NbSlice)
     3074if isfield(MaskInfo,'MaskFile')
     3075    if isfield(MaskInfo,'MaskNbSlice')&& ~isempty(MaskInfo.MaskNbSlice)
    30773076        if isfield(MaskInfo,'VolumeScan') &&  MaskInfo.VolumeScan
    30783077            MaskIndex_i=str2double(get(handles.num_j1,'String'));
    30793078        else
    3080             MaskIndex_i=mod(str2double(get(handles.num_i1,'String'))-1,MaskInfo.NbSlice)+1;
    3081         end
    3082         MaskName=[MaskInfo.File '_' num2str(MaskIndex_i) '.png'];
     3079            MaskIndex_i=mod(str2double(get(handles.num_i1,'String'))-1,MaskInfo.MaskNbSlice)+1;
     3080        end
     3081        MaskName=[MaskInfo.MaskFile '_' num2str(MaskIndex_i) '.png'];
    30833082    else
    30843083        MaskIndex_i=1;
    3085         MaskName=MaskInfo.File;
     3084        MaskName=MaskInfo.MaskFile;
    30863085    end
    30873086   
    30883087    %% update mask image if the mask is new
    30893088    UvData=get(handles.uvmat,'UserData');
    3090     if ~ (isfield(UvData,'MaskName') && isequal(UvData.MaskName,MaskName))
     3089     TransformMenu=get(handles.TransformName,'String')
     3090      TransformName=  TransformMenu{get(handles.TransformName,'Value')};
     3091    if ~ (isfield(UvData,'MaskName') && strcmp(UvData.MaskName,MaskName)&& isfield(UvData,'TransformName')&& strcmp(UvData.TransformName,TransformName))%check if the mask is new
    30913092        UvData.MaskName=MaskName; %update the recorded name on UvData
     3093        UvData.TransformName=TransformName; %update the recorded name on UvData
    30923094        set(handles.uvmat,'UserData',UvData);
    30933095        if ~exist(MaskName,'file')
     
    42514253            break
    42524254        end
    4253         [ObjectData,errormsg]=proj_field(UvData.Field,UvData.ProjObject{iobj});% project field on the object
    4254         if ~isempty(errormsg)
    4255             errormsg=['projection on ' UvData.ProjObject{iobj}.Type ': ' errormsg ];
    4256             return
     4255        [ObjectData,warnmsg]=proj_field(UvData.Field,UvData.ProjObject{iobj});% project field on the object
     4256        if ~isempty(warnmsg)
     4257            msgbox_uvmat('WARNING',['projection on ' UvData.ProjObject{iobj}.Type ': ' warnmsg ]);
     4258            continue
    42574259        end
    42584260        if testnewseries
Note: See TracChangeset for help on using the changeset viewer.