-
Notifications
You must be signed in to change notification settings - Fork 42
Motivation
Curtis Rueden edited this page Nov 3, 2015
·
4 revisions
The vision of ImageJ Ops is to extend Java's mantra of "write once, run anywhere" to image processing algorithms. Ops is a framework for reusable image processing algorithms, with the following design goals:
- Easy to use and extend. It is of paramount importance that there be a wealth of easy-to-use image processing operations ("ops"), as well as an easy framework for extending those ops in new directions. One of our observations from the workshops at the ImageJ Conference 2012 was that ImageJ still needs to do much more to realize such ease of use, both for users writing scripts, as well as for developers creating robust and reusable image processing algorithms.
- Powerful and general. An op should be able to consist of any number of typed input and output parameters, operating on arbitrary data structures, including images of N dimensions stored in a myriad of different ways: as files on disk, programmatically generated in memory, or in remote databases. Using the powerful ImgLib2 library achieves this ambitious goal.
- Very fast. Even though ImgLib2 is vastly more general than ImageJ 1.x's data model, that generality should not come at the expense of performance. Otherwise, users must pay a time tax to do the same things they could already do in ImageJ 1.x. The ImageJ Ops framework provides a means to override any general-but-slow op with a faster-but-more-specific alternative, fully transparently to the user.
When it comes to ease of use, generality and performance in computer programs, the usual rule of thumb is "pick two." Yet we are happy to say that we believe Ops strikes a favorable balance between all three criteria.