Endrov and ImgLib
Endrov has experimental bindings for ImgLib. By writing image processing algorithms using this library, they can be abstracted away from the underlying types and container format. It is also a step toward being able to share plugins with ImageJ.
- The classes can be found in endrov/imglib/.
- Examples of plugins using ImgLib are the Plate Analysis system and the Resolution configurator (auto-detection).
Work to be done
There are several concerns about ImgLib and how it should be properly integrated:
- Generating a dependency graph is hard. This is required to be able to release memory efficiently during lazy evaluation
- The algorithms have no concept of locking underlying image subsets, another prerequisite for laziness
- There are no hooks for following the calculation progress or canceling the calculation (killing the thread is the only way, but generally shunned as a solution)
- The basic image object in Endrov is a single "monochrome" channel. ImgLib on the other hand does color channels and complex numbers. This is likely easy to solve however
- Endrov channels are designed to be able to work together but, unlike ImgLib, have different framerates and timings. This can be solved using interpolator strategies but leaves open how to best represent "the number of channels".
It is likely that many of these problems have to be solved through modifications to ImgLib itself. However, more experience of ImgLib-Endrov is needed before taking this drastic measure.