Changeset 950 for trunk/src/series


Ignore:
Timestamp:
Jun 11, 2016, 9:32:29 PM (8 years ago)
Author:
sommeria
Message:

various updates

Location:
trunk/src/series
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/series/civ_series.m

    r949 r950  
    283283if iview_A~=0
    284284    XmlFileName=find_imadoc(RootPath_A,SubDir_A,RootFile_A,FileExt_A);
    285     time=[];
     285    Time=[];
    286286    if ~isempty(XmlFileName)
    287287        XmlData=imadoc2struct(XmlFileName);
    288288        if isfield(XmlData,'Time')
    289             time=XmlData.Time;
     289            Time=XmlData.Time;
    290290            TimeSource='xml';
    291291        end
     
    302302        end
    303303    end
    304     if isempty(time) && ~isempty(find(strcmp(FileType_A,{'mmreader','video'})))% case of video input
    305         time=zeros(FileInfo_A.NumberOfFrames+1,2);
    306         time(:,2)=(0:1/FileInfo_A.FrameRate:(FileInfo_A.NumberOfFrames)/FileInfo_A.FrameRate)';
     304    if isempty(Time) && ~isempty(find(strcmp(FileType_A,{'mmreader','video'})))% case of video input
     305        Time=zeros(FileInfo_A.NumberOfFrames+1,2);
     306        Time(:,2)=(0:1/FileInfo_A.FrameRate:(FileInfo_A.NumberOfFrames)/FileInfo_A.FrameRate)';
    307307        TimeSource='video';
    308308        ColorType='truecolor';
    309309    end
    310     if isempty(time)% time = index i +0.001 index j by default
     310    if isempty(Time)% Time = index i +0.001 index j by default
    311311        %MinIndex_i=min(i1_series_Civ1);
    312312        MaxIndex_i=max(i2_series_Civ1);
    313313        %MinIndex_j=min(j1_series_Civ1);
    314314        MaxIndex_j=max(j2_series_Civ1);
    315         time=(1:MaxIndex_i)'*ones(1,MaxIndex_j);
    316         time=time+0.001*ones(MaxIndex_i,1)*(1:MaxIndex_j);
    317         time=[zeros(1,MaxIndex_j);time];% insert a first line of zeros
    318         time=[zeros(MaxIndex_i+1,1) time];% insert a first column of zeros
     315        Time=(1:MaxIndex_i)'*ones(1,MaxIndex_j);
     316        Time=Time+0.001*ones(MaxIndex_i,1)*(1:MaxIndex_j);
     317        Time=[zeros(1,MaxIndex_j);Time];% insert a first line of zeros
     318        Time=[zeros(MaxIndex_i+1,1) Time];% insert a first column of zeros
    319319    end
    320320   
     
    438438            end
    439439            if strcmp(Param.ActionInput.ListCompareMode,'displacement')
    440                 Data.Civ1_Time=time(i2+1,j2+1);% the time is the time of the secodn image
    441                 Data.Civ1_Dt=1;% time interval is 1, to yield displacement instead of velocity=displacement/Dt at reading
     440                Data.Civ1_Time=Time(i2+1,j2+1);% the Time is the Time of the secodn image
     441                Data.Civ1_Dt=1;% Time interval is 1, to yield displacement instead of velocity=displacement/Dt at reading
    442442            else
    443             Data.Civ1_Time=(time(i2+1,j2+1)+time(i1+1,j1+1))/2;% the time is the time at the middle of the image pair
    444             Data.Civ1_Dt=time(i2+1,j2+1)-time(i1+1,j1+1);
     443            Data.Civ1_Time=(Time(i2+1,j2+1)+Time(i1+1,j1+1))/2;% the Time is the Time at the middle of the image pair
     444            Data.Civ1_Dt=Time(i2+1,j2+1)-Time(i1+1,j1+1);
    445445            end
    446446            for ilist=1:length(list_param)
     
    736736                Civ2_Dt=1;
    737737            else
    738                 Civ2_Dt=time(i2_civ2+1,j2_civ2+1)-time(i1_civ2+1,j1_civ2+1);
     738                Civ2_Dt=Time(i2_civ2+1,j2_civ2+1)-Time(i1_civ2+1,j1_civ2+1);
    739739            end
    740740        end
     
    761761            Data.Civ2_ImageB=ImageName_B;
    762762             if strcmp(Param.ActionInput.ListCompareMode,'displacement')
    763                 Data.Civ2_Time=time(i2_civ2+1,j2_civ2+1);% the time is the time of the secodn image
    764                 Data.Civ2_Dt=1;% time interval is 1, to yield displacement instead of velocity=displacement/Dt at reading
     763                Data.Civ2_Time=Time(i2_civ2+1,j2_civ2+1);% the Time is the Time of the secodn image
     764                Data.Civ2_Dt=1;% Time interval is 1, to yield displacement instead of velocity=displacement/Dt at reading
    765765             else
    766             Data.Civ2_Time=(time(i2_civ2+1,j2_civ2+1)+time(i1_civ2+1,j1_civ2+1))/2;
     766            Data.Civ2_Time=(Time(i2_civ2+1,j2_civ2+1)+Time(i1_civ2+1,j1_civ2+1))/2;
    767767            Data.Civ2_Dt=Civ2_Dt;
    768768             end
  • trunk/src/series/sub_background.m

    r924 r950  
    340340        if Param.ActionInput.CheckLevelTransform
    341341            C=levels(Acor);
    342             imwrite(C,newname,'BitDepth',8); % save the new image
     342            imwrite(C,newname,'BitDepth',16); % save the new image
    343343        else
    344344            if isequal(FileInfo{1}.BitDepth,16)
     
    393393                if Param.ActionInput.CheckLevelTransform
    394394                    C=levels(Acor);
    395                     imwrite(C,newname,'BitDepth',8); % save the new image
     395                    imwrite(C,newname,'BitDepth',16); % save the new image
    396396                else
    397397                    if isequal(FileInfo{1}.BitDepth,16)
     
    421421        if Param.ActionInput.CheckLevelTransform
    422422            C=levels(Acor);
    423             imwrite(C,newname,'BitDepth',8); % save the new image
     423            imwrite(C,newname,'BitDepth',16); % save the new image
    424424        else
    425425            if isequal(FileInfo{1}.BitDepth,16)
     
    435435end
    436436
    437 
    438437function C=levels(A)
    439 %whos A;
    440 B=double(A(:,:,1));
    441 windowsize=round(min(size(B,1),size(B,2))/20);
    442 windowsize=floor(windowsize/2)*2+1;
    443 ix=1/2-windowsize/2:-1/2+windowsize/2;%
    444 %del=np/3;
    445 %fct=exp(-(ix/del).^2);
    446 fct2=cos(ix/(windowsize-1)/2*pi/2);
    447 %Mfiltre=(ones(5,5)/5^2);
    448 %Mfiltre=fct2';
    449 Mfiltre=fct2'*fct2;
    450 Mfiltre=Mfiltre/(sum(sum(Mfiltre)));
    451 
    452 C=filter2(Mfiltre,B);
    453 C(:,1:windowsize)=C(:,windowsize)*ones(1,windowsize);
    454 C(:,end-windowsize+1:end)=C(:,end-windowsize+1)*ones(1,windowsize);
    455 C(1:windowsize,:)=ones(windowsize,1)*C(windowsize,:);
    456 C(end-windowsize+1:end,:)=ones(windowsize,1)*C(end-windowsize,:);
    457 C=tanh(B./(2*C));
    458 [n,c]=hist(reshape(C,1,[]),100);
    459 % figure;plot(c,n);
    460 
    461 [m,i]=max(n);
    462 c_max=c(i);
    463 [dummy,index]=sort(abs(c-c(i)));
    464 n=n(index);
    465 c=c(index);
    466 i_select = find(cumsum(n)<0.95*sum(n));
    467 if isempty(i_select)
    468     i_select = 1:length(c);
    469 end
    470 c_select=c(i_select);
    471 n_select=n(i_select);
    472 cmin=min(c_select);
    473 cmax=max(c_select);
    474 C=(C-cmin)/(cmax-cmin)*256;
    475 C=uint8(C);
     438
     439nblock_y=100;%2*Param.TransformInput.BlockSize;
     440nblock_x=100;%2*Param.TransformInput.BlockSize;
     441[npy,npx]=size(A);
     442[X,Y]=meshgrid(1:npx,1:npy);
     443
     444%Backg=zeros(size(A));
     445%Aflagmin=sparse(imregionalmin(A));%Amin=1 for local image minima
     446%Amin=A.*Aflagmin;%values of A at local minima
     447% local background: find all the local minima in image subblocks
     448fctblock= inline('median(x(:))');
     449Backg=blkproc(A,[nblock_y nblock_x],fctblock);% take the median in  blocks
     450fctblock= inline('mean(x(:))');
     451B=imresize(Backg,size(A),'bilinear');% interpolate to the initial size image
     452A=(A-B);%substract background
     453AMean=blkproc(A,[nblock_y nblock_x],fctblock);% take the mean in  blocks
     454fctblock= inline('var(x(:))');
     455AVar=blkproc(A,[nblock_y nblock_x],fctblock);% take the mean in  blocks
     456Avalue=AVar./AMean% typical value of particle luminosity
     457Avalue=imresize(Avalue,size(A),'bilinear');% interpolate to the initial size image
     458C=uint16(1000*tanh(A./(2*Avalue)));
     459%Bmin=blkproc(Aflagmin,[nblock_y nblock_x],sumblock);% find the number of minima in blocks
     460%Backg=Backg./Bmin; % find the average of minima in blocks
     461% function C=levels(A)
     462% %whos A;
     463% B=double(A(:,:,1));
     464% windowsize=round(min(size(B,1),size(B,2))/20);
     465% windowsize=floor(windowsize/2)*2+1;
     466% ix=1/2-windowsize/2:-1/2+windowsize/2;%
     467% %del=np/3;
     468% %fct=exp(-(ix/del).^2);
     469% fct2=cos(ix/(windowsize-1)/2*pi/2);
     470% %Mfiltre=(ones(5,5)/5^2);
     471% %Mfiltre=fct2';
     472% Mfiltre=fct2'*fct2;
     473% Mfiltre=Mfiltre/(sum(sum(Mfiltre)));
     474%
     475% C=filter2(Mfiltre,B);
     476% C(:,1:windowsize)=C(:,windowsize)*ones(1,windowsize);
     477% C(:,end-windowsize+1:end)=C(:,end-windowsize+1)*ones(1,windowsize);
     478% C(1:windowsize,:)=ones(windowsize,1)*C(windowsize,:);
     479% C(end-windowsize+1:end,:)=ones(windowsize,1)*C(end-windowsize,:);
     480% C=tanh(B./(2*C));
     481% [n,c]=hist(reshape(C,1,[]),100);
     482% % figure;plot(c,n);
     483%
     484% [m,i]=max(n);
     485% c_max=c(i);
     486% [dummy,index]=sort(abs(c-c(i)));
     487% n=n(index);
     488% c=c(index);
     489% i_select = find(cumsum(n)<0.95*sum(n));
     490% if isempty(i_select)
     491%     i_select = 1:length(c);
     492% end
     493% c_select=c(i_select);
     494% n_select=n(i_select);
     495% cmin=min(c_select);
     496% cmax=max(c_select);
     497% C=(C-cmin)/(cmax-cmin)*256;
     498% C=uint8(C);
Note: See TracChangeset for help on using the changeset viewer.