Hi all,
I have been enjoying getting familiar with the ImageJ/Fiji - Matlab interoperability afforded by MIJ. It seems like the speed of transferring data 2D images from Matlb to ImageJ is pretty speedy using MIJ.createImage (<1s / 80 MB). However, it is painfully slow (~10s / 80 MB) to pull the data back into ImageJ using MIJ.getImage. I am wondering if anyone has experience this and it there are any suggestions for transferring data from ImageJ to Matlab more efficiently. At the moment, it seems to be ~10x faster to instruct ImageJ to save the image to disk and have Matlab re-open the image, which seems a little odd. For reference I am running Winows 10 Pro, Java v8 Update 151 (build 1.8.0_151-b12), Matlab 2017b, ImageJ 1.51v, Fiji updates run including Matlab link. Thanks, Damon Matlab Code: addpath('C:\Users\.(obscured for privacy)...\Fiji.app\scripts'); % Update for your ImageJ installation as appropriate addpath(genpath('C:\Users\.(obscured for privacy)...\Fiji.app')); % Update for your ImageJ installation as appropriate addpath(genpath('C:\Users\.(obscured for privacy)...\Matlab_DropBox_tools')); % Update for your ImageJ installation as appropriate MIJ.start; pwd; currentFolder = pwd; tempPathMIJ = strcat('"',currentFolder,'\','bridge.tif"'); tempPathML = strcat(currentFolder,'\','tmp.tif'); tic; %Open Nikon ND2 files in a folder using BioFormates importer folder = 'Z:/matlabOpenND2'; %data fold on a NAS drive fList = dir(folder); fListCell = struct2cell(fList)'; fListCell = cellstr(fListCell(:,1)); nd2Index = find(contains(fListCell,'.nd2')); nd2List = fListCell(nd2Index); [status,msg,msgID] = mkdir(strrep(strcat(folder,'/AIF'),'\','/' )); %%parameter for fStack Extended Depth of Field ballSizes = [250 20 20]; bs = num2str(ballSizes(1)) ; alphas = [0.2 0.2 0.2]; nhsizes = [9 5 5]; progressbar('bkgd sub','channels','images') ; t0 = tic; for j = 1:length(nd2List) %for j = 1:2 startLap = tic; imgPath = strcat(folder,'\',nd2List(j) ); imgPath = strrep(imgPath,'\','/'); %Open ND2 image and store in 'data'. disp('time to read nd2') t1 = toc(t0); data = bfopen(imgPath{1,1}); f1 = data{1,1}{1,2}; %get file name of first slice of stack % parse slice name to determine # of channels and z slices semicolons = strfind(f1,';'); zText = f1(semicolons(2):semicolons(3)); nZ = str2double(zText(strfind(zText,'/')+1:end-1)); chText = f1(semicolons(3):end); nCh = str2double(chText(strfind(chText,'/')+1:end)); savePath = f1(1:semicolons(1)-1); slashes = strfind(savePath,'/'); savePath = savePath(1:slashes(length(slashes))); imgName = f1(1+slashes(length(slashes)):semicolons(1)-1); imgList = data{1,1}; %list of images stored a cell %cList = zeroes(nZ,nCh); progressbar([],[], j/length(nd2List)); %for each channel in ND2, throw images to ImageJ, create a Z stack and Rolling Ball %Subtract for i = 1:nCh cList(:,i) = imgList(i:nCh:end,1); %images are stored grouped by ch then z tic; for k = 1:nZ %send images for current channel to ImageJ for Rolling Ball if k == 1 MIJ.createImage('tmp', cList{k,i}, true); end if k > 1 MIJ.createImage('tmp2', cList{k,i}, true); MIJ.selectWindow("tmp2"); MIJ.run("Copy"); MIJ.run('Close'); MIJ.selectWindow("tmp"); MIJ.run("Add Slice"); MIJ.run("Paste"); end progressbar(k/(nZ*nCh),[],[]) ; end tDo(1) = toc; bs = strcat('Rolling=',num2str(ballSizes(i)), ' stack' ); MIJ.run("Subtract Background...", bs); MIJ.run("16-bit"); tDo(2) = toc; %save image to disk - faster than MIJ.getImage svPath = strcat('"path=[',tempPathML,']"'); MIJ.run('Save', svPath); MIJ.run('Close') tDo(3) = toc; data2 = bfopen(tempPathML); tDo(4) = toc; progressbar((k/nZ)-0.01,(i/nCh)-0.01,[]) ; disp(tDo) newName = replace(strcat(savePath,'AIF/',imgName),'.nd2','_AIF.tif'); fstackND2(data2{1,1}(:,1),'alpha',alphas(i),'nhsize',nhsizes(i)); if i==1 imwrite(ans,newName,'tif'); end if i>1 imwrite(ans,newName,'tif','WriteMode','append'); end tDo(5) = toc; disp(tDo) end lapTime(i) = toc(startLap); progressbar([],j/length(nd2List)) ; end tTotal = toc(t0); disp('All-in-focus analysis complete') -- Assistant Professor | Biomedical Physiology & Kinesiology | Simon Fraser University Member | Centre for Cell Biology, Development, and Disease | Simon Fraser University Tel: 778 782 9464 | Fax: 778 782 3040 | Office L8004 Mail to: Room K9625, 8888 University Drive, Burnaby BC V5A 1S6 http://www.sfu.ca/bpk/faculty_directory/poburko.html -- ImageJ mailing list: http://imagej.nih.gov/ij/list.html |
Free forum by Nabble | Edit this page |