Changeset 826
- Timestamp:
- Nov 23, 2014, 10:52:03 AM (10 years ago)
- Location:
- trunk/src/series
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/series/check_data_files.m
r810 r826 62 62 ParamOut.ProjObject='off';%can use projection object(option 'off'/'on', 63 63 ParamOut.Mask='off';%can use mask option (option 'off'/'on', 'off' by default) 64 ParamOut.OutputDirExt='';%set the output dir extension (blank=no output dir) 64 ParamOut.OutputSubDirMode='none'; %(options 'none'/'custom'/'auto'/'first'/'last','auto' by default) 65 % 'none' =no output files 65 66 return 66 67 end -
trunk/src/series/extract_rdvision.m
r824 r826 70 70 ParamOut.ProjObject='off';...%can use projection object(option 'off'/'on', 71 71 ParamOut.Mask='off';...%can use mask option (option 'off'/'on', 'off' by default) 72 ParamOut.OutputSubDir=Param.InputTable{1,3}; 73 ParamOut.OutputDirExt='';%set the output dir extension 74 if size(Param.InputTable,1)>1 75 msgbox_uvmat('WARNING', 'this function acts only on the first input file line') 76 end 72 ParamOut.OutputSubDirMode='custom'; %output folder given by the program, not by the GUI series 73 % detect the set of image folder 74 RootPath=Param.InputTable{1,1}; 75 ListStruct=dir(RootPath); 76 ListCells=struct2cell(ListStruct);% transform dir struct to a cell arrray 77 check_bad=strcmp('.',ListCells(1,:))|strcmp('..',ListCells(1,:));%detect the dir '.' to exclude it 78 check_dir=cell2mat(ListCells(4,:));% =1 for directories, =0 for files 79 ListDir=ListCells(1,find(check_dir & ~check_bad)); 80 InputTable=cell(numel(ListDir),5); 81 InputTable(:,2)=ListDir'; 82 for ilist=1:numel(ListDir) 83 InputTable{ilist,1}=RootPath; 84 ListStructSub=dir(fullfile(RootPath,ListDir{ilist})); 85 ListCellSub=struct2cell(ListStructSub);% transform dir struct to a cell arrray 86 detect_seq=regexp(ListCellSub(1,:),'.seq$'); 87 seq_index=find(~cellfun('isempty',detect_seq),1); 88 if isempty(seq_index) 89 msgbox_uvmat('ERROR',['not seq file in ' ListDir{ilist} ': please check the input folders']) 90 else 91 RootFile=regexprep(ListCellSub{1,seq_index},'.seq$',''); 92 InputTable{ilist,3}=RootFile; 93 end 94 InputTable{ilist,4}='*'; 95 InputTable{ilist,5}='.seq'; 96 end 97 hseries=findobj(allchild(0),'Tag','series');% find the parent GUI 'series' 98 hhseries=guidata(hseries); %handles of the elements in 'series' 99 set(hhseries.InputTable,'Data',InputTable) 100 ParamOut.ActionInput.LogPath=RootPath;% indicate the path for the output info: 0_LOG .... 77 101 return 78 102 end … … 91 115 92 116 %% root input file(s) and type 93 RootPath=Param.InputTable(:,1); 94 RootFile=Param.InputTable(:,3); 95 SubDir=Param.InputTable(:,2); 96 FileExt=Param.InputTable(:,5); 117 RootPath=Param.InputTable{1,1}; 118 if ~isempty(find(~strcmp(RootPath,Param.InputTable(:,1))))% if the Rootpath for each camera are not identical 119 disp_uvmat('ERROR','Rootpath for all cameras must be identical',checkrun) 120 return 121 end 97 122 98 123 % get the set of input file names (cell array filecell), and the lists of 99 124 % input file or frame indices i1_series,i2_series,j1_series,j2_series 100 125 [filecell,i1_series,i2_series,j1_series,j2_series]=get_file_series(Param); 101 filename=fullfile_uvmat(RootPath{1},SubDir{1},RootFile{1},FileExt{1},'*',1); 102 OutputDir=[Param.OutputSubDir Param.OutputDirExt];126 127 %OutputDir=[Param.OutputSubDir Param.OutputDirExt]; 103 128 104 129 % numbers of slices and file indices … … 108 133 109 134 %determine the file type on each line from the first input file 110 % if ~exist(filecell{1,1}','file') 111 % msgbox_uvmat('ERROR',['the first input file ' filecell{1,1} ' does not exist']) 112 % return 113 % end 135 114 136 FileInfo=get_file_info(filecell{1,1}); 115 if ~strcmp(FileInfo.FileType,'rdvision') 137 if strcmp(FileInfo.FileType,'rdvision') 138 if ~isequal(FileInfo.NumberOfFrames,nbfield) 139 msgbox_uvmat('ERROR',['the whole series of ' num2str(FileInfo.NumberOfFrames) ' images must be extracted at once']) 140 %rmfield(OutputDir) 141 return 142 end 143 %% interactive input of specific parameters (for RDvision system) 144 display('converting images from RDvision system...') 145 else 116 146 msgbox_uvmat('ERROR','the input is not from rdvision: a .seq or .sqb file must be opened') 117 147 return 118 148 end 119 if exist(fullfile(RootPath{1},OutputDir),'dir') 120 msgbox_uvmat('ERROR',['output folder ' OutputDir ' already exists, put data in a new folder Experiment']); 121 return 122 end 149 t=xmltree; 150 save(t,fullfile(RootPath,'Running.xml'))%create an xml file to indicate that processing takes place 123 151 124 152 %% calibration data and timing: read the ImaDoc files … … 128 156 NbSlice_calib={}; 129 157 130 SubDirBase=regexprep(SubDir{1},'\..*','');%take the root part of SubDir, before the first dot '.' 131 filexml=[fullfile(RootPath{1},RootFile{1}) '.xml'];%new convention: xml at the level of the image folder 132 if ~exist(filexml,'file') 133 disp_uvmat('ERROR',[filexml ' missing'],checkrun) 158 %SubDirBase=regexprep(SubDir{1},'\..*','');%take the root part of SubDir, before the first dot '.' 159 160 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 161 %%% loop on the cameras ( #iview) 162 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 163 for iview=1:size(Param.InputTable,1) 164 filexml=[fullfile(RootPath,Param.InputTable{iview,3}) '.xml'];%new convention: xml at the level of the image folder 165 if ~exist(filexml,'file') 166 disp_uvmat('ERROR',[filexml ' missing'],checkrun) 167 return 168 end 169 [XmlData,error]=imadoc2struct_special(filexml); 170 if isfield(XmlData,'Time') 171 itime=itime+1; 172 timecell{itime}=XmlData.Time; 173 end 174 if isfield(XmlData,'GeometryCalib') && isfield(XmlData.GeometryCalib,'SliceCoord') 175 NbSlice_calib{1}=size(XmlData.GeometryCalib.SliceCoord,1);%nbre of slices for Zindex in phys transform 176 if ~isequal(NbSlice_calib{1},NbSlice_calib{1}) 177 msgbox_uvmat('WARNING','inconsistent number of Z indices for the two field series'); 178 end 179 end 180 181 182 % correction to RDvision xml file 183 t=xmltree(filexml); 184 185 % correct Dtj and Dtk 186 NomTypeNew='_1_1';% new file nomencalture by default 187 ImageName='img_1_1.png';% first image name 188 if isfield(XmlData,'NbDtj') 189 uid_NbDtj=find(t,'ImaDoc/Camera/BurstTiming/NbDtj'); 190 uid_value=children(t,uid_NbDtj); 191 if ~isempty(uid_value) 192 t=set(t,uid_value(1),'value',num2str(XmlData.NbDtj)); 193 end 194 end 195 if isfield(XmlData,'NbDtk') 196 uid_NbDtk=find(t,'ImaDoc/Camera/BurstTiming/NbDtk'); 197 uid_value=children(t,uid_NbDtk); 198 if ~isempty(uid_value) 199 t=set(t,uid_value(1),'value',num2str(XmlData.NbDtk)); 200 end 201 end 202 if isempty(j1_series{1}) && isfield(XmlData,'NbDti') 203 uid_Dti=find(t,'ImaDoc/Camera/BurstTiming/Dti'); 204 t=add(t,uid_Dti,'chardata',num2str(XmlData.Dti)); 205 uid_NbDti=find(t,'ImaDoc/Camera/BurstTiming/NbDti'); 206 t=add(t,uid_NbDti,'chardata',num2str(XmlData.NbDti)); 207 uid_NbDtj=find(t,'ImaDoc/Camera/BurstTiming/NbDtj'); 208 uid_NbDtk=find(t,'ImaDoc/Camera/BurstTiming/NbDtk'); 209 t=delete(t,uid_NbDtj); 210 t=delete(t,uid_NbDtk); 211 uid_Dtj=find(t,'ImaDoc/Camera/BurstTiming/Dtj'); 212 uid_Dtk=find(t,'ImaDoc/Camera/BurstTiming/Dtk'); 213 t=delete(t,uid_Dtj); 214 t=delete(t,uid_Dtk); 215 NomTypeNew='_1'; 216 ImageName='img_1.png'; 217 end 218 219 %update information of 'Heading' 220 uid_Heading=find(t,'ImaDoc/Heading'); 221 if isempty(uid_Heading) 222 [t,uid_Heading]=add(t,1,'element','Heading'); 223 end 224 uid_SubCampaign=find(t,'ImaDoc/Heading/SubCampaign'); 225 if ~isempty(uid_SubCampaign), t=delete(t,uid_SubCampaign); end 226 uid_Experiment=find(t,'ImaDoc/Heading/Experiment'); 227 if ~isempty(uid_Experiment), t=delete(t,uid_Experiment); end 228 uid_Device=find(t,'ImaDoc/Heading/Device'); 229 if ~isempty(uid_Device), t=delete(t,uid_Device); end 230 uid_Record=find(t,'ImaDoc/Heading/Record'); 231 if ~isempty(uid_Record), t=delete(t,uid_Record); end 232 uid_DateExp=find(t,'ImaDoc/Heading/DateExp'); 233 if ~isempty(uid_DateExp), t=delete(t,uid_DateExp); end 234 235 %indicate the name of the first image (as a check that the xml file is not moved) 236 uid_ImageName=find(t,'ImaDoc/Heading/ImageName'); 237 if isempty(uid_ImageName) 238 [t,uid_ImageName]=add(t,uid_Heading,'element','ImageName'); 239 end 240 uid_value=children(t,uid_ImageName); 241 if isempty(uid_value) 242 t=add(t,uid_ImageName,'chardata',ImageName);%indicate name of the first image, with ;png extension 243 else 244 t=set(t,uid_value(1),'value',ImageName);%indicate name of the first image, with ;png extension 245 end 246 247 %indicate the date and time of the image acquisition start 248 % if isfield(FileInfo,'binrepertoire') && isfield(FileInfo,'starttime') 249 % sep_pos=regexp(FileInfo.binrepertoire,'T'); 250 % DateTime=FileInfo.starttime; 251 % if ~isempty(sep_pos) 252 % DateTime=[FileInfo.binrepertoire(1:sep_pos-1) ' ' DateTime]; 253 % end 254 % uid_DateTime=find(t,'ImaDoc/Heading/DateTime'); 255 % if isempty(uid_DateTime) 256 % [t,uid_DateTime]=add(t,uid_Heading,'element','DateTime'); 257 % end 258 % uid_value=children(t,uid_DateTime); 259 % if isempty(uid_value) 260 % t=add(t,uid_DateTime,'chardata',DateTime);%indicate name of the first image, with ;png extension 261 % else 262 % t=set(t,uid_value(1),'value',DateTime);%indicate name of the first image, with ;png extension 263 % end 264 % end 265 266 %% backup the previous xml file and save the corrected one 267 [success,message]=copyfile(filexml,[filexml '~']);%make backup 268 if success~=1 269 dips(['errror in xml file backup: ' message]); 270 return 271 end 272 save(t,filexml) 273 nbfield2=1; 274 if isfield(XmlData,'Time') 275 nbfield2=size(XmlData.Time,2); 276 end 277 278 %% get the names of .seq and .sqb files 279 switch Param.InputTable{iview,5} 280 case {'.seq','.sqb'} 281 filename_seq=fullfile(RootPath,Param.InputTable{iview,2},[Param.InputTable{iview,3} '.seq']); 282 filename_sqb=fullfile(RootPath,Param.InputTable{iview,2},[Param.InputTable{iview,3} '.sqb']); 283 otherwise 284 errormsg='input file extension must be .seq or .sqb'; 285 end 286 if ~exist(filename_seq,'file') 287 errormsg=[filename_seq ' does not exist']; 288 return 289 end 290 291 %% get data from .seq file 292 s=ini2struct(filename_seq); 293 SeqData=s.sequenceSettings; 294 SeqData.width=str2double(SeqData.width); 295 SeqData.height=str2double(SeqData.height); 296 SeqData.bytesperpixel=str2double(SeqData.bytesperpixel); 297 SeqData.nb_frames=str2double(s.sequenceSettings.numberoffiles); 298 if isempty(SeqData.binrepertoire)%used when binrepertoire empty, strange feature of rdvision 299 SeqData.binrepertoire=regexprep(s.sequenceSettings.bindirectory,'\\$','');%tranform Windows notation to Linux 300 SeqData.binrepertoire=regexprep(SeqData.binrepertoire,'\','/'); 301 [tild,binrepertoire,DirExt]=fileparts(SeqData.binrepertoire); 302 SeqData.binrepertoire=[SeqData.binrepertoire DirExt]; 303 end 304 % PathDir=fileparts(PathDir); 305 306 %% reading the .sqb file 307 m = memmapfile(filename_sqb,'Format', { 'uint32' [1 1] 'offset'; ... 308 'uint32' [1 1] 'garbage1';... 309 'double' [1 1] 'timestamp';... 310 'uint32' [1 1] 'file_idx';... 311 'uint32' [1 1] 'garbage2' },'Repeat',SeqData.nb_frames); 312 %%%%%%%BRICOLAGE in case of unreadable .sqb file 313 % ind=[60 63:152];%indices of bin files 314 % lengthimage=w*h*bpp;% lengthof an image record on the binary file 315 % for ii=1:32*numel(ind) 316 % data(ii).offset=mod(ii-1,32)*2*lengthimage+lengthimage;%Dalsa_2 317 % %data(ii).offset=mod(ii-1,32)*2*lengthimage;%Dalsa_1 318 % data(ii).file_idx=ind(ceil(ii/32)); 319 % data(ii).timestamp=0.2*(ii-1); 320 % end 321 %%%%%%% 322 for ii=1: numel(m.Data) 323 timestamp(ii)=m.Data(ii).timestamp; 324 end 325 timestamp %todo: check withDt from the xml file 326 [BinSize,errormsg]=binread_rdv_series(RootPath,SeqData,m.Data,nbfield2,NomTypeNew) 327 if ~isempty(errormsg) 328 disp_uvmat('ERROR',errormsg,checkrun) 329 return 330 end 331 end 332 delete(fullfile(RootPath,'Running.xml'))%delete the xml file to indicate that processing is finished 333 334 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 335 %--------- reads a series of bin files 336 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 337 function [BinSize,errormsg]=binread_rdv_series(PathDir,SeqData,SqbData,nbfield2,NomTypeNew) 338 % BINREAD_RDV Permet de lire les fichiers bin générés par Hiris à partir du 339 % fichier seq associé. 340 % [IMGS,TIMESTAMPS,NB_FRAMES] = BINREAD_RDV(FILENAME,FRAME_IDX) lit 341 % l'image d'indice FRAME_IDX de la séquence FILENAME. 342 % 343 % Entrées 344 % ------- 345 % FILENAME : Nom du fichier séquence (.seq). 346 % FRAME_IDX : Indice de l'image à lire. Si FRAME_IDX vaut -1 alors la 347 % séquence est entièrement lue. Si FRAME_IDX est un tableau d'indices 348 % alors toutes les images d'incides correspondant sont lues. Si FRAME_IDX 349 % est un tableau vide alors aucune image n'est lue mais le nombre 350 % d'images et tous les timestamps sont renvoyés. Les indices commencent à 351 % 1 et se termines à NB_FRAMES. 352 % 353 % Sorties 354 % ------- 355 % IMGS : Images de sortie. 356 % TIMESTAMPS : Timestaps des images lues. 357 % NB_FRAMES : Nombres d'images dans la séquence. 358 NbBinFile=0; 359 BinSize=0; 360 errormsg=''; 361 classname=sprintf('uint%d',SeqData.bytesperpixel*8); 362 363 classname=['*' classname]; 364 BitDepth=8*SeqData.bytesperpixel;%needed to write images (8 or 16 bits) 365 binrepertoire=fullfile(PathDir,SeqData.binrepertoire); 366 tic 367 OutputDir=fullfile(PathDir,SeqData.sequencename) 368 if exist(OutputDir,'dir') 369 errormsg=[OutpuDir ' already exist, delete it first']; 134 370 return 135 371 end 136 [XmlData,error]=imadoc2struct_special(filexml); 137 if isfield(XmlData,'Time') 138 itime=itime+1; 139 timecell{itime}=XmlData.Time; 140 end 141 if isfield(XmlData,'GeometryCalib') && isfield(XmlData.GeometryCalib,'SliceCoord') 142 NbSlice_calib{1}=size(XmlData.GeometryCalib.SliceCoord,1);%nbre of slices for Zindex in phys transform 143 if ~isequal(NbSlice_calib{1},NbSlice_calib{1}) 144 msgbox_uvmat('WARNING','inconsistent number of Z indices for the two field series'); 145 end 146 end 147 148 149 %% check coincidence in time for several input file series 150 % not relevant 151 152 %% coordinate transform or other user defined transform 153 %not relevant 154 %%%%%%%%%%%% END STANDARD PART %%%%%%%%%%%% 155 % EDIT FROM HERE 156 157 158 %% Set field names and velocity types 159 % not relevant here 160 161 %% Initiate output fields 162 % not relevant here 163 164 %% interactive input of specific parameters (for RDvision system) 165 display('RDvision system') 166 first_label=0; %image numbers start from 0 167 168 %% correction to RDvision xml file 169 t=xmltree(filexml); 170 171 % correct Dtj and Dtk 172 NomTypeNew='_1_1';% new file nomencalture by default 173 ImageName='img_1_1.png';% first image name 174 if isfield(XmlData,'NbDtj') 175 uid_NbDtj=find(t,'ImaDoc/Camera/BurstTiming/NbDtj'); 176 uid_value=children(t,uid_NbDtj); 177 if ~isempty(uid_value) 178 t=set(t,uid_value(1),'value',num2str(XmlData.NbDtj)); 179 end 180 end 181 if isfield(XmlData,'NbDtk') 182 uid_NbDtk=find(t,'ImaDoc/Camera/BurstTiming/NbDtk'); 183 uid_value=children(t,uid_NbDtk); 184 if ~isempty(uid_value) 185 t=set(t,uid_value(1),'value',num2str(XmlData.NbDtk)); 186 end 187 end 188 if isempty(j1_series{1}) && isfield(XmlData,'NbDti') 189 uid_Dti=find(t,'ImaDoc/Camera/BurstTiming/Dti'); 190 t=add(t,uid_Dti,'chardata',num2str(XmlData.Dti)); 191 uid_NbDti=find(t,'ImaDoc/Camera/BurstTiming/NbDti'); 192 t=add(t,uid_NbDti,'chardata',num2str(XmlData.NbDti)); 193 uid_NbDtj=find(t,'ImaDoc/Camera/BurstTiming/NbDtj'); 194 uid_NbDtk=find(t,'ImaDoc/Camera/BurstTiming/NbDtk'); 195 t=delete(t,uid_NbDtj); 196 t=delete(t,uid_NbDtk); 197 uid_Dtj=find(t,'ImaDoc/Camera/BurstTiming/Dtj'); 198 uid_Dtk=find(t,'ImaDoc/Camera/BurstTiming/Dtk'); 199 t=delete(t,uid_Dtj); 200 t=delete(t,uid_Dtk); 201 NomTypeNew='_1'; 202 ImageName='img_1.png'; 203 end 204 205 %update information of 'Heading' 206 uid_Heading=find(t,'ImaDoc/Heading'); 207 if isempty(uid_Heading) 208 [t,uid_Heading]=add(t,1,'element','Heading'); 209 end 210 uid_SubCampaign=find(t,'ImaDoc/Heading/SubCampaign'); 211 if ~isempty(uid_SubCampaign), t=delete(t,uid_SubCampaign); end 212 uid_Experiment=find(t,'ImaDoc/Heading/Experiment'); 213 if ~isempty(uid_Experiment), t=delete(t,uid_Experiment); end 214 uid_Device=find(t,'ImaDoc/Heading/Device'); 215 if ~isempty(uid_Device), t=delete(t,uid_Device); end 216 uid_Record=find(t,'ImaDoc/Heading/Record'); 217 if ~isempty(uid_Record), t=delete(t,uid_Record); end 218 uid_DateExp=find(t,'ImaDoc/Heading/DateExp'); 219 if ~isempty(uid_DateExp), t=delete(t,uid_DateExp); end 220 221 %indicate the name of the first image (as a check that the xml file is not moved) 222 uid_ImageName=find(t,'ImaDoc/Heading/ImageName'); 223 if isempty(uid_ImageName) 224 [t,uid_ImageName]=add(t,uid_Heading,'element','ImageName'); 225 end 226 uid_value=children(t,uid_ImageName); 227 if isempty(uid_value) 228 t=add(t,uid_ImageName,'chardata',ImageName);%indicate name of the first image, with ;png extension 229 else 230 t=set(t,uid_value(1),'value',ImageName);%indicate name of the first image, with ;png extension 231 end 232 233 %indicate the date and time of the image acquisition start 234 if isfield(FileInfo,'binrepertoire') && isfield(FileInfo,'starttime') 235 sep_pos=regexp(FileInfo.binrepertoire,'T'); 236 DateTime=FileInfo.starttime; 237 if ~isempty(sep_pos) 238 DateTime=[FileInfo.binrepertoire(1:sep_pos-1) ' ' DateTime]; 239 end 240 uid_DateTime=find(t,'ImaDoc/Heading/DateTime'); 241 if isempty(uid_DateTime) 242 [t,uid_DateTime]=add(t,uid_Heading,'element','DateTime'); 243 end 244 uid_value=children(t,uid_DateTime); 245 if isempty(uid_value) 246 t=add(t,uid_DateTime,'chardata',DateTime);%indicate name of the first image, with ;png extension 372 [s,errormsg]=mkdir(OutputDir); 373 if s==0 374 return%not able to create new image dir 375 end 376 for ii=1:SeqData.nb_frames 377 fname=fullfile(binrepertoire,sprintf('%s%.5d.bin',SeqData.binfile,SqbData(ii).file_idx)); 378 if ii==1 || ~strcmp(fname,fname_prev) % open the bin file if not in use 379 fid=fopen(fname,'rb'); 380 fseek(fid,SqbData(ii).offset,-1);%look at the right starting place in the bin file 381 NbBinFile=NbBinFile+1;%counter of binary files (for checking purpose) 382 BinSize(NbBinFile)=0;% strat counter for new bin file 247 383 else 248 t=set(t,uid_value(1),'value',DateTime);%indicate name of the first image, with ;png extension 249 end 250 end 251 252 %% backup the previous xml file and save the corrected one 253 [success,message]=copyfile(filexml,[filexml '~']);%make backup 254 if success~=1 255 dips(['errror in xml file backup: ' message]); 256 return 257 end 258 save(t,filexml) 259 260 %% main loop on images 261 nbfield2=1; 262 if isfield(XmlData,'Time') 263 nbfield2=size(XmlData.Time,2); 264 end 265 for ifile=1:nbfield 266 update_waitbar(WaitbarHandle,ifile/nbfield) 267 if ~isempty(RUNHandle) && ~strcmp(get(RUNHandle,'BusyAction'),'queue') 268 disp('program stopped by user') 269 break 270 end 271 [A,FileInfo,timestamps]=read_rdvision(filename,ifile); 272 if ifile==1 273 classA=class(A); 274 if strcmp(classA,'uint8') 275 BitDepth=8; 276 else 277 BitDepth=16; 278 end 279 end 384 fclose(fid);%close the previous bin file 385 fid=fopen(fname,'rb');% open the new bin file 386 fseek(fid,SqbData(ii).offset,-1);%look at the right starting place in the bin file 387 end 388 fname_prev=fname; 389 A=reshape(fread(fid,SeqData.width*SeqData.height,classname),SeqData.width,SeqData.height);%read the current image 390 A=A'; 391 BinSize(NbBinFile)=BinSize(NbBinFile)+SeqData.width*SeqData.height*SeqData.bytesperpixel*8; %record bits read 280 392 j1=[]; 281 393 if ~isequal(nbfield2,1) 282 j1=mod(ifile-1+first_label,nbfield2)+1;283 end 284 i1=floor((i file-1+first_label)/nbfield2)+1;285 OutputFile=fullfile_uvmat( RootPath{1},OutputDir,'img','.png',NomTypeNew,i1,[],j1);394 j1=mod(ii-1,nbfield2)+1; 395 end 396 i1=floor((ii-1)/nbfield2)+1; 397 OutputFile=fullfile_uvmat(PathDir,SeqData.sequencename,'img','.png',NomTypeNew,i1,[],j1);% TODO: set NomTypeNew from SeqData.mode 286 398 try 287 399 imwrite(A,OutputFile,'BitDepth',BitDepth) % case of 16 bit images 288 disp([OutputFile ' written']);400 disp([OutputFile ' written']); 289 401 [s,errormsg] = fileattrib(OutputFile,'-w','a'); %set images to read only '-w' for all users ('a') 290 402 if ~s 291 disp_uvmat('ERROR',errormsg,checkrun);403 % disp_uvmat('ERROR',errormsg,checkrun); 292 404 return 293 405 end 294 406 catch ME 295 disp_uvmat('ERROR',ME.message,checkrun);407 errormsg=ME.message; 296 408 return 297 409 end 298 299 end 410 end 411 fclose(fid) 412 toc 413 414 415 416 % for ifile=1:nbfield 417 % update_waitbar(WaitbarHandle,ifile/nbfield) 418 % if ~isempty(RUNHandle) && ~strcmp(get(RUNHandle,'BusyAction'),'queue') 419 % disp('program stopped by user') 420 % break 421 % end 422 % [A,FileInfo,timestamps]=read_rdvision(filename,ifile); 423 % if ifile==1 424 % classA=class(A); 425 % if strcmp(classA,'uint8') 426 % BitDepth=8; 427 % else 428 % BitDepth=16; 429 % end 430 % end 431 % j1=[]; 432 % if ~isequal(nbfield2,1) 433 % j1=mod(ifile-1+first_label,nbfield2)+1; 434 % end 435 % i1=floor((ifile-1+first_label)/nbfield2)+1; 436 % OutputFile=fullfile_uvmat(RootPath{1},OutputDir,'img','.png',NomTypeNew,i1,[],j1); 437 % try 438 % imwrite(A,OutputFile,'BitDepth',BitDepth) % case of 16 bit images 439 % disp([OutputFile ' written']); 440 % [s,errormsg] = fileattrib(OutputFile,'-w','a'); %set images to read only '-w' for all users ('a') 441 % if ~s 442 % disp_uvmat('ERROR',errormsg,checkrun); 443 % return 444 % end 445 % catch ME 446 % disp_uvmat('ERROR',ME.message,checkrun); 447 % return 448 % end 449 % 450 % end 300 451 301 452 %'imadoc2struct_special': reads the xml file for image documentation … … 611 762 end 612 763 end 764 765 766 767
Note: See TracChangeset
for help on using the changeset viewer.