Code covered by the BSD License  

Highlights from
imread for multiple life science image file formats

image thumbnail

imread for multiple life science image file formats

by

 

16 Sep 2011 (Updated )

imports images and metadata using the LOCI Bioformats package

[vol]=imreadBF(datname,zplanes,tframes,channel)
function [vol]=imreadBF(datname,zplanes,tframes,channel)
%[vol]=imreadBF(datname,zplanes,tframes,channel)
%
%imports images using the BioFormats package
%you can load multiple z and t slices at once, e.g. zplanes=[1 2 5] loads
%first,second and fifth z-slice in a 3D-Stack 
%
%if loading multiple z slices and tframes, everything is returned in one 3D
%Stack with order ZT. Only one channel can be imported at once
%
%use imreadBFmeta() to get corresponding metadata of the image file
%
%To use the function, you have to download loci_tools.jar here: http://www.loci.wisc.edu/bio-formats/downloads
%make sure to have copied the file loci_tools.jar, in the folder where the
%function is placed (or to your work folder)
%
%
%
% For static loading, you can add the library to MATLAB's class path:
%     1. Type "edit classpath.txt" at the MATLAB prompt.
%     2. Go to the end of the file, and add the path to your JAR file
%        (e.g., C:/Program Files/MATLAB/work/loci_tools.jar).
%     3. Save the file and restart MATLAB.
%
%modified from bfopen.m
%christoph moehl 2011, cmohl@yahoo.com



path = fullfile(fileparts(mfilename('fullpath')), 'loci_tools.jar')
javaaddpath(path);

if exist('lurawaveLicense')
    path = fullfile(fileparts(mfilename('fullpath')), 'lwf_jsdk2.6.jar');
    javaaddpath(path);
    java.lang.System.setProperty('lurawave.license', lurawaveLicense);
end

% check MATLAB version, since typecast function requires MATLAB 7.1+
canTypecast = versionCheck(version, 7, 1);

% check Bio-Formats version, since makeDataArray2D function requires trunk
bioFormatsVersion = char(loci.formats.FormatTools.VERSION);
isBioFormatsTrunk = versionCheck(bioFormatsVersion, 5, 0);

% initialize logging
loci.common.DebugTools.enableLogging('INFO');








r = loci.formats.ChannelFiller();
r = loci.formats.ChannelSeparator(r);
r.setId(datname);

width = r.getSizeX();
height = r.getSizeY();
pixelType = r.getPixelType();

bpp = loci.formats.FormatTools.getBytesPerPixel(pixelType);
fp = loci.formats.FormatTools.isFloatingPoint(pixelType);
little = r.isLittleEndian();
sgn = loci.formats.FormatTools.isSigned(pixelType);



channel=channel-1;
zplane=zplanes-1;
tframe=tframes-1;



vol=zeros(height,width,length(zplane)*length(tframe));
zahler=0;
    for j=1:length(tframe)

        for i=1:length(zplane)
            %['importing file via bioFormats\\ ',num2str(100*zahler/(length(tframe)*length(zplane))),'%']

            index=r.getIndex(zplane(i),channel,tframe(j));
            plane = r.openBytes(index);
            zahler=zahler+1;
            arr = loci.common.DataTools.makeDataArray2D(plane, ...
                        bpp, fp, little, height);
            vol(:,:,zahler)=arr;

        end

    end
    
    
end
    
    
    
function [result] = versionCheck(v, maj, min)

tokens = regexp(v, '[^\d]*(\d+)[^\d]+(\d+).*', 'tokens');
majToken = tokens{1}(1);
minToken = tokens{1}(2);
major = str2num(majToken{1});
minor = str2num(minToken{1});
result = major > maj || (major == maj && minor >= min);
end    
    
            
            
            
            
            
  
            
            

        
   
   
   
   
   
            
            

Contact us