Hey folks,
I was wondering if any section members had suggestions for the following scenario...or have a colleague who works with a lot of multispectral image data (ex. remote sensing, forestry, astrophysics, medical imaging, etc.)
Background Info
- I'm working with a hardware device that captures multispectral images at 10 wavelengths (from blue to red edge). It outputs the image at each wavelength as an individual greyscale PNG. (I.e., each multispectral image is spread across 10 separate PNG files.)
- I can get an immediate lossless storage savings by combining these 10 separate files into a single TIFF file with lossless compression. This reduces storage from about 90Mb for the full image to about 20MB-30MB, depending on the compression method/settings.
- There are several applications for which lossy versions of this imaging data is perfectly acceptable. I'm interested in lossy compression options to store each multispectral image as a 10-channel image.
- JPEG is only intended for 3-channel (RGB) storage. This might be a backup option to save the 10-channel image across 4 lossy JPEGs. I assume that this would result in more information loss than if they were stored together.
- JPEG-2000 (ex. .jp2 or .j2k format) seems to be intended for storing more than 3-channels (like the 10-channels that I require). However, the various python libraries I've tried using either (1) outright say that they don't support channels beyond RGBA or (2) say that they support many channels but then throw a ton of errors when I try to implement them.
- In short, I've tried to do my homework and use libraries like tifffile, glymur (OpenJPEG), imageio, pillow, etc.) but I'm not able to find a working solution like I can for the lossless TIFF files.
Questions
Main Question: Does anyone have a recommended library or implementation that can create lossy multispectral/multichannel images? Any programming language is fine.
Secondary Question: While we're on the topic, if anyone has a strong opinion on libraries to create lossless multispectral/multichannel images, I'd be more than interested about successes, horror stories, or any tricks to extra performance gains. While my current solution seems to work well, I'd be happy to switch out if a better implementation came along.
Thank you for your time!
------------------------------
Glen Wright Colopy
DPhil Oxon
Host | The Data & Science Podcast
Head of Data Science | Alesca Life Tech Ltd
------------------------------