Skip to content
Snippets Groups Projects
Commit 10cd7c4e authored by Vojtěch Moravec's avatar Vojtěch Moravec
Browse files

Updated roadmap.

parent dc633137
No related branches found
No related tags found
No related merge requests found
# Data compression project # Data compression project
### TODO *deadline* 25.2.2019 ### TODO LIST
- [x] Tweak Z-Order reordering - [x] Tweak Z-Order reordering
- Values, which are stored in more than one byte, must stay together. - Values, which are stored in more than one byte, must stay together.
- Pixels, which contains more `channels`, can be separeted in final z order. (Try both separeted and not-separated) - Pixels, which contains more `channels`, can be separeted in final z order. (Try both separeted and not-separated)
- Right now, when we `reorder` bytes we move *whole* pixel (*all channels*), but when pixel's channels will be separated we will move just one channel. - Right now, when we `reorder` bytes we move *whole* pixel (*all channels*), but when pixel's channels will be separated we will move just one channel.
- [ ] Feed binary data to existing compressors and produce results (tables, graphs) - [x] Feed binary data to existing compressors and produce results (tables, graphs)
- Try both data in their order and in `Z-order` - Try both data in their order and in `Z-order`
- Compressors to try: - Compressors to try:
- [x] gZip (zLib, huffman deflate combination) - [x] gzip (zLib, huffman deflate combination)
- [x] Bzip2 - [x] bzip2
- [x] LZMA (7-zip) - [x] LZMA (7-zip)
- [x] Add *level* CLI option to specify compression level for above algorithms - [x] Add *level* CLI option to specify compression level for above algorithms
- [ ] Add CSV writer, which will write test results to file and test function taking folder with test files to parse. - [x] Add CSV writer, which will write test results to file and test function taking folder with test files to parse.
- [ ] *B3D cuda library* - **DEADLINE 04.03.2019**
- [ ] Finish OpenMP parallelization. - [ ] Write about Z-Curve order, plot Z-Curve comparsion with normal order.
- [ ] Plot/into tables, BPP (Bits Per Pixel), Compression throughput (MB/s).
- [ ] Benchmark B^3D cuda library
- [ ] Look at *Image difference* - [ ] Look at *Image difference*
- Negative values can be mapped to odd/even numbers. But the difference must be saved in more than one byte. - Negative values can be mapped to odd/even numbers. But the difference must be saved in more than one byte.
- Save difference in different type than byte (`short`, `uint`, `ulong`) - Save difference in different type than byte (`short`, `uint`, `ulong`)
- [ ] Compose results into paper.
## CZI parser TODO list ## CZI parser TODO list
...@@ -32,25 +33,16 @@ This is list of things, which have to be done first: ...@@ -32,25 +33,16 @@ This is list of things, which have to be done first:
- [ ] ~~Parse image data to proper pixel type~~. Do we really want to do that? We really care only about **bytes**. Parsing image data into some `PixelType` Matrix may be good, only if we want to do some operation on the image. This is moved to *later* section then. - [ ] ~~Parse image data to proper pixel type~~. Do we really want to do that? We really care only about **bytes**. Parsing image data into some `PixelType` Matrix may be good, only if we want to do some operation on the image. This is moved to *later* section then.
- [x] Parse / extract image data from `SubBlock` - [x] Parse / extract image data from `SubBlock`
- We are aware of position and size of the data in CZI file. With that two informations we can extract the data easily. - We are aware of position and size of the data in CZI file. With that two informations we can extract the data easily.
- [ ] Parse important informations from XML metadata (e.g. BitsPerPixel and compare with value from parsed binary data). - [x] Parse image values into matrices. `Matrix<Gray8>` etc.
- [ ] Parse image values into matrices. `Matrix<Gray8>` etc. - **This is outside the scope of this project. Main goal is to try and compare different compressions on image data. Right now we are able to obtain image data and more, so it is enaugh for now.**
- [ ] Support multi-file situations - ~~Parse important informations from XML metadata (e.g. BitsPerPixel and compare with value from parsed binary data)~~
- [ ] Obtain multi-file CZI files. Currently we don't have any multi-files, so we can't really parse them. Secondary files should have different GUID than master file, also filepart should be different from 0. Files we have right now have (0) in their name, but theirs filepart is 0 and GUID of master file isn't set correctly. - ~~Support multi-file situations~~
- [ ] One master file and more *secondary files* files (our current `CziFile` class kinda support that situations, so keep going that way) - ~~Obtain multi-file CZI files. Currently we don't have any multi-files, so we can't really parse them. Secondary files should have different GUID than master file, also filepart should be different from 0. Files we have right now have (0) in their name, but theirs filepart is 0 and GUID of master file isn't set correctly.~~
- ~~One master file and more *secondary files* files (our current `CziFile` class kinda support that situations, so keep going that way)~~
Later on, we can extend our program to handle more things from the file, like:
- [ ] Parse metadata according to XML schemas
- [ ] Take a look on binary reader, can it be fastened up?
- [ ] Parse segments from memory buffer rather than from file stream. (*Disk bottleneck*)
- [ ] Parse image data to PixelType matrix type.
## Compression of images ## Compression of images
- I tested [FLIF](https://flif.info/) compression on ~200 MB file. Compression ratio was good but the speed on the other hand was really bad. Decompression wasn't better, it was slow too. - I tested [FLIF](https://flif.info/) compression on ~200 MB file. Compression ratio was good but the speed on the other hand was really bad. Decompression wasn't better, it was slow too.
- Even lossy compression was slow. This compression is probably only good for small images. - Even lossy compression was slow. This compression is probably only good for small images.
- **Next step is to test B3D compression.**
- Pure LZW creates dictionary as it goes. Can create entries which aren't found in data.
- LZ77 is better variant.
- **Look at Huffman encoding, then maybe Arithmetic and in a spare time install nVidia drivers to test ot B3D library.**
## Space filling (*Peano*) curves ## Space filling (*Peano*) curves
- [Wikipedia](https://en.wikipedia.org/wiki/Space-filling_curve) - [Wikipedia](https://en.wikipedia.org/wiki/Space-filling_curve)
...@@ -62,4 +54,4 @@ Later on, we can extend our program to handle more things from the file, like: ...@@ -62,4 +54,4 @@ Later on, we can extend our program to handle more things from the file, like:
## Image difference ## Image difference
- Find difference between included images. - Find difference between included images.
- Plot those differences and find out if certain images aren't same, just positioned little bit differently - Plot those differences and find out if certain images aren't same, just positioned little bit differently
- *Pattern matching* - Find if there are some patterns in image sets. - *Pattern matching* - Find if there are some patterns in image sets.
\ No newline at end of file
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment