diff --git a/src/matlab/GetKymoPt.m b/src/matlab/GetKymoPt.m index 03724c601b286f171267b600fec39a1554b088cd..cf7b41a780836034ae23eb6223179560b92d2c2d 100644 --- a/src/matlab/GetKymoPt.m +++ b/src/matlab/GetKymoPt.m @@ -4,7 +4,7 @@ function arcPoints = GetKymoPt(imagePoints) arcPoints = zeros(1,size(imagePoints,1)); for i=1:size(imagePoints,1) - arcPoints(i) = Trace.LKymo(imagePoints(i,1),imagePoints(i,2)); + arcPoints(i) = Trace.LKymo(round(imagePoints(i,1)),round(imagePoints(i,2))); if ( arcPoints(i) == 0 ) dd = (Trace.jPath - double(imagePoints(i,2))).^2 + (Trace.iPath - double(imagePoints(i,1))).^2; [mindist arcPoints(i)] = min(dd); diff --git a/src/matlab/GetPath.m b/src/matlab/GetPath.m index c9bb1e369ce9e93be92a6879782b73d33ee2a836..a286daa96b7c7ec02e957cb5f04786688e528345 100644 --- a/src/matlab/GetPath.m +++ b/src/matlab/GetPath.m @@ -44,10 +44,10 @@ colormap(gray);hold all plot(p1(2),p1(1),'ro') plot(p2(2),p2(1),'bx') drawnow -progressbar(0); +Progressbar(0); gIm=sparse([],[],[],prod(size(im)),prod(size(im)),8*sum(size(im))); for i=2:size(im,1)-1 - progressbar(i/size(im,1)); + Progressbar(i/size(im,1)); for j=2:size(im,2)-2 if 0==im(i,j),continue,end for ni=-1:1 @@ -77,8 +77,8 @@ for i=2:size(im,1)-1 end end end -progressbar(1); -path(path,'..\matlab_bgl') +Progressbar(1); + ind1=sub2ind(size(im),p1(1),p1(2)); ind2=sub2ind(size(im),p2(1),p2(2)); options.target=ind2; diff --git a/src/matlab/GoKymo.m b/src/matlab/GoKymo.m index 5c5438d130c8689d2bfab5fd5a14cafe210d9c2b..914e60ac889ad4f6160d28b4337cf3b054f67cf9 100644 --- a/src/matlab/GoKymo.m +++ b/src/matlab/GoKymo.m @@ -99,15 +99,17 @@ for t=1: nframes 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))); + 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 diff --git a/src/matlab/mKymoUI.m b/src/matlab/mKymoUI.m index 35f3f070004ac19bfe4a7a31433aa2c6a82e67a0..383debfcb82463fcf8a7f8168c225ec7d77b7814 100644 --- a/src/matlab/mKymoUI.m +++ b/src/matlab/mKymoUI.m @@ -37,23 +37,49 @@ CONSTANTS.pixelSize = str2double(movProps{1}); CONSTANTS.frameTime = str2double(movProps{2}); CONSTANTS.expTime = str2double(movProps{3}); -FileNameGFP=0; -[FileNameGFP,PathNameGFP] = uigetfile([PathNameGFP '*.tif'],'open gfp file to generate path'); -if (0==FileNameGFP) +% FileNameGFP=0; +% [FileNameGFP,PathNameGFP] = uigetfile([PathNameGFP '*.tif'],'open gfp file to generate path'); +% if (0==FileNameGFP) +% close all; +% return; +% end + +[FileNameGFP,PathNameGFP] = uigetfile([PathNameGFP '*.tif'],'open movie and gfp files to generate path', 'MultiSelect','on'); +if ( iscell(FileNameGFP) ) + imGFP = loadAveragedImage(fullfile(PathNameGFP, FileNameGFP{1})); + for i=2:length(FileNameGFP) + imGFP = imGFP + loadAveragedImage(fullfile(PathNameGFP, FileNameGFP{i})); + end +elseif ( FileNameGFP == 0 ) close all; return; +else + imGFP = loadAveragedImage(fullfile(PathNameGFP, FileNameGFP)); end save('mKymoUI_settings.mat','PathNameGFP', 'CONSTANTS'); -gfpFile=fullfile(PathNameGFP, FileNameGFP); -[imGFP]=imread(gfpFile); +% gfpFile=fullfile(PathNameGFP, FileNameGFP); +% [imGFP]=imread(gfpFile); hold off imagesc(imGFP);colormap gray hold on end +function avgIm = loadAveragedImage(imagePath) + iminfo = imfinfo(imagePath); + + avgIm = zeros(iminfo(1).Height, iminfo(1).Width); + + for i=1:length(iminfo) + im = double(imread(imagePath, i)); + avgIm = avgIm + im; + end + + avgIm = mat2gray(avgIm); +end + function ButtonDown(src,eventdata) global ptProximal ptDistal imGFP; @@ -84,6 +110,15 @@ global ptProximal ptDistal imGFP gfpFile CONSTANTS Trace Hulls HashedHulls Blur if (strcmp(eventdata.Key,'return')) [iPath,jPath,bKymo] = GetPath(imGFP,round(ptProximal),round(ptDistal)); + if ( isempty(jPath) ) + [iPath,jPath,bKymo] = mkLinePath(round(ptProximal),round(ptDistal)); +% msgHandle = msgbox('Unable to find path between specified points.'); +% uiwait(msgHandle); +% return; + end + + plot(jPath, iPath, '-b'); + ff=dir('mKymoUI_settings.mat'); if ~isempty(ff) load('mKymoUI_settings.mat'); @@ -95,7 +130,6 @@ if (strcmp(eventdata.Key,'return')) ['open movie file to generate kymograph for gfp file ' gfpFile]); if ( FileNameMovie == 0 ) - close all; return; end @@ -164,5 +198,25 @@ elseif ( strcmpi(eventdata.Key,'space') ) end end +function [iPath, jPath, bKymo] = mkLinePath(ptProximal, ptDistal) + startX = ptProximal(2); + endX = ptDistal(2); + + startY = ptProximal(1); + endY = ptDistal(1); + numX = round(abs(endX - startX)); + + slope = (endY - startY) / numX; + intercept = startY - slope*startX; + + stepX = sign(endX - startX); + + jPath = round(startX:stepX:endX); + iPath = round(slope*jPath + intercept); + + bKymo = nan*ones(length(iPath),4); + bKymo(:,3:4) = ones(length(iPath),1)*[slope intercept]; +end +