ImageJ plugins 

ImageJ is a really neat program for image processing, so it is very useful if you work with LEEM/PEEM images. And it runs in Linux, MacOSX, Windows, you name it. Nowadays it might be more fun to use the Fiji compilation (, which is actually based on ImageJ2. One problem is that, for me at least, Fiji is just too slow reading images, so we are stuck with using the two versions. Or using the raw import.

The file format of the proprietary UView format of Elmitec files with the original data of the Nanoscale manuscript includes a header of variable length depending on the version, and a block of  nx*ny (if the file has only one image of dimensions nx,ny) 16-bit integers with little endian byte order, i.e. the header is (total_file_size-2*nx*ny). As such it can be used by open source programs that open the format natively: 
  • Gxsm  (use menu option File->Open to Free Channel)
  • ImageJ with the plugins described below.
Or with any program that can open 16-bit images skipping a header such as ImageJ/Fiji using the Import->Raw option, selecting 16-bit, 1024x1024 pixels, 520 offset, little-endian bye order.

I finally made a plugin in the "new-style" good for Fiji and ImageJ2, whose source you can find in the github repository: Just copy the .jar file under into the plugins folder and restart Fiji/ImageJ2. You should be able to open the Elmitec .dat files without any import option. Regretably, Fiji is a moving target at lately the plugin has stopped working.

 Fiji, ImageJ2

First there is a scifio-io plugin to read Elmitec UView .dat files used in many LEEM microscopes. It reads quite a bit of the metadata, but so far I do not know how to access that from ImageJ. You can view it by openning the console window, however. Remeber you have to select "use SCIFIO when opening files (BETA!)" in the Edit/Options/ImageJ2.

Then there are several plugins under the Plugins/LEEMandPEEM:

  • GetXYZmag: convert from a skew axis three images into a XYZ reference frame, assuming each image is the component of a vector along the given direction. Used mostly to recover XYZ data from several XMCD-PEEM images acquired at different angles. The last version spits out a multichannel image where the X,Y and Z component correspond to the first, second and third channel of the resulting image. One nice point is that if you turn on "Image->Color->Make Composite" and obtain a neat color composite view of the three components. 
  • toSpherical: convert three images assummed to be the XYZ components of a vector into three images which correspond to the spherical coordinates.
  • writeOVF: interpret three images as XYZ components of the magnetization and save them into an OVF file. OVF is typically used in micromagnetic simulation programs, such as OOMMF or MuMax3, and viewers such as MuView.
  • readOVF: open an OVF 2.0 file (Binary, Binary 8 or text) as a multichannel image stack. The channels correspond to the X,Y and Z vector component of the magnetization.

 The source for both the LEEMandPEEM plugins and scifio-Uview is at git:

The easiest way to install them is to add the Jufiba repository to Fiji: Go to "Help->Update", and press the "Manage Update Sites" button. From there press the "Add update site" button, which will add a "New" line. Change the name to something else more useful ("LEEMandPEEM") and put in the URL box. This will add (or update when launching the Fiji "Help->update" update in the future) the plugins for reading the UView files and the LEEMandPEEM ones. If the server is down, or you do not want to bother, just download the jar files for the Uview plugin and the jar for the LEEMandPEEM plugins here, and drop them in the plugins folder.


Old ImageJ (ImageJ1)

Here you can find plugins (which are really basic!) for opening:

  • Elmitec UView .dat files (or sequence of files) and  from ImageJ1 (the old ImageJ). The UView format is historically called UKSOFT2001 (it was used originally for STM pictures). 
  • Gxsm files. Gxsm is actually just the Netcdf standard, so you will also need to copy a few of the Java netcdf files.

For Elmitec files, you only need Open_UKSOFT2001 and HandleExtraFileTypes. Limitations: no metafile whatsoever, only one image per file. On a positive side, it now should be proofed against further changes in the Uview version (drop me a mail if you find a problem): I am using the dirty trick of computing the offset to read the binary data taking into account the end of the file and the size instead of trying to parse the headers.

For Gxsm, you will all of them including the netcdf files. Just put the required compiled files (class and/or jar) in the plugins/Input-Output folder, and restart ImageJ.

I know that java is supposed to be "compile once", but for misterious reasons, I usually have to recompile the input-output plugins, YMMV. If you have to do so, just copy the java files to the same places, and do plugin/compileandrun first on the Open* files, and then on the HandleExtraFileTypes file.

Also here you have some small filter plugins which are convenient to play with STM images (anywhere in the plugins folder):