We are happy to announce the first stable release version of the ImgLib2 core library!
Like the SciJava and ImageJ2 projects, ImgLib2 releases now follow the semantic versioning scheme. Also, the project and git repository structure has changed. The main imglib repository has been split into multiple repositories, named consistently with the artifact names and java package prefixes. Projects are now coupled using non-SNAPSHOT versions, in order to achieve reproducible builds.
For further technical details on project structure, see the Architecture page.
Before coming out of beta, we have made several last-minute changes to the code:
@Deprecatedmethods and classes have been removed.
- All metadata handling (formerly
imglib2-metasubproject) is being moved into imagej-common. From ImgLib2 core, the classes
Axiswere moved to imagej-common.
- The current ROI representation was not considered stable enough to be included in a release. The
net.imglib2.labelingpackages were moved to the new imglib2-roi subproject which will remain in beta for now.
net.imglib2.multithreadingpackage was moved to imglib2-algorithm and deprecated.
- We merged work by Albert Cardona and Stephan Preibisch on “fractional” types. ImgLib2
NativeTypes map pixels into primitive arrays, where often the mapping is one-to-one. For example, an
UnsignedByteTypepixel maps into one byte of a primitive
bytearray. With fractional types this mapping maybe non-integral, for example
Unsigned12BitTypemaps pixels into a
longarray, where each pixel occupies 12/64 longs.
- Superfluous generic parameters were removed from
Projector<A,B>interface which is now only
Projector. Projector implementations were fixed accordingly.
- Several classes were renamed or moved to more suitable places:
Extended[Real]RandomAccessibleIntervalmoved to the
RandomAccessibleOnRealRandomAccessiblemoved to the
Binningmoved to the
- The contents of package
KDTreeetc.) moved to the
net.imglib2.concatenate.Utilwas renamed to
Boundedmoved to the
- The class
net.imglib2.interpolation.neighborsearchwas renamed to
NearestNeighborSearchInterpolator(to avoid confusion with the
Pairinterface moved to the
net.imglib2.util.Utilclass was cleaned up:
getTypeFromRealRandomAccess()were removed. We considered them too dangerous because the
RandomAccessmay be pointing to invalid position.
- Unused methods
- Some variants of
computeDistance()were removed. Use methods
computeAverage(), etc. were renamed to
- These unused classes were removed:
net.imglib2.sampler.specialwere removed (
ConstantRandomAccessible, etc). Similar functionality can now be achieved through the
All ImgLib2 subprojects have been adapted to these changes and released (in some cases as new beta versions).
One thing still pending is to upload these new ImgLib2 releases to the ImageJ and Fiji update sites, making them available to users of ImageJ and Fiji. This change has been rather involved, since there is a lot of downstream code affected by the API changes. But we expect to make the new ImgLib2 available to users before the end of the calendar year. Stay tuned for further announcements!