Select Git revision
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