User Story #6220 (accepted)
JPEG 2000 follow-on
|Reported by:||cxallan||Owned by:|
|Cc:||cblackburn, jamoore, jburel, mlinkert||Story Points:||n.a.|
|Total Remaining Time:||9.5d||Estimated Remaining Time:||n.a.|
Description (last modified by cxallan)
As part of the initial big image work (#1950) we made the decision to use JPEG 2000 based image pyramids stored in a tiled TIFF. The same logic is also used to handle all images currently supported as "FS Lite" (#5640); we are generating pyramids for all these file formats.
We may use these pyramids more extensively in the pursuit of de-duplication (#2128) and the extension of the "FS Lite" capabilities to more file formats or even the use for cached versions of pixel data as part of the original file binary repository modifications (#909).
As such it is critical that we address a few things:
- JPEG 2000 compression performance (currently ~100ms per 256x256 tile on relatively modern hardware)
- JPEG 2000 decompression performance
- Multi-threaded compression (initial Bio-Formats work has been done in #5001)
In order to address (1) and (2) it will be important to investigate a number of native compression techniques. Some possibilities are outlined in #5927. Some further options:
- JAI ImageIO itself and its native code extensions
- JAI ImageIO plugins such as those implemented in GeoTools (http://docs.geotools.org/latest/userguide/library/coverage/jp2k.html)
- Kakadu (http://www.kakadusoftware.com/)
Bio-Formats currently produces JPEG 2000 compressed code streams using JAI ImageIO. The Bio-Formats service wrapper interface is very AWT centric, using BufferedImage and various other components. In order to be more flexible with JPEG 2000 compression, if we do not use JAI ImageIO plugins, it will likely be required to make this interface more generic. Current interface and implementation of the JAI ImageIO interfaces:
The current implementation is based on the wiki:BioFormats-Service infrastructure. If we go down the road of providing a more "pluggable" JPEG 2000 compression infrastructure we will likely need to extend at least the documentation of the current service infrastructure.