Skip to content
Snippets Groups Projects
Select Git revision
  • 6db8ed3ed376aa1921d6b9b8be66fa604e33207a
  • master default
  • mKymoUI
  • make-phantom
  • assignment_tracker
5 results

GoKymo.m

Blame
  • GoKymo.m 3.18 KiB
    
    function [imKymo LKymo iPath jPath bKymo]=GoKymo(iPath,jPath,bKymo,Movie_Name)
    
    
    R_KYMO=20;
    
    PathNorms=[];
    info = imfinfo(Movie_Name);
    nframes = length(info);
    im=(imread(Movie_Name,1));
    bTaken=0*im;
    LKymo=0*im;
    % hold off;imagesc(im);hold on;colormap(gray)
    
    for i=1:length(iPath) % iPath=y,jPath=x
        if isnan(bKymo(i,1))
            % y as dependent var
            mNorm=-1*bKymo(i,4);
        else
            mNorm=-1/bKymo(i,2);
        end
        
        [xi yi LKymo]=GetNormalLine(mNorm,jPath(i),iPath(i),R_KYMO,[size(im)],i,LKymo);
       
        PathNorms(i).xi=[xi ];
        PathNorms(i).yi=[yi];
        j=1;
    %     plot(round(PathNorms(i).xi),round(PathNorms(i).yi),'-r')
    end
    
    i=1;
    del=[];
    while i<=length(iPath)
        if isempty(find(LKymo==i))
           iPath(i)=[];
           jPath(i)=[];
           bKymo(i,:)=[];
           PathNorms(i)=[];
           for j=i+1:max(LKymo(:))
               npix=find(LKymo==j);
               LKymo(npix)=j-1;
           end
        else
            i=i+1;
        end
    end 
    
    
    % % interp
    for i=2:length(iPath)-1 % iPath=y,jPath=x
        if isnan(bKymo(i,1))
            % y as dependent var
            mNorm=-1*bKymo(i,4);
        else
            mNorm=-1/bKymo(i,2);
        end
        
        for step=0.05:0.05:0.5
            xi1=[];yi1=[];
            xi2=[];yi2=[];
            dx=jPath(i)-jPath(i-1);
            dy=iPath(i)-iPath(i-1);
            
            x1=jPath(i)-dx*step;
            y1=iPath(i)-dy*step;
            
            [xi1 yi1 LKymo]=GetNormalLine(mNorm,x1,y1,R_KYMO,[size(im)],i,LKymo);
    
            
            dx=jPath(i+1)-jPath(i);
            dy=iPath(i+1)-iPath(i);
            x2=jPath(i)+dx*step;
            y2=iPath(i)+dy*step;;
            [xi2 yi2 LKymo]=GetNormalLine(mNorm,x2,y2,R_KYMO,[size(im)],i,LKymo);
            PathNorms(i).xi=[ PathNorms(i).xi xi1 xi2 ];
            PathNorms(i).yi=[ PathNorms(i).yi yi1 yi2];
            
    %         plot(xi1,yi1,'-g')
    %         plot(xi2,yi2,'-b')
        end
        
    end
    
    
    imKymo=[]; istat=[]; stats=[0 Inf];PathMax=zeros(length(iPath),1);
    for t=1: nframes
        im=(imread(Movie_Name,t));
    
        if max(im(:))<stats(2)
            stats(2)=max(im(:));
        end
        if min(im(:))>stats(1)
            stats(1)= min(im(:));
        end
    end
    for t=1: nframes
        im=(imread(Movie_Name,t));
    %           im(im<stats(1))=stats(1);%
         im(im>stats(2))=stats(2);
        im=mat2gray(im);
        
        h = fspecial('gaussian', 7, 5);
        imfilt = imfilter(im, h, 'symmetric');
        for j=1:50
            imfilt = imfilter(imfilt, h, 'symmetric');
        end
        imhfreq = max((im - imfilt), zeros(size(im)));
        im = mat2gray(imhfreq);
    %     medim = medfilt2(imhfreq,[4,4]);
    %     
    %     medim = mat2gray(medim);
    %     im = medim;
    
        ii=[];
        for i=1:length(PathNorms) % iPath=y,jPath=x
                
            idxi=sub2ind(size(im),round(PathNorms(i).yi),round(PathNorms(i).xi));
            ipix=im(idxi) ; 
    %         ipix = medim(idxi) ; 
    
            if isempty(ipix),
                imKymo(i,t)= 0;
            else
                imKymo(i,t)= (max(ipix) - min(ipix));
            end
                    
        end
        
         drawnow
    end
    
    figure(88)
    set(88,'KeyPressFcn', @KeyPress);
    imKymo=imKymo/max(imKymo(:));
    imKymo=imcomplement(imKymo);
    imKymo=imKymo/max(imKymo(:));
    hold off
    imagesc(imKymo)
    axis image
    colormap(gray)
    
    end
    
    function KeyPress(src,eventdata)
        if ( strcmpi(eventdata.Key,'space') )
            close all;
            mKymoUI();
        end
    end