- Timestamp:
- Mar 4, 2013, 8:13:53 AM (12 years ago)
- Location:
- trunk/src
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/browse_data.m
r571 r576 93 93 end 94 94 scan_campaign(handles,Campaign) 95 % SourceDir_Callback([],[], handles)96 set(handles.edit_xml,'Visible','off')97 set(handles.HELP,'Visible','off')98 95 set(handles.OK,'Visible','on') 99 96 set(handles.Cancel,'Visible','on') -
trunk/src/civ.m
r575 r576 3326 3326 %------------------------------------------------------------------------ 3327 3327 % --- function called to look for grid files 3328 function [nbslice, flag_ mask]=get_grid(filebase,handles)3329 %------------------------------------------------------------------------ 3330 flag_ mask=0;%default3328 function [nbslice, flag_grid]=get_grid(filebase,handles) 3329 %------------------------------------------------------------------------ 3330 flag_grid=0;%default 3331 3331 nbslice=1; 3332 3332 [Path,Name]=fileparts(filebase); 3333 3333 currentdir=pwd; 3334 3334 cd(Path);%move in the dir of the root name filebase 3335 maskfiles=dir([Name '_*grid_*.grid']);%look for maskfiles3335 gridfiles=dir([Name '_*grid_*.grid']);%look for grid files 3336 3336 cd(currentdir);%come back to the current working directory 3337 if ~isempty( maskfiles)3338 flag_ mask=1;3339 maskname=maskfiles(1).name;% take the first maskfile in the list3340 [Path2,Name,ext]=fileparts( maskname);3337 if ~isempty(gridfiles) 3338 flag_grid=1; 3339 gridname=gridfiles(1).name;% take the first grid file in the list 3340 [Path2,Name,ext]=fileparts(gridname); 3341 3341 Namedouble=double(Name); 3342 3342 val=(48>Namedouble)|(Namedouble>57);% select the non-numerical characters 3343 ind_ mask=findstr('grid',Name);3344 i=ind_ mask-1;3343 ind_grid=findstr('grid',Name); 3344 i=ind_grid-1; 3345 3345 while val(i)==0 && i>0 3346 3346 i=i-1; 3347 3347 end 3348 nbslice=str2double(Name(i+1:ind_ mask-1));3348 nbslice=str2double(Name(i+1:ind_grid-1)); 3349 3349 if ~isnan(nbslice) && Name(i)=='_' 3350 flag_ mask=1;3350 flag_grid=1; 3351 3351 else 3352 3352 msgbox_uvmat('ERROR',['bad grid file ' Name ext ' found in ' Path2]) … … 3415 3415 %------------------------------------------------------------------------ 3416 3416 value=get(hObject,'Value'); 3417 hparent=get(hObject,'parent'); 3417 hparent=get(hObject,'parent');%handles of the parent panel 3418 3418 hchildren=get(hparent,'children'); 3419 handle_txtbox=findobj(hchildren,'tag',' txt_Grid');3419 handle_txtbox=findobj(hchildren,'tag','Grid');% look for the grid name box in the same panel 3420 3420 handle_dx=findobj(hchildren,'tag','num_Dx'); 3421 3421 handle_dy=findobj(hchildren,'tag','num_Dy'); … … 3435 3435 filebase=filegrid; 3436 3436 end 3437 [FileName, PathName , filterindex] = uigetfile( ...3437 [FileName, PathName] = uigetfile( ... 3438 3438 {'*.grid', ' (*.grid)'; 3439 3439 '*.grid', '.grid files '; ... … … 3468 3468 hchildren=get(handles.Civ2,'children'); 3469 3469 handle_checkbox=findobj(hchildren,'tag','CheckGrid'); 3470 handle_txtbox=findobj(hchildren,'tag',' txt_Grid');3470 handle_txtbox=findobj(hchildren,'tag','Grid'); 3471 3471 handle_dx=findobj(hchildren,'tag','num_Dx'); 3472 3472 handle_dy=findobj(hchildren,'tag','num_Dy'); … … 3482 3482 set(handle_txtbox,'Visible','on') 3483 3483 set(handle_txtbox,'String',filegrid) 3484 % else3485 % set(handle_checkbox,'Value',0);3486 % set(handles.CheckGrid,'Value',0);3487 % set(handle_dx,'Visible','on');3488 % set(handle_dy,'Visible','on');3489 % set(handle_title_dx,'Visible','on');3490 % set(handle_title_dy,'Visible','on');3491 % set(handle_txtbox,'Visible','off')3492 3484 end 3493 3485 end … … 3532 3524 set(handles.CheckMask,'Value',1) 3533 3525 end 3534 % switch parent_tag3535 % % case 'Fix1'3536 % % stage=2;3537 % case 'Civ2'3538 % stage=3;3539 % % case 'Fix2'3540 % % stage=4;3541 % end3542 % set(handles.Mask(stage:end),'Visible','on')3543 % set(handles.Mask(stage:end),'String',filemask)3544 % set(handles.CheckMask(stage:end),'Value',1)3545 3526 else 3546 3527 set(hObject,'Value',0); … … 3548 3529 end 3549 3530 3550 3531 %------------------------------------------------------------------------ 3551 3532 % --- Executes on button press in get_gridpatch1. 3552 3533 function get_gridpatch1_Callback(hObject, eventdata, handles) 3534 %------------------------------------------------------------------------ 3553 3535 filebase=get(handles.RootPath,'String'); 3554 3536 [FileName, PathName, filterindex] = uigetfile( ... -
trunk/src/civ_matlab.m
r575 r576 51 51 check_civ1=0;%default 52 52 check_patch1=0;%default 53 % ImageFileA=Param.Civ1.ImageA; 54 % ImageFileB=Param.Civ1.ImageB; 55 % if isfield(Param,'Civ2') 56 % ImageFileA_civ2=Param.Civ2.ImageA; 57 % ImageFileB_civ2=Param.Civ2.ImageB; 58 % end 53 59 54 % case of input Param set by an xml file (batch mode) 60 55 if ischar(Param) 61 56 Param=xml2struct(Param); %if Param is the name of an xml file, read this file as a Matlab structure 62 % if isfield(Param,'Civ1')63 % if strcmp(Param.Civ1.FileTypeA,'video')64 % Param.Civ1.ImageA=VideoReader(regexprep(Param.Civ1.ImageA,'''','\'));% remove spurious ' appearing in Windows;65 % elseif strcmp(Param.Civ1.FileTypeA,'mmreader')66 % Param.Civ1.ImageA=mmreader(regexprep(Param.Civ1.ImageA,'''','\'));% remove spurious ' appearing in Windows67 % end68 % if strcmp(Param.Civ1.FileTypeB,'video')69 % Param.Civ1.ImageB=VideoReader(regexprep(Param.Civ1.ImageB,'''','\'));% remove spurious ' appearing in Windows70 % elseif strcmp(Param.Civ1.FileTypeB,'mmreader')71 % Param.Civ1.ImageB=mmreader(regexprep(Param.Civ1.ImageB,'''','\'));% remove spurious ' appearing in Windows72 % end73 % end74 % if isfield(Param,'Civ2')75 % if strcmp(Param.Civ2.FileTypeA,'video')76 % Param.Civ2.ImageA=VideoReader(regexprep(Param.Civ2.ImageA,'''','\'));% remove spurious ' appearing in Windows;77 % elseif strcmp(Param.Civ2.FileTypeA,'mmreader')78 % Param.Civ2.ImageA=mmreader(regexprep(Param.Civ2.ImageA,'''','\'));% remove spurious ' appearing in Windows79 % if strcmp(Param.Civ2.FileTypeB,'video')80 % Param.Civ2.ImageB=VideoReader(regexprep(Param.Civ2.ImageB,'''','\'));% remove spurious ' appearing in Windows81 % elseif strcmp(Param.Civ2.FileTypeB,'mmreader')82 % Param.Civ2.ImageB=mmreader(regexprep(Param.Civ2.ImageB,'''','\'));% remove spurious ' appearing in Windows83 % end;84 % end85 % end86 57 end 87 58 … … 116 87 % caluclate velocity data (y and v in indices, reverse to y component) 117 88 [xtable ytable utable vtable ctable F result_conv errormsg] = civ (par_civ1); 118 119 % to try the reverse_pair method, uncomment below120 % [xtable1 ytable1 utable1 vtable1 ctable1 F1 result_conv1 errormsg1] = civ (Param.Civ1);121 % Param.Civ1.reverse_pair=1;122 % [xtable2 ytable2 utable2 vtable2 ctable2 F2 result_conv2 errormsg2] = civ (Param.Civ1);123 % xtable=[xtable1; xtable2];124 % ytable=[ytable1; ytable2];125 % utable=[utable1; -utable2];126 % vtable=[vtable1; -vtable2];127 % ctable=[ctable1; ctable2];128 % F=[F1; F2];129 % result_conv=[result_conv1; result_conv2];130 % errormsg=[errormsg1; errormsg2];131 89 if ~isempty(errormsg) 132 90 return … … 271 229 end 272 230 end 273 ibx2=ceil(par_civ2.CorrBoxSize(1)/2); 274 iby2=ceil(par_civ2.CorrBoxSize(2)/2); 275 isx2=ibx2+4;% search ara +-4 pixels around the guess 276 isy2=iby2+4; 277 % shift from par_civ2.filename_nc1 278 % shiftx=velocity interpolated at position 279 miniy=max(1+isy2,1+iby2); 280 minix=max(1+isx2,1+ibx2); 281 maxiy=min(size(par_civ2.ImageA,1)-isy2,size(par_civ2.ImageA,1)-iby2); 282 maxix=min(size(par_civ2.ImageA,2)-isx2,size(par_civ2.ImageA,2)-ibx2); 283 [GridX,GridY]=meshgrid(minix:par_civ2.Dx:maxix,miniy:par_civ2.Dy:maxiy); 284 GridX=reshape(GridX,[],1); 285 GridY=reshape(GridY,[],1); 286 Shiftx=zeros(size(GridX));% shift expected from civ1 data 287 Shifty=zeros(size(GridX)); 288 nbval=zeros(size(GridX)); 231 % ibx2=ceil(par_civ2.CorrBoxSize(1)/2); 232 % iby2=ceil(par_civ2.CorrBoxSize(2)/2); 233 % isx2=ibx2+4;% search ara +-4 pixels around the guess 234 % isy2=iby2+4; 235 % % shift from par_civ2.filename_nc1 236 % % shiftx=velocity interpolated at position 237 % miniy=max(1+isy2,1+iby2); 238 % minix=max(1+isx2,1+ibx2); 239 % maxiy=min(size(par_civ2.ImageA,1)-isy2,size(par_civ2.ImageA,1)-iby2); 240 % maxix=min(size(par_civ2.ImageA,2)-isx2,size(par_civ2.ImageA,2)-ibx2); 241 % [GridX,GridY]=meshgrid(minix:par_civ2.Dx:maxix,miniy:par_civ2.Dy:maxiy); 242 % GridX=reshape(GridX,[],1); 243 % GridY=reshape(GridY,[],1); 244 if isfield(par_civ2,'Grid')% grid points set as input file 245 if ischar(par_civ2.Grid)%read the grid file if the input is a file name 246 par_civ2.Grid=dlmread(par_civ2.Grid); 247 par_civ2.Grid(1,:)=[];%the first line must be removed (heading in the grid file) 248 end 249 else% automatic grid 250 minix=floor(par_civ2.Dx/2)-0.5; 251 maxix=minix+par_civ2.Dx*floor((par_civ2.ImageWidth-1)/par_civ2.Dx); 252 miniy=floor(par_civ2.Dy/2)-0.5; 253 maxiy=minix+par_civ2.Dy*floor((par_civ2.ImageHeight-1)/par_civ2.Dy); 254 [GridX,GridY]=meshgrid(minix:par_civ2.Dx:maxix,miniy:par_civ2.Dy:maxiy); 255 par_civ2.Grid(:,1)=reshape(GridX,[],1); 256 par_civ2.Grid(:,2)=reshape(GridY,[],1); 257 end 258 Shiftx=zeros(size(par_civ2.Grid,1));% shift expected from civ1 data 259 Shifty=zeros(size(par_civ2.Grid,1)); 260 nbval=zeros(size(par_civ2.Grid,1)); 289 261 if par_civ2.CheckDeformation 290 DUDX=zeros(size( GridX));291 DUDY=zeros(size( GridX));292 DVDX=zeros(size( GridX));293 DVDY=zeros(size( GridX));262 DUDX=zeros(size(par_civ2.Grid,1)); 263 DUDY=zeros(size(par_civ2.Grid,1)); 264 DVDX=zeros(size(par_civ2.Grid,1)); 265 DVDY=zeros(size(par_civ2.Grid,1)); 294 266 end 295 267 NbSubDomain=size(Data.Civ1_SubRange,3); … … 316 288 mask=imread(par_civ2.Mask); 317 289 end 318 par_civ2.SearchBoxSize(1)=2*isx2+1; 319 par_civ2.SearchBoxSize(2)=2*isy2+1; 290 ibx2=ceil(par_civ2.CorrBoxSize(1)/2); 291 iby2=ceil(par_civ2.CorrBoxSize(2)/2); 292 % isx2=ibx2+4;% search ara +-4 pixels around the guess 293 % isy2=iby2+4; 294 par_civ2.SearchBoxSize(1)=2*ibx2+9;% search ara +-4 pixels around the guess 295 par_civ2.SearchBoxSize(2)=2*iby2+9; 296 %par_civ2.SearchBoxSize(1)=2*isx2+1; 297 %par_civ2.SearchBoxSize(2)=2*isy2+1; 320 298 par_civ2.SearchBoxShift=[Shiftx(nbval>=1)./nbval(nbval>=1) Shifty(nbval>=1)./nbval(nbval>=1)]; 321 % par_civ2.SearchBoxShift(2)=Shifty(nbval>=1)./nbval(nbval>=1);322 299 par_civ2.Grid=[GridX(nbval>=1)-par_civ2.SearchBoxShift(:,1)/2 GridY(nbval>=1)-par_civ2.SearchBoxShift(:,2)/2];% grid taken at the extrapolated origin of the displacement vectors 323 300 if par_civ2.CheckDeformation … … 329 306 % caluclate velocity data (y and v in indices, reverse to y component) 330 307 [xtable ytable utable vtable ctable F] = civ (par_civ2); 331 % diff_squared=(utable-par_civ2.Shiftx).*(utable-par_civ2.Shiftx)+(vtable+par_civ2.Shifty).*(vtable+par_civ2.Shifty);332 % F(diff_squared>=4)=4; %flag vectors whose distance to the guess exceeds 2 pixels333 308 list_param=(fieldnames(Param.Civ2))'; 334 309 list_remove={'pxcmx','pxcmy','npx','npy','gridflag','maskflag','term_a','term_b','T0'}; … … 350 325 end 351 326 Data.ListGlobalAttribute=[Data.ListGlobalAttribute Civ2_param {'Civ2_Time','Civ2_Dt'}]; 352 % Data.Civ2_Time=par_civ2.Time;353 % Data.Civ2_Dt=par_civ2.Dt;354 327 nbvar=numel(Data.ListVarName); 355 328 Data.ListVarName=[Data.ListVarName {'Civ2_X','Civ2_Y','Civ2_U','Civ2_V','Civ2_F','Civ2_C'}];% cell array containing the names of the fields to record … … 475 448 %methods perform better and will maybe be implemented in the future. 476 449 477 %% prepare grid 450 %% prepare measurement grid 451 if isfield(par_civ,'Grid')% grid points set as input 452 if ischar(par_civ.Grid)%read the drid file if the input is a file name 453 par_civ.Grid=dlmread(par_civ.Grid); 454 par_civ.Grid(1,:)=[];%the first line must be removed (heading in the grid file) 455 end 456 else% automatic grid 457 minix=floor(par_civ.Dx/2)-0.5; 458 maxix=minix+par_civ.Dx*floor((par_civ.ImageWidth-1)/par_civ.Dx); 459 miniy=floor(par_civ.Dy/2)-0.5; 460 maxiy=minix+par_civ.Dy*floor((par_civ.ImageHeight-1)/par_civ.Dy); 461 [GridX,GridY]=meshgrid(minix:par_civ.Dx:maxix,miniy:par_civ.Dy:maxiy); 462 par_civ.Grid(:,1)=reshape(GridX,[],1); 463 par_civ.Grid(:,2)=reshape(GridY,[],1); 464 end 465 nbvec=size(par_civ.Grid,1); 466 467 %% prepare correlation and search boxes 478 468 ibx2=ceil(par_civ.CorrBoxSize(1)/2); 479 469 iby2=ceil(par_civ.CorrBoxSize(2)/2); … … 482 472 shiftx=round(par_civ.SearchBoxShift(:,1)); 483 473 shifty=-round(par_civ.SearchBoxShift(:,2));% sign minus because image j index increases when y decreases 484 if isfield(par_civ,'Grid') 485 if ischar(par_civ.Grid)%read the drid file if the input is a file name 486 par_civ.Grid=dlmread(par_civ.Grid); 487 par_civ.Grid(1,:)=[];%the first line must be removed (heading in the grid file) 488 end 489 else% automatic measurement grid 490 % ibx2=ceil(par_civ.Bx/2); 491 % iby2=ceil(par_civ.By/2); 492 % isx2=ceil(par_civ.Searchx/2); 493 % isy2=ceil(par_civ.Searchy/2); 494 miniy=max(1+isy2+shifty,1+iby2); 495 minix=max(1+isx2-shiftx,1+ibx2); 496 maxiy=min(par_civ.ImageHeight-isy2+shifty,par_civ.ImageHeight-iby2); 497 maxix=min(par_civ.ImageWidth-isx2-shiftx,par_civ.ImageWidth-ibx2); 498 [GridX,GridY]=meshgrid(minix:par_civ.Dx:maxix,miniy:par_civ.Dy:maxiy); 499 par_civ.Grid(:,1)=reshape(GridX,[],1); 500 par_civ.Grid(:,2)=reshape(GridY,[],1); 501 end 502 nbvec=size(par_civ.Grid,1); 503 if numel(shiftx)==1 474 if numel(shiftx)==1% case of a unique shift for the whole field( civ1) 504 475 shiftx=shiftx*ones(nbvec,1); 505 476 shifty=shifty*ones(nbvec,1); 506 477 end 478 507 479 %% Default output 508 480 xtable=par_civ.Grid(:,1); … … 561 533 % 20>=mask: velocity=0 562 534 checkmask=0; 535 MinA=min(min(par_civ.ImageA)); 536 MinB=min(min(par_civ.ImageB)); 563 537 if isfield(par_civ,'Mask') && ~isempty(par_civ.Mask) 564 538 checkmask=1; … … 569 543 % check_noflux=(par_civ.Mask<100) ;%TODO: to implement 570 544 check_undefined=(par_civ.Mask<200 & par_civ.Mask>=20 ); 571 par_civ.ImageA(check_undefined)= min(min(par_civ.ImageA));% put image A to zero (i.e. the min image value) in the undefined area572 par_civ.ImageB(check_undefined)= min(min(par_civ.ImageB));% put image B to zero (i.e. the min image value) in the undefined area545 par_civ.ImageA(check_undefined)=MinA;% put image A to zero (i.e. the min image value) in the undefined area 546 par_civ.ImageB(check_undefined)=MinB;% put image B to zero (i.e. the min image value) in the undefined area 573 547 end 574 548 … … 587 561 jref=round(par_civ.ImageHeight-par_civ.Grid(ivec,2)+0.5);% yindex on the image B for the middle of the correlation box 588 562 if ~(checkmask && par_civ.Mask(jref,iref)<=20) %velocity not set to zero by the black mask 589 if jref-iby2<1 || jref+iby2>par_civ.ImageHeight|| iref-ibx2<1 || iref+ibx2>par_civ.ImageWidth||... 590 jref+shifty(ivec)-isy2<1||jref+shifty(ivec)+isy2>par_civ.ImageHeight|| iref+shiftx(ivec)-isx2<1 || iref+shiftx(ivec)+isx2>par_civ.ImageWidth % we are outside the image 591 F(ivec)=3; 592 else 593 image1_crop=par_civ.ImageA(jref-iby2:jref+iby2,iref-ibx2:iref+ibx2);%extract a subimage (correlation box) from image A 594 image2_crop=par_civ.ImageB(jref+shifty(ivec)-isy2:jref+shifty(ivec)+isy2,iref+shiftx(ivec)-isx2:iref+shiftx(ivec)+isx2);%extract a larger subimage (search box) from image B 563 % if jref-iby2<1 || jref+iby2>par_civ.ImageHeight|| iref-ibx2<1 || iref+ibx2>par_civ.ImageWidth||... 564 % jref+shifty(ivec)-isy2<1||jref+shifty(ivec)+isy2>par_civ.ImageHeight|| iref+shiftx(ivec)-isx2<1 || iref+shiftx(ivec)+isx2>par_civ.ImageWidth % we are outside the image 565 % F(ivec)=3; 566 % else 567 F(ivec)=0; 568 subrange1_x=iref-ibx2:iref+ibx2;% x indices defining the first subimage 569 subrange1_y=jref-iby2:jref+iby2;% y indices defining the first subimage 570 subrange2_x=iref+shiftx(ivec)-isx2:iref+shiftx(ivec)+isx2;%x indices defining the second subimage 571 subrange2_y=jref+shifty(ivec)-isy2:jref+shifty(ivec)+isy2;%y indices defining the second subimage 572 image1_crop=MinA*ones(numel(subrange1_y),numel(subrange1_x));% default value=min of image A 573 image2_crop=MinA*ones(numel(subrange2_y),numel(subrange2_x));% default value=min of image A 574 check1_x=subrange1_x>=1 & subrange1_x<=par_civ.ImageWidth;% check which points in the subimage 1 are contained in the initial image 1 575 check1_y=subrange1_y>=1 & subrange1_y<=par_civ.ImageHeight; 576 check2_x=subrange2_x>=1 & subrange2_x<=par_civ.ImageWidth;% check which points in the subimage 2 are contained in the initial image 2 577 check2_y=subrange2_y>=1 & subrange2_y<=par_civ.ImageHeight; 578 image1_crop(check1_y,check1_x)=par_civ.ImageA(subrange1_y(check1_y),subrange1_x(check1_x));%extract a subimage (correlation box) from image A 579 image2_crop(check2_y,check2_x)=par_civ.ImageB(subrange2_y(check2_y),subrange2_x(check2_x));%extract a larger subimage (search box) from image B 595 580 image1_mean=mean(mean(image1_crop)); 596 581 image2_mean=mean(mean(image2_crop)); … … 603 588 F(ivec)=3; 604 589 end 605 end590 % end 606 591 if F(ivec)~=3 607 592 image1_crop=image1_crop-image1_mean;%substract the mean -
trunk/src/find_field_cells.m
r575 r576 20 20 % _warnflag: index of warnflag 21 21 % .FieldRequest= 'interp_lin', 'interp_tps' indicate whether lin interpolation or derivatives (tps) is needed to calculate the requested field 22 % . Operation= operation to be performed to finalise the field cell after projection22 % .FieldName = operation to be performed to finalise the field cell after projection 23 23 % .SubCheck=0 /1 indicate that the field must be substracted (second entry in uvmat) 24 24 % NbDim: array with the length of CellVarIndex, giving the space dimension of each field cell … … 87 87 Role=num2cell(blanks(nbvar));%initialize a cell array of nbvar blanks 88 88 FieldRequest=regexprep(Role,' ',''); % fieldRequest set to '' by default 89 Operation=cell(size(Role)); % fieldRequest set to {} by default89 FieldName=cell(size(Role)); % fieldRequest set to {} by default 90 90 CheckSub=zeros(size(Role));% =1 for fields to substract 91 91 Role=regexprep(Role,' ','scalar'); % Role set to 'scalar' by default … … 98 98 FieldRequest{ivar}=Data.VarAttribute{ivar}.FieldRequest; 99 99 end 100 if isfield(Data.VarAttribute{ivar},' Operation')101 Operation{ivar}=Data.VarAttribute{ivar}.Operation;100 if isfield(Data.VarAttribute{ivar},'FieldName') 101 FieldName{ivar}=Data.VarAttribute{ivar}.FieldName; 102 102 end 103 103 if isfield(Data.VarAttribute{ivar},'CheckSub') … … 318 318 CellInfo{icell}.FieldRequest=FieldRequest{ivar}; 319 319 end 320 if ~isempty( Operation{ivar})321 CellInfo{icell}. Operation=Operation{ivar};320 if ~isempty(FieldName{ivar}) 321 CellInfo{icell}.FieldName=FieldName{ivar}; 322 322 end 323 323 if CheckSub(ivar)==1 -
trunk/src/proj_field.m
r575 r576 861 861 %project on a plane 862 862 % AJOUTER flux,circul,error 863 863 function [ProjData,errormsg] = proj_plane(FieldData, ObjectData) 864 864 %----------------------------------------------------------------- 865 865 … … 1185 1185 FieldData=rmfield(FieldData,FieldData.ListVarName{CellInfo{icell}.VarIndex_warnflag}); 1186 1186 end 1187 [VarVal,ListFieldProj,VarAttribute,errormsg]=calc_field_interp([coord_X coord_Y],FieldData,CellInfo{icell}. Operation,XI,YI);1187 [VarVal,ListFieldProj,VarAttribute,errormsg]=calc_field_interp([coord_X coord_Y],FieldData,CellInfo{icell}.FieldName,XI,YI); 1188 1188 if isfield(CellInfo{icell},'CheckSub') && CellInfo{icell}.CheckSub && ~isempty(vector_x_proj) 1189 1189 ProjData.(ProjData.ListVarName{vector_x_proj})=ProjData.(ProjData.ListVarName{vector_x_proj})-VarVal{1}; … … 1221 1221 XI=XI+ObjectData.Coord(1,1); 1222 1222 YI=YI+ObjectData.Coord(1,2); 1223 [DataOut,VarAttribute,errormsg]=calc_field_tps(Coord,NbSites,SubRange,FieldVar,CellInfo{icell}. Operation,cat(3,XI,YI));1223 [DataOut,VarAttribute,errormsg]=calc_field_tps(Coord,NbSites,SubRange,FieldVar,CellInfo{icell}.FieldName,cat(3,XI,YI)); 1224 1224 ListFieldProj=(fieldnames(DataOut))'; 1225 1225 VarDimName=cell(size(ListFieldProj)); -
trunk/src/read_civdata.m
r517 r576 116 116 Field.VarAttribute{ivar}.FieldRequest=FieldRequest; 117 117 if strcmp(role{var_ind(ivar)},'vector_x') 118 Field.VarAttribute{ivar}. Operation=FieldNames;118 Field.VarAttribute{ivar}.FieldName=FieldNames; 119 119 ivar_U=ivar; 120 120 end 121 121 if strcmp(role{var_ind(ivar)},'vector_x_tps') 122 Field.VarAttribute{ivar}. Operation=FieldNames;122 Field.VarAttribute{ivar}.FieldName=FieldNames; 123 123 ivar_U_tps=ivar; 124 124 end -
trunk/src/read_field.m
r575 r576 41 41 if isfield(ParamIn,'FieldName') 42 42 if ischar(ParamIn.FieldName) 43 ParamIn.FieldName={ParamIn.FieldName};43 InputField={ParamIn.FieldName}; 44 44 else 45 45 InputField= ParamIn.FieldName; -
trunk/src/set_grid.m
r342 r576 22 22 function varargout = set_grid(varargin) 23 23 24 % Last Modified by GUIDE v2.5 23-Apr-2010 15:44:4724 % Last Modified by GUIDE v2.5 01-Mar-2013 22:41:43 25 25 26 26 % Begin initialization code - DO NOT PLOT … … 32 32 'gui_LayoutFcn', [] , ... 33 33 'gui_Callback', []); 34 % if nargin & isstr(varargin{1}) 35 % gui_State.gui_Callback = str2func(varargin{1}); 36 % end 34 37 35 if nargin && ischar(varargin{1}) 38 36 gui_State.gui_Callback = str2func(varargin{1}); … … 43 41 gui_mainfcn(gui_State, varargin{:}); 44 42 end 45 % End initialization code - DO NOT PLOT46 43 47 44 %------------------------------------------------------------------- … … 54 51 %'data': read from an existing object selected in the interface 55 52 % .TITLE : class of object ('POINTS','LINE',....) 56 % . DX,DY,DZ; meshes for regular grids53 % .num_DX,num_DY,DZ; meshes for regular grids 57 54 % .Coord: object position coordinates 58 55 % .ParentButton: handle of the uicontrol object calling the interface … … 60 57 % if =[] or absent, no plot (mask mode in uvmat) 61 58 % parameters on the uvmat interface (obtained by 'get_plot_handle.m') 62 function set_grid_OpeningFcn(hObject, eventdata, handles, inputfile,CoordType)59 function set_grid_OpeningFcn(hObject, eventdata, handles,InputFile,InputField) 63 60 64 61 % Choose default command line output for set_grid … … 68 65 guidata(hObject, handles); 69 66 70 %default 71 % set(hObject,'Unit','Normalized')% set the unit normalized to the screen size 72 % set(hObject,'Position',[0.7 0.1 0.25 0.5])%set the position of the set_grid interface 67 %default 73 68 set(hObject,'DeleteFcn',@closefcn) 74 % set(handles.TITLE,'Value',1) 75 %set(handles.ObjectStyle,'Value',1) 76 %set(handles.ProjMode,'Value',1) 77 set(handles.MenuCoord,'ListboxTop',1) 78 set(handles.MenuCoord,'Value',1); 79 set(handles.MenuCoord,'String',{'phys';'px'}); 80 if exist('inputfile','var')& ~isempty(inputfile) 81 set(handles.image_1,'String',inputfile) 82 set(handles.image_2,'String',inputfile) 83 end 84 if exist('CoordType','var') 85 if strcmp(CoordType,'px') 86 set(handles.MenuCoord,'Value',2) 87 end 69 set(hObject,'WindowButtonDownFcn',{'mouse_down'})%set mouse click action function 70 set(handles.CoordType,'ListboxTop',1) 71 set(handles.CoordType,'Value',1); 72 set(handles.CoordType,'String',{'phys';'px'}); 73 if exist('InputFile','var') 74 set(handles.ImageA,'String',InputFile) 75 end 76 77 %% use InputField input from uvmat 78 check_pixel=0; 79 if exist('InputField','var') 80 if strcmp(InputField.CoordUnit,'pixel') 81 set(handles.CoordType,'Value',2) 82 set(handles.TxtWarning,'Visible','on') 83 Mesh=20;%default mesh in pixel 84 check_pixel=1; 85 else 86 set(handles.CoordType,'Value',1) 87 InputField.CoordMesh=20*InputField.CoordMesh; % about 20 pixels 88 % adjust the mesh to a value 1, 2 , 5 *10^n 89 ord=10^(floor(log10(InputField.CoordMesh)));%order of magnitude 90 if InputField.CoordMesh/ord>=5 91 Mesh=5*ord; 92 elseif InputField.CoordMesh/ord>=2 93 Mesh=2*ord; 94 else 95 Mesh=ord; 96 end 97 end 98 Input.DX=Mesh; 99 Input.DY=Mesh; 100 Input.XMin=(Mesh/2)*ceil(InputField.XMin/(Mesh/2))-0.5*check_pixel; 101 Input.XMax=Input.XMin+Mesh*floor((InputField.XMax-Input.XMin)/Mesh)-0.5*check_pixel; 102 Input.YMin=(Mesh/2)*ceil(InputField.YMin/(Mesh/2))-0.5*check_pixel; 103 Input.YMax=Input.YMin+Mesh*floor((InputField.YMax-Input.YMin)/Mesh)-0.5*check_pixel; 104 errormsg=fill_GUI(Input,handles); 88 105 end 89 106 … … 93 110 varargout{1} = handles.output; 94 111 varargout{2}=handles; 95 96 97 %-----------------------------------------------------98 % --- Executes on button press in import.99 function import_Callback(hObject, eventdata, handles)100 %get the object file101 oldfile='';102 huvmat=findobj('Tag','uvmat');103 if isempty(huvmat)104 huvmat=findobj(allchild(0),'Name','series');105 end106 hchild=get(huvmat,'Children');107 hrootpath=findobj(hchild,'Tag','RootPath');108 oldfile=get(hrootpath,'String');109 if iscell(oldfile)110 oldfile=oldfile{1};111 end112 %[FileName,PathName] = uigetfile('*.civ','Select a .civ file',oldfile)113 [FileName, PathName, filterindex] = uigetfile( ...114 {'*.xml;*.mat', ' (*.xml,*.mat)';115 '*.xml', '.xml files '; ...116 '*.mat', '.mat matlab files '}, ...117 'Pick a file',oldfile);118 fileinput=[PathName FileName];%complete file name119 testblank=findstr(fileinput,' ');%look for blanks120 if ~isempty(testblank)121 errordlg('forbidden input file name: contain blanks')122 return123 end124 sizf=size(fileinput);125 if (~ischar(fileinput)|~isequal(sizf(1),1)),return;end126 127 %read the file128 t=xmltree(fileinput);129 s=convert(t);130 testmode=0;131 if isfield(s,'ProjMode')132 menu=get(handles.ProjMode,'String');133 for iline=1:length(menu)134 if isequal(menu{iline},s.ProjMode)135 set(handles.ProjMode,'Value',iline)136 testmode=1;137 break138 end139 end140 end141 142 ProjMode_Callback(hObject, eventdata, handles);%visualize the appropriate edit boxes143 if isfield(s,'CoordType')144 if isequal(s.CoordType,'phys')145 set(handles.MenuCoord,'Value',1)146 elseif isequal(s.CoordType,'px')147 set(handles.MenuCoord,'Value',2)148 else149 warndlg('unknown CoordType (px or phys) in set_grid.m')150 end151 end152 if isfield(s,'XMax')153 set(handles.XMax,'String',s.XMax)154 end155 if isfield(s,'XMin')156 set(handles.XMin,'String',s.XMin)157 end158 if isfield(s,'YMax')159 set(handles.YMax,'String',s.YMax)160 end161 if isfield(s,'YMin')162 set(handles.YMin,'String',s.YMin)163 end164 if isfield(s,'DX')165 set(handles.DX,'String',s.DX)166 end167 if isfield(s,'DY')168 set(handles.DY,'String',s.DY)169 end170 if ~isfield(s,'Coord')171 XObject='0';%default172 YObject='0';173 elseif ischar(s.Coord)174 line=str2num(s.Coord);175 XObject=num2str(line(1));176 YObject=num2str(line(2));177 else178 for i=1:length(s.Coord)179 line=str2num(s.Coord{i});180 XObject{i}=num2str(line(1));181 YObject{i}=num2str(line(2));182 end183 end184 set(handles.XObject,'String',XObject)185 set(handles.YObject,'String',YObject)186 %METTRA A JOUR ASPECT DE L'INTERFACE (COMME set_grid_Opening187 112 188 113 %---------------------------------------------------- … … 196 121 if isequal(tag,'edit') 197 122 set(parent_button,'BackgroundColor',[0.7 0.7 0.7]); 198 else 123 else 199 124 set(parent_button,'BackgroundColor',[0 1 0]); 200 125 end … … 204 129 % --- Executes on button press in plot: PLOT the defined object and its projected field 205 130 function plot_Callback(hObject, eventdata, handles) 206 grid_pix_A=get_grid(handles);207 huvmat= uvmat(get(handles.image_1,'String'));131 [grid_pix_A,grid_pix_B,grid_phys]=get_grid(read_GUI(handles.set_grid)); 132 huvmat=findobj(allchild(0),'tag','uvmat'); 208 133 hhuvmat=guidata(huvmat); 209 set(hhuvmat.transform_fct,'Value',1) 210 uvmat('run0_Callback',hObject,eventdata,hhuvmat); %file input with xml reading in uvmat 211 axes(hhuvmat.axes3); 134 axes(hhuvmat.PlotAxes); 212 135 hold on 213 plot(grid_pix_A(:,1),grid_pix_A(:,2),'.') 214 215 % --- Executes on button press in plot_2. 216 function plot_2_Callback(hObject, eventdata, handles) 217 [grid_pix_A,grid_pix_B]=get_grid(handles); 218 huvmat=uvmat(get(handles.image_2,'String')); 219 hhuvmat=guidata(huvmat); 220 set(hhuvmat.transform_fct,'Value',1) 221 uvmat('run0_Callback',hObject,eventdata,hhuvmat); %file input with xml reading in uvmat 222 axes(hhuvmat.axes3); 223 hold on 224 plot(grid_pix_B(:,1),grid_pix_B(:,2),'.') 225 226 227 228 % --- Executes on button press in MenuCoord. 229 function MenuCoord_Callback(hObject, eventdata, handles) 230 136 UvData=get(huvmat,'UserData'); 137 if isfield(UvData.Field, 'CoordUnit')&& strcmp(UvData.Field.CoordUnit,'pixel') 138 plot(grid_pix_A(:,1),grid_pix_A(:,2),'.') 139 else 140 plot(grid_phys(:,1),grid_phys(:,2),'.') 141 end 142 143 %% display grid in second image defiend 144 if ~isempty(grid_pix_B) 145 hviewfield=view_field(get(handles.imageB,'String')); 146 hhviewfield=guidata(hviewfield); 147 axes(hhviewfield.PlotAxes); 148 hold on 149 if isfield(UvData.Field, 'CoordUnit')&& strcmp(UvData.Field.CoordUnit,'pixel') 150 plot(grid_pix_B(:,1),grid_pix_B(:,2),'.') 151 else 152 plot(grid_phys(:,1),grid_phys(:,2),'.') 153 end 154 end 155 156 %------------------------------------------------------------------------ 157 % --- Executes on button press in CoordType. 158 function CoordType_Callback(hObject, eventdata, handles) 159 %------------------------------------------------------------------------ 160 set(handles.num_XMin,'String','') 161 set(handles.num_XMax,'String','') 162 set(handles.num_DX,'String','') 163 set(handles.num_YMin,'String','') 164 set(handles.num_YMax,'String','') 165 set(handles.num_DY,'String','') 166 set(handles.num_Z,'String','') 167 if isequal(get(handles.CoordType,'Value'),2) 168 set(handles.TxtWarning,'visible','on') 169 else 170 set(handles.TxtWarning,'visible','on') 171 end 231 172 232 173 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% … … 247 188 248 189 % ------------------------------------------------------ 249 function save_Callback(hObject, eventdata, handles)190 function Save_Callback(hObject, eventdata, handles) 250 191 % ------------------------------------------------------ 251 [grid_pix_A,grid_pix_B]=get_grid(handles); 192 [grid_pix_A,grid_pix_B]=get_grid(read_GUI(handles.set_grid)); 193 252 194 253 195 %ECRIRE FICHIERS 254 196 nbpointsA=size(grid_pix_A); 255 XA=grid_pix_A(:,1); 197 XA=grid_pix_A(:,1);%index=position+0.5 rounded at the nearest integer value 256 198 YA=grid_pix_A(:,2); 257 199 unitcolumn=32*ones(size(XA)); … … 263 205 textgrid={tete;txt}; 264 206 textout=char(textgrid); 265 imageA=get(handles. image_1,'String');207 imageA=get(handles.ImageA,'String'); 266 208 RootPath=fileparts_uvmat(imageA); 267 %[Pathsub]=name2display(imageA);268 209 Answer = msgbox_uvmat('INPUT_TXT','grid file name (*.grid)',fullfile(RootPath,'gridA.grid')); 269 % Answer = inputdlg('grid file name (*.grid)',' ',1,{fullfile(Pathsub,'gridA.grid')},'on');270 210 dlmwrite(Answer,textout,''); 271 211 msgbox_uvmat('CONFIRMATION',[Answer ' written as ASCII text file']); 272 212 if ~isempty(grid_pix_B) 273 213 nbpointsB=size(grid_pix_B); 274 XB= grid_pix_B(:,1);275 YB= grid_pix_B(:,2);214 XB=round(grid_pix_B(:,1)+0.5);%index=position+0.5 rounded at the nearest integer value 215 YB=round(grid_pix_B(:,2)+0.5); 276 216 unitcolumn=32*ones(size(XB)); 277 217 Xchar=num2str(XB); … … 287 227 end 288 228 289 %------------------------- 290 function [grid_pix_A,grid_pix_B]=get_grid(handles) 291 %Object=read_set_object(handles);%read the set_grid interface; 229 230 %------------------------------------------------------------------------ 231 function [grid_pix_A,grid_pix_B,grid_phys]=get_grid(GUI) 232 %------------------------------------------------------------------------ 292 233 grid_pix_B=[];%default 293 DX=str2num(get(handles.DX,'String')); 294 DY=str2num(get(handles.DY,'String')); 295 XMin=str2num(get(handles.XMin,'String')); 296 XMax=str2num(get(handles.XMax,'String')); 297 YMin=str2num(get(handles.YMin,'String')); 298 YMax=str2num(get(handles.YMax,'String')); 299 array_realx=XMin:DX:XMax; 300 array_realy=YMin:DY:YMax; 301 nx_patch=length(array_realx); 302 ny_patch=length(array_realy); 303 [grid_realx,grid_realy]=meshgrid(array_realx,array_realy); 304 grid_real(:,1)=reshape(grid_realx,nx_patch*ny_patch,1); 305 grid_real(:,2)=reshape(grid_realy,nx_patch*ny_patch,1); 306 grid_real(:,3)=zeros(nx_patch*ny_patch,1); 307 308 imageA=get(handles.image_1,'String'); 309 imageB=get(handles.image_2,'String'); 310 testB=1; 311 if isempty(imageA) || isequal(imageA,'') 312 if isempty(imageB) || isequal(imageB,'') 313 msgbox_uvmat('ERROR','at least one image file name must be introduced') 314 else 315 imageA=imageB; 316 testB=0; 317 end 318 end 319 if isempty(imageB) || isequal(imageB,'') || isequal(imageA,imageB) 320 testB=0; 321 end 322 323 testexist=exist(imageA,'file'); 324 if isequal(testexist,0) 234 array_x=GUI.XMin:GUI.DX:GUI.XMax;% array of x values 235 array_y=GUI.YMin:GUI.DY:GUI.YMax;% array of y values 236 [grid_x,grid_y]=meshgrid(array_x,array_y);% matrices of x and y values 237 grid_x=reshape(grid_x,[],1); %matrix of x values reshaped in line 238 grid_y=reshape(grid_y,[],1);%matrix of y values reshaped in line 239 % grid_z=zeros(nx_patch*ny_patch,1);% plane coordinates (TODO: 3D grids) 240 241 %% check the input image A 242 if ~exist(GUI.ImageA,'file') 325 243 msgbox_uvmat('ERROR',['input image file' imageA 'does not exist']) 326 244 return 327 245 end 328 %[Pathsub,RootFile,field_count,str2,str_a,str_b,FileExt,NomType,SubDir]=name2display(imageA); 329 [RootPath,~,RootFile,~,~,~,~,FileExt]=fileparts_uvmat(imageA); 330 form=imformats(FileExt(2:end)); 331 if isempty(form)% if the extension corresponds to an image format recognized by Matlab 332 msgbox_uvmat('ERROR',['error: ' imageA ' is not an image name recognized by Matlab ']) 333 return 334 end 335 fileAxml=[fullfile(RootPath,RootFile) '.xml']; 336 [XmlDataA,error]=imadoc2struct(fileAxml); 337 if isfield(XmlDataA,'GeometryCalib') 338 tsaiA=XmlDataA.GeometryCalib; 339 else 340 msgbox_uvmat('WARNING','no geometric calibration available for image A') 341 tsaiA=[]; 342 end 343 MenuCoord=get(handles.MenuCoord,'String'); 344 val=get(handles.MenuCoord,'Value'); 345 if isempty(tsaiA)||strcmp(MenuCoord{val},'px') 346 grid_imaA(:,1)=grid_real(:,1); 347 grid_imaA(:,2)=grid_real(:,2); 348 else 349 [grid_imaA(:,1),grid_imaA(:,2)]=px_XYZ(tsaiA,grid_real(:,1),grid_real(:,2),0); 350 end 351 A=imread(imageA); 352 siz=size(A); 353 npxA=siz(2); 354 npyA=siz(1); 355 356 flagA=grid_imaA(:,1)>0 & grid_imaA(:,1)<npxA & grid_imaA(:,2)>0 & grid_imaA(:,2)<npyA; 357 358 if testB 359 testexist=exist(imageB,'file'); 360 if isequal(testexist,0) 361 msgbox_uvmat('ERROR',['input image file' imageB 'does not exist']) 246 [FileType,tild,VideoObject]=get_file_type(GUI.ImageA); 247 switch FileType 248 case {'image','multimage','video','mmreader'}% case of input image or movie OK 249 otherwise 250 msgbox_uvmat('ERROR',['error: ' GUI.ImageA ' is not an image type recognized by Matlab ']) 362 251 return 363 end 364 %[RootPath,RootFile,field_count,str2,str_a,str_b,FileExt,NomType,SubDir]=name2display(imageB); 365 [RootPath,~,RootFile,~,~,~,~,FileExt]=fileparts_uvmat(imageB); 366 form=imformats(FileExt(2:end)); 367 if isempty(form)% if the extension corresponds to an image format recognized by Matlab 368 msgbox_uvmat('ERROR',['error: ' imageB ' is not an image name recognized by Matlab ']) 252 end 253 [RootPath,SubDir,RootFile,tild,tild,tild,tild,FileExt]=fileparts_uvmat(GUI.ImageA); 254 255 %% transform to pixels if the grid is defined in phys coordinates 256 grid_x_imaA=grid_x;%default grid in image A coordinates 257 grid_y_imaA=grid_y; 258 % MenuCoord=get(handles.CoordType,'String');% type of coordinates for grid definition, phys or pixel 259 if strcmp(GUI.CoordType,'phys') 260 fileAxml=fullfile(RootPath,[SubDir '.xml']);% new convention for xml name 261 if ~exist(fileAxml,'file') 262 fileAxml=[fullfile(RootPath,RootFile) '.xml'];% old convention for xml name 263 end 264 tsaiA=[];%default 265 if exist(fileAxml,'file') 266 [XmlDataA,errormsg]=imadoc2struct(fileAxml); 267 if ~isempty(errormsg) 268 msgbox_uvmat('ERROR',['error in ' fileAxml ': ' errormsg]) 269 return 270 end 271 if isfield(XmlDataA,'GeometryCalib') 272 tsaiA=XmlDataA.GeometryCalib; 273 end 274 end 275 if isempty(tsaiA) 276 msgbox_uvmat('WARNING','no geometric calibration available for image A, phys =pixel') 277 else 278 [grid_x_imaA,grid_y_imaA]=px_XYZ(tsaiA,grid_x,grid_y,GUI.Z); 279 end 280 end 281 282 %% detect the grid points which are inside image A 283 A=read_image(GUI.ImageA,FileType,VideoObject,1); 284 npxA=size(A,2); 285 npyA=size(A,1); 286 flag=grid_x_imaA>=1 & grid_x_imaA<=npxA & grid_y_imaA>=1 & grid_y_imaA<=npyA;% ='true' inside the image 287 288 %% detect the grid points which are inside image B if relevant (use for stereo PIV) 289 if isfield(GUI,'ImageB') 290 if ~exist(imageB,'file') 291 msgbox_uvmat('ERROR',['input image file' GUI.ImageB 'does not exist']) 369 292 return 370 293 end 371 fileBxml=[fullfile(RootPath,RootFile) '.xml']; 372 [XmlDataB,error]=imadoc2struct(fileBxml); 373 if isfield(XmlDataB,'GeometryCalib') 374 tsaiB=XmlDataB.GeometryCalib; 375 else 376 msgbox_uvmat('WARNING','no geometric calibration available for image B') 377 tsaiB=[]; 378 end 379 %[error,Heading,NomType_read,ext_ima_read,time,TimeUnit,mode,NbSlice,... 380 % npxB,npyB,tsaiB]=read_imadoc(fileBxml,0); 381 [grid_imaB(:,1),grid_imaB(:,2)]=px_XYZ(tsaiB,grid_real(:,1),grid_real(:,2),0); 382 % if isempty(npxB)|isempty(npyB) 383 B=imread(imageB); 384 siz=size(B); 385 npxB=siz(2); 386 npyB=siz(1); 387 % end 388 flagB=grid_imaB(:,1)>0 & grid_imaB(:,1)<npxB & grid_imaB(:,2)>0 & grid_imaB(:,2)<npyB; 389 end 390 if testB 391 ind_good=find(flagA==1&flagB==1); 392 XimaB=grid_imaB(ind_good,1); 393 YimaB=grid_imaB(ind_good,2); 394 else 395 ind_good=find(flagA==1); 396 end 397 XimaA=grid_imaA(ind_good,1); 398 YimaA=grid_imaA(ind_good,2); 399 400 grid_real_x=grid_real(ind_good,1); 401 grid_real_y=grid_real(ind_good,2); 402 nx_patch_new=length(grid_real_x); 403 grid_real2(:,1)=grid_real_x; 404 grid_real2(:,2)=grid_real_y; 405 grid_real2(:,3)=zeros(nx_patch_new,1); 406 if isempty(tsaiA)||strcmp(MenuCoord{val},'px') 407 grid_pix_A(:,1)=grid_real2(:,1); 408 grid_pix_A(:,2)= grid_real2(:,2); 409 else 410 [grid_pix_A(:,1),grid_pix_A(:,2)]=px_XYZ(tsaiA,grid_real2(:,1),grid_real2(:,2)); 411 end 412 if testB 413 [grid_pix_B(:,1),grid_pix_B(:,2)]=px_XYZ(tsaiB,grid_real2(:,1),grid_real2(:,2)); 414 end 415 294 [RootPathB,SubDirB,RootFileB,tild,tild,tild,tild,FileExt]=fileparts_uvmat(GUI.ImageB); 295 fileBxml=fullfile(RootPathB,[SubDirB '.xml']);% new convention for xml name 296 if ~exist(fileBxml,'file') 297 fileBxml=[fullfile(RootPathB,RootFileB) '.xml'];% old convention for xml name 298 end 299 tsaiB=[];%default 300 if exist(fileBxml,'file') 301 [XmlDataB,errormsg]=imadoc2struct(fileBxml); 302 if ~isempty(errormsg) 303 msgbox_uvmat('ERROR',['error in ' fileAxml ': ' errormsg]) 304 return 305 end 306 if isfield(XmlDataB,'GeometryCalib') 307 tsaiB=XmlDataB.GeometryCalib; 308 end 309 end 310 if isempty(tsaiB) 311 msgbox_uvmat('WARNING','no geometric calibration available for image B, phys =pixel') 312 grid_x_imaB=grid_x; 313 grid_y_imaB=grid_y; 314 else 315 [grid_x_imaB,grid_y_imaB]=px_XYZ(tsaiB,grid_x,grid_y,GUI.Z); 316 end 317 B=imread(GUI.ImageB); 318 npxB=size(B,2); 319 npyB=size(B,1); 320 flagB=grid_x_imaB>=1 & grid_x_imaB<=npxB & grid_y_imaB>=1 & grid_y_imaB<=npyB; 321 flag=flagA & flagB; 322 grid_pix_B(:,1)=round(grid_x_imaB(flag)); 323 grid_pix_B(:,2)=round(grid_y_imaB(flag)); 324 end 325 326 grid_x_imaA=grid_x_imaA(flag); 327 grid_y_imaA=grid_y_imaA(flag); 328 grid_pix_A=[grid_x_imaA grid_y_imaA]; 329 grid_x=grid_x(flag); 330 grid_y=grid_y(flag); 331 grid_phys=[grid_x grid_y]; 332 333 334 function GetImageB_Callback(hObject, eventdata, handles) 335 if isequal(get(handles.GetImageB,'Value'),1) 336 set(handles.ImageB,'Visible','on') 337 [FileName, PathName, filterindex] = uigetfile( ... 338 {'*.*', 'All Files (*.*)'}, ... 339 'Pick the second image file',fileparts(fileparts(get(handles.ImageA,'String')))); 340 ImageB=fullfile(PathName,FileName); 341 [FileType,tild,VideoObject]=get_file_type(ImageB); 342 switch FileType 343 case {'image','multimage','video','mmreader'}% case of input image or movie OK 344 set(handles.ImageB,'String',ImageB) 345 otherwise 346 msgbox_uvmat('ERROR',['error: ' imageB ' is not an image type recognized by Matlab ']) 347 return 348 end 349 else 350 set(handles.ImageB,'Visible','off') 351 end 416 352 417 353 … … 430 366 431 367 368 function ImageA_Callback(hObject, eventdata, handles) 369 % hObject handle to ImageA (see GCBO) 370 % eventdata reserved - to be defined in a future version of MATLAB 371 % handles structure with handles and user data (see GUIDATA) 372 373 % Hints: get(hObject,'String') returns contents of ImageA as text 374 % str2double(get(hObject,'String')) returns contents of ImageA as a double -
trunk/src/uvmat.m
r575 r576 216 216 217 217 %% load the list of previously browsed files in menus Open, Open_1 and transform_fct 218 dir_perso=prefdir; % path to the directory .matlab for personal data219 profil_perso=fullfile(dir_perso,'uvmat_perso.mat');% personal data file uvma uvmat_perso.mat' in .matlab218 dir_perso=prefdir; % path to the directory .matlab containing the personal data of the current user 219 profil_perso=fullfile(dir_perso,'uvmat_perso.mat');% personal data file uvmat_perso.mat' in .matlab 220 220 if exist(profil_perso,'file') 221 221 h=load (profil_perso); 222 222 if isfield(h,'MenuFile')% load the menu of previously opened files 223 223 for ifile=1:min(length(h.MenuFile),5) 224 eval(['set(handles.MenuFile_' num2str(ifile) ',''Label'',h.MenuFile{ifile});'])225 eval(['set(handles.MenuFile_' num2str(ifile) '_1,''Label'',h.MenuFile{ifile});'])224 set(handles.(['MenuFile_' num2str(ifile)]),'Label',h.MenuFile{ifile}); 225 set(handles.(['MenuFile_' num2str(ifile) '_1']),'Label',h.MenuFile{ifile}); 226 226 end 227 end 228 if isfield(h,'RootPath') 229 set(handles.RootPath,'UserData',h.RootPath); %store the previous campaign in the UserData of RootPath 227 230 end 228 231 if isfield(h,'transform_fct') && iscell(h.transform_fct) % load the menu of transform fct set by user … … 335 338 [RootPath,SubDir,RootFile,FileIndices,FileExt]=read_file_boxes(handles); 336 339 oldfile=fullfile(RootPath,SubDir); 337 if isempty(oldfile)||isequal(oldfile,'') %loads the previously stored file name and set it as default in the file_input box 338 dir_perso=prefdir; 339 profil_perso=fullfile(dir_perso,'uvmat_perso.mat'); 340 if exist(profil_perso,'file') 341 h=load (profil_perso); 342 if isfield(h,'MenuFile_1') 343 oldfile=h.MenuFile_1; 344 end 345 end 340 if isempty(oldfile) %loads the previously stored file name and set it as default in the file_input box 341 oldfile=get(handles.RootPath,'UserData'); 346 342 end 347 343 [FileName, PathName] = uigetfile({'*.*','All Files(*.*)'},'Pick a file',oldfile); … … 357 353 function MenuBrowseCampaign_Callback(hObject, eventdata, handles) 358 354 % ----------------------------------------------------------------------- 359 CampaignPath=fileparts(fileparts(get(handles.RootPath,'String'))); 355 RootPath=get(handles.RootPath,'String'); 356 if isempty(RootPath) 357 RootPath=get(handles.RootPath,'UserData');%use Rootpath recored from the personal file at uvmat opening 358 end 359 CampaignPath=fileparts(fileparts(RootPath)); 360 360 DirFull = uigetdir(CampaignPath,'Select a Campaign dir, then press OK'); 361 361 if ~ischar(DirFull)|| ~exist(DirFull,'dir') … … 447 447 set(handles.MenuFile_4_1,'Label',MenuFile_4) 448 448 set(handles.MenuFile_5_1,'Label',MenuFile_5) 449 dir_perso=prefdir;450 profil_perso=fullfile(dir_perso,'uvmat_perso.mat');451 if exist(profil_perso,'file')452 save (profil_perso,'MenuFile_1','MenuFile_2','MenuFile_3','MenuFile_4', 'MenuFile_5','-append'); %store the file names for future opening of uvmat453 else454 txt=ver('MATLAB');455 Release=txt.Release;456 relnumb=str2double(Release(3:4));457 if relnumb >= 14458 save (profil_perso,'MenuFile_1','MenuFile_2','MenuFile_3','MenuFile_4', 'MenuFile_5','-V6'); %store the file names for future opening of uvmat459 else460 save (profil_perso,'MenuFile_1','MenuFile_2','MenuFile_3','MenuFile_4', 'MenuFile_5'); %store the file names for future opening of uvmat461 end462 end449 % dir_perso=prefdir; 450 % profil_perso=fullfile(dir_perso,'uvmat_perso.mat'); 451 % if exist(profil_perso,'file') 452 % save (profil_perso,'MenuFile_1','MenuFile_2','MenuFile_3','MenuFile_4', 'MenuFile_5','-append'); %store the file names for future opening of uvmat 453 % else 454 % txt=ver('MATLAB'); 455 % Release=txt.Release; 456 % relnumb=str2double(Release(3:4)); 457 % if relnumb >= 14 458 % save (profil_perso,'MenuFile_1','MenuFile_2','MenuFile_3','MenuFile_4', 'MenuFile_5','-V6'); %store the file names for future opening of uvmat 459 % else 460 % save (profil_perso,'MenuFile_1','MenuFile_2','MenuFile_3','MenuFile_4', 'MenuFile_5'); %store the file names for future opening of uvmat 461 % end 462 % end 463 463 464 464 % -------------------------------------------------------------------- … … 787 787 end 788 788 for ifile=1:min(length(MenuFile),5) 789 eval(['set(handles.MenuFile_' num2str(ifile) ',''Label'',MenuFile{ifile});'])790 eval(['set(handles.MenuFile_' num2str(ifile) '_1,''Label'',MenuFile{ifile});'])789 set(handles.(['MenuFile_' num2str(ifile)]),'Label',MenuFile{ifile}); 790 set(handles.(['MenuFile_' num2str(ifile) '_1']),'Label',MenuFile{ifile}); 791 791 end 792 792 dir_perso=prefdir; 793 793 profil_perso=fullfile(dir_perso,'uvmat_perso.mat'); 794 794 if exist(profil_perso,'file') 795 save (profil_perso,'MenuFile',' -append'); %store the file names for future opening of uvmat795 save (profil_perso,'MenuFile','RootPath','-append'); %store the file names for future opening of uvmat 796 796 else 797 save (profil_perso,'MenuFile',' -V6'); %store the file names for future opening of uvmat797 save (profil_perso,'MenuFile','RootPath','-V6'); %store the file names for future opening of uvmat 798 798 end 799 799 … … 1411 1411 choice_value=get(handles.transform_fct,'Value'); 1412 1412 transform_name=menu_transform{choice_value};%name of the transform fct given by the menu 'transform_fct' 1413 % transform_list=get(handles.transform_fct,'UserData');1414 % transform=transform_list{choice_value};1415 1413 transform=get(handles.path_transform,'UserData'); 1416 1414 if ~isequal(transform_name,'') && ~isequal(transform_name,'px') … … 1441 1439 axes(handles.PlotAxes) 1442 1440 hold on 1443 size(flagmask)1444 % MaskData.maskhandle=image(Mask.AX,Mask.AY,imflag,'Tag','mask','HitTest','off','AlphaData',0.6*flagmask);1445 1441 MaskData.maskhandle=image(Mask.AX,Mask.AY,imflag,'Tag','mask','HitTest','off','AlphaData',0.6*ones(size(flagmask))); 1446 % set(MaskData.maskhandle,'AlphaData',0.6*flagmask)1447 1442 set(handles.CheckMask,'UserData',MaskData) 1448 1443 end … … 1932 1927 1933 1928 %px to phys or other transform on field 1934 % menu_transform=get(handles.transform_fct,'String');1935 % choice_value=get(handles.transform_fct,'Value');1936 % transform_name=menu_transform{choice_value};%name of the transform fct given by the menu 'transform_fct'1937 % transform_list=get(handles.transform_fct,'UserData');1938 1929 transform=get(handles.path_transform,'UserData'); 1939 1930 if ~isempty(transform) … … 2067 2058 list_fields=get(handles.FieldName,'String');% list menu fields 2068 2059 FieldName= list_fields{get(handles.FieldName,'Value')}; % selected field 2060 % if get_field... is selected, the GUI get_field will be used to enter fields 2069 2061 if ~strcmp(FieldName,'get_field...') 2070 2062 if get(handles.FixVelType,'Value') … … 2073 2065 end 2074 2066 end 2067 % case of input vector field, get the scalar used for vector color 2075 2068 if ~isempty(regexp(FieldName,'^vec(')) 2076 2069 list_code=get(handles.ColorCode,'String');% list menu fields … … 2132 2125 end 2133 2126 Field{1}.ZIndex=z_index; %used for multiplane 3D calibration 2134 % end 2127 2135 2128 2136 2129 %% choose and read a second field FileName_1 if defined … … 2461 2454 end 2462 2455 2456 %UvData.Field=get_bounds(UvData.Field); 2463 2457 2464 2458 %% get bounds and mesh (needed to propose default options for projection objects) … … 3391 3385 %------------------------------------------------------- 3392 3386 % 3393 % UvData=get(handles.uvmat,'UserData');%read UvData properties stored on the uvmat interface3394 3387 if isequal(get(handles.edit_vect,'Value'),1) 3395 3388 test_civ2=isequal(get(handles.civ2,'BackgroundColor'),[1 1 0]); … … 3403 3396 set(handles.CheckZoom,'Value',0) 3404 3397 set(handles.CheckZoom,'BackgroundColor',[0.7 0.7 0.7]) 3405 % set(handles.create,'Value',0)3406 % set(handles.create,'BackgroundColor',[0 1 0])3407 3398 set(handles.edit_object,'BackgroundColor',[0.7 0.7 0.7]) 3408 3399 set(gcf,'Pointer','arrow') 3409 % UvData.MouseAction='edit_vect';3410 3400 else 3411 3401 set(handles.record,'Visible','off') … … 4143 4133 function edit_object_Callback(hObject, eventdata, handles) 4144 4134 %------------------------------------------------------------------- 4145 UvData=get(handles.uvmat,'UserData');%read UvData properties stored on the uvmat interface4146 4135 hset_object=findobj(allchild(0),'Tag','set_object'); 4147 4136 if get(handles.edit_object,'Value') … … 4903 4892 [RootPath,SubDir,RootFile,FileIndex,FileExt]=read_file_boxes(handles); 4904 4893 FileName=[fullfile(RootPath,SubDir,RootFile) FileIndex FileExt]; 4905 CoordList=get(handles.transform_fct,'String'); 4906 val=get(handles.transform_fct,'Value'); 4907 set_grid(FileName,CoordList{val});% call the set_object interface 4894 UvData=get(handles.uvmat,'UserData'); 4895 % CoordList=get(handles.transform_fct,'String'); 4896 % val=get(handles.transform_fct,'Value'); 4897 set_grid(FileName,UvData.Field);% call the set_object interface 4908 4898 4909 4899
Note: See TracChangeset
for help on using the changeset viewer.