README : ImageJ plugins for mosaic processing License Agreement: /**************************************************************************** NCMIR software is not intended for commercial purposes and may not be used for commercial gain. Open Source Licensing This software is free; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. The software is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. The software provided herein is on an “as is” basis, and the University of California has no obligation to provide maintenance, support, updates, enhancements, or modifications. See the GNU General Public License for more details. For a copy of the GNU General Public License, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. NCMIR hereby disclaims all copyright interest in the programs. ******************************************************************************/ Important note: Some development work will be necessary to adapt the mosaic processing software to a specific microscope setup. In its current state, the mosaic processing software will only process data acquired by the NCMIR customized versions of the RTS 2000 and the Olympus FV 1000 microscopes as well mosaics acquired with an Olympus FV 1000 microscope using PAPP. For all other configuration see below for details. Summary: The set of ImageJ plugins included in this distribution form the mosaic processing software we use at NCMIR to process our large-scale brain maps and mosaics. The reason the software exists as ImageJ plugins is largely due to legacy and uses very little of the ImageJ functionality. Instead, the plugins makes substantial use of the Java Advanced Imaging and Image I/O libraries for most of the image processing and file io. Consequently, image files created with the mosaic processing pipeline generally are not fully compatible with the built-in functionality of ImageJ. The plugins consist of 5 main components and they are: 1. MEPreprocess (MEMosaic_.java) 2. MEManual_Align (MEManual_Align.java) 3. MENormalize_ (MENormalize_.java) 3. MECombine_ (MECombine_.java) 4. MERGB_File_Merge (MERGB_File_Merge.java) 5. METiled_Display (METiled_Display.java) MEPreprocess is responsible for the initial preprocessing of the dataset. Image stacks in z are maximum intensity projected, and different image channels are sorted into their respective folders. MEManual_Align then allows a user to provide a course refinement on the default positions of images in the mosaic. If the dataset is large enough and expresses uneven illumination across a single field of view, normalization of the illumination may be attempted with MENormalize_. The auto-alignment and stitching of individual field of views into a single wide-field mosaic is performed with MECombine_. Stitched mosaics for each channel may be combined back into a RGB (color) image with MERGB_File_Merge and saved in a variety of different image formats. Images saved in non-compressed tiffs (the normal situation) may be viewed with METiled_Display. In addition to processing a single mosaic, the mosaic plugins are capable of processing multiple mosaics and time series data. Whether these features are used is up to the developer implementing the necessary interfaces. Currently the only processing plugin that is not time series data compatible is MENormalize_. More information regarding the mosaic process can be found at: http://ncmir.ucsd.edu/~skchow/mosaicprocess.html and S Chow, H Hakozaki, DL Price, NAB MacLean, TJ Deerinck, JC Bouwer, ME Martine, ST Peltier & MH Ellisman. Automated microscopy system for mosaic acquisition and processing, Journal of Microscopy, Volume 222 Page 76 - May 2006 Requirements: Java 1.5 + (Developed and tested with JDK 1.5.0.06) Java Advanced Imaging 1.1.2 (http://java.sun.com/products/java-media/jai/) Java Advanced Imaging Image I/O Tools 1.0_01 (http://java.sun.com/products/java-media/jai/) JadeDisplay (http://www.openchannelfoundation.org/projects/JadeDisplay/) Kakadu example programs 5.1.1 (for jpeg2000 support) (http://www.kakadusoftware.com) Ant & Cygwin (to build the files) (http://ant.apache.org/bindownload.cgi) (http://www.cygwin.com/) Instructions to build (Windows only, though it should be easy to adapt these build instructions to other systems as well.): 1. Have cygwin and ant set up properly on build system. 2. Be sure that the dlls in lib/JAI are referenced on the system path. 3. Check to make sure the following jar files are in the classpath: jai_codec.jar, jai_core.jar, jai_imageio.jar, mlibwrapper_jai.jar, clibwrapper_jiio.jar 4. Rename build-mosaic.xml to build.xml 5. type ant all on the cygwin prompt. Developer Notes: As mentioned earlier, some development work will be necessary in order for the mosaic processing software distributed in this program to work for a particular microscope setup. This task is made considerably easier however, given the architecture of the system. To extend this software package for a new microscope system, you will need to implement an interface that tells the rest of the software package what it needs to know about a dataset, and how to treat each image in the dataset in relation to the mosaic. The interface is called ncmir_plugins.lib.jai_io.MosaicImageInterface and examples on some implementations of the interface can be found in ncmir_plugins.lib.jai_io.MosaicOlympusXML.java ncmir_plugins.lib.jai_io.MosaicIMG.java . Please take a look at those respective files to see how the implementation should be done. Finally, once a concrete implementation has been created, modifications will be needed in ncmir_plugins.lib.jai_io.MosaicImageInterfaceFactory.java to map a specific file type to a specific implementation of MosaicImageInterface. The images currently are supported are 8 or 16 bit images. RGB images will first have to be broken into its component channels to be processed.