Figure 1 illustrates one way to take advantage of these new options: starting from a MATLAB script developed to register a low-resolution H&E image with a high-resolution second-harmonic generation (SHG) image, we convert script inputs and outputs to This effectively turned our MATLAB script into a SciJava module, executable in any SciJava application. The value of ImageJ-MATLAB is in the expanded toolkit that comes with unifying two powerful applications. For example, KNIME Image Processing (KNIP)-the flagship image analysis toolbox built on the KNIME Analytics platform ( Berthod et al., 2008)-integrates with the ImageJ Common data model, and will soon automatically expose parameterized MATLAB scripts as KNIME nodes. In both use cases, a foundation in the SciJava Converter framework will allow ImageJ-MATLAB to grow over time and impact applications beyond ImageJ. From within MATLAB, the fixed, built-in commands of MIJ are now defined through extensible MATLABCommands, allowing developers to easily contribute new functionality. ImageJ users can now leverage the power of MATLAB without opening a new application. ImageJ-MATLAB is the next logical evolution of the original MIJ/Miji compatibility layer. For the MATLAB perspective, we created a MATLABCommand plugin type and paired ‘ImageJ.m’ startup script to provide ImageJ utility functions from the MATLAB command prompt. On the ImageJ side, a ScriptLanguage plugin allows execution of ‘.m’ scripts directly in the ImageJ script editor with a convenient shorthand to convert active images to matrices.
The next layers focus on how to expose the aforementioned Converters to the user.
Both directions of conversion use the third-party MATLABControl library ( /) to manage interaction with a MATLAB instance. The foundation of ImageJ-MATLAB consists of two Converter plugins: enabling ImageJ Datasets and MATLAB matrices to be freely exchanged within the SciJava framework. Practically, ImageJ-MATLAB consists of the imagej-matlab and scripting-matlab libraries. To unify these models, ImageJ-MATLAB is implemented as a SciJava plugin suite-on which ImageJ itself is built. The fundamental data models of ImageJ and MATLAB are, respectively, Datasets-built on ImgLib2 ( Pietzsch et al., 2012)-and matrices. In providing researchers the ability to call MATLAB scripts from ImageJ, and adding a new level of extensibility to the functionality established in MIJ, we hope to strengthen the bond between the ImageJ and MATLAB communities, enabling broader impact for scientific achievement while avoiding unnecessary duplications of effort. Empowered by recent ImageJ2 efforts ( Schindelin et al., 2015), including the availability of the SciJava plugin framework, ImageJ-MATLAB provides an extensible and bidirectional bridge for mutual exchange of data between these two environments. The most successful prior attempt in this vein is MIJ/Miji ( Sage et al., 2012), a utility collection for launching ImageJ 1.x from within MATLAB and importing images to the workspace. In this article we present ImageJ-MATLAB: providing new options for interoperability between ImageJ ( Schneider et al., 2012), a widely used image analysis application, and MATLAB, a ubiquitous tool particularly popular with the signal processing community. A proliferation in scientific data analysis tools ( The Popularity of Data Analysis Software, 2012) leads to fragmentation: no one option can offer a complete solution.