This is an archive of the old MediaWiki-based ImageJ wiki. The current website can be found at imagej.net.
Same Slice in Multiple Images
Purpose
An example JRuby script, which needs to be customized to be useful to you - the source code is here.
Code
# This is an example that find all the image.bin.gz files from channel # 01 under a directory and makes an image stack of all the slices # numbered 23. If this might be useful to you, copy the file and # customize the bits preceded with "CHANGEME": include_class 'util.BatchOpener' # CHANGEME: directory = '/Volumes/LaCie/corpus/central-complex/biorad/reformatted' # CHANGEME: match = /01_warp/ # CHANGEME: def filename_to_slicename(f) # Take the name of the parent directory: f.gsub( /\/([^\/]+)\/[^\/]+$/, '\1' ) end unless FileTest.directory? directory error = "Couldn't find directory '#{directory}" + "You probably need to customize the script." ij.IJ.error error exit(-1) end images = `find #{directory} -name 'image.bin.gz' -print0`.split("\0") images = images.grep if images.empty? ij.IJ.error "No images found. You probably need to customize the script." exit(-1) end slice_to_get = 23 width = -1 height = -1 depth = -1 stack = nil images.each do |f| i = BatchOpener.openFirstChannel f if width < 0 width = i.getWidth height = i.getHeight depth = i.getStackSize stack = ij.ImageStack.new width, height else unless width = i.getWidth && height == i.getHeight && depth == i.getStackSize ij.IJ.error "The image #{i.getTitle} didn't have matching dimensions" exit(-1) end end slice_name = filename_to_slicename f processor = i.getStack.getProcessor( slice_to_get ) stack.addSlice slice_name, processor i.close end result = ImagePlus.new "All slices numbered #{slice_to_get}", stack result.show