This manuscript provides a technical overview of ImageJ2, including in-depth description of the architecture, with sections on SciJava Common, ImageJ Common, SCIFIO, ImageJ Ops, ImageJ Legacy, and the ImageJ Updater, as well as a discussion on how ImageJ2 improves upon key areas of functionality, extensibility, reproducibility, usability, performance, compatibility and community.
Background. ImageJ is an image analysis program extensively used in the biological sciences and beyond. Due to its ease of use, recordable macro language, and extensible plug-in architecture, ImageJ enjoys contributions from non-programmers, amateur programmers, and professional developers alike—a feat that arguably no other image analysis package, commercial or open source, has yet achieved. Enabling such a diversity of contributors has resulted in a unique community that spans the biological and physical sciences, making ImageJ an invaluable resource across countless disciplines. However, a rapidly growing user base, diverging plugin suites, and technical limitations have revealed a clear need for a concerted software engineering effort to support emerging imaging paradigms, to ensure the software’s ability to handle the requirements of modern science.
Results. Our goal was ambitious: to create a future-proof tool without sacrificing the existing community. We rebuilt ImageJ from the ground up, engineering a powerful plugin mechanism that facilitates extensibility at every level. This next-generation ImageJ, called “/software/imagej2” in places where the distinction matters, provides a host of new functionality. It separates concerns, fully decoupling the data model from the user interface. It emphasizes integration with external applications to maximize interoperability. Its robust new plugin framework allows everything from image formats, to scripting languages, to visualization to be extended by the community. The redesigned data model supports arbitrarily large, N-dimensional datasets, which are increasingly common in modern image acquisition. Despite the scope of these changes, backwards compatibility is maintained such that this new functionality can be seamlessly integrated with the classic ImageJ interface, allowing users and developers to migrate to these new methods at their own pace.
Conclusions. Scientific imaging benefits from open-source programs that advance new method development and deployment to a diverse audience. ImageJ has excelled in this regard; however, due to new and emerging challenges, it is at a critical development crossroads. The described improvements provide a framework adaptable to future needs, enabling continued success and innovation. Future efforts will focus on implementing new algorithms in this framework and expanding collaborations with other popular scientific software suites.