Image compression and decompression using SVD
Installation
Install CLI using pipx:
pipx install git+https://github.com/toadharvard/svdi-cli.git
Or
pipx install svdi
Usage example
svdi compress --in-file=images/rafiq.bmp --out-file=images/liquidated.svdi --compression=3 --method=numpy
svdi decompress --in-file=images/liquidated.svdi --out-file=images/rafiq2.bmp
ls -l ./images
Available SVD functions
rsvd— N Halko, P. G Martinsson, and J. A Tropp. Finding structure with randomness: Probabilistic algorithms for constructing approximate matrix decompositions. Siam Review, 53(2):217-288, 2011.numpy— NumPy'snp.linalg.svdfunction.pcafast— H. Li, G. C. Linderman, A. Szlam, K. P. Stanton, Y. Kluger, and M. Tygert. Algorithm 971: An implementation of a randomized algorithm for principal component analysis. Acm Transactions on Mathematical Software, 43(3):1-14, 2017.pi— Power iterations method. URL: http://www.cs.yale.edu/homes/el327/datamining2013aFiles/07_singular_value_decomposition.pdf
Available commands
svdi --help
svdi compress --help
svdi decompress --help
SVDI Format
The CLI uses a simple binary format for storing SVD results in .svdi files.
Each .svdi file consists of a header followed by the SVD results for each channel:
- Header
- Signature: A fixed 4-byte sequence b'SVDI' to identify the file format.
- Dimensions: Three 4-byte unsigned integers representing the shape of the matrices: m, n, and k.
- m: The number of rows in each U matrix.
- n: The number of columns in each Vh matrix.
- k: The size of each S vector, and the number of columns in U and rows in Vh.
- Channel Data
Repeated for each channel (NUMBER_OF_CHANNELS):
- U Matrix: A matrix of size m * k, with elements stored as 32-bit floats in row-major order.
- S Vector: A vector of length k, with elements stored as 32-bit floats.
- Vh Matrix: A matrix of size k * n, with elements stored as 32-bit floats in row-major order.
Licence
See the details of the license in the LICENCE file.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
svdi-1.0.1.tar.gz
(6.1 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
svdi-1.0.1-py3-none-any.whl
(8.8 kB
view details)
File details
Details for the file svdi-1.0.1.tar.gz.
File metadata
- Download URL: svdi-1.0.1.tar.gz
- Upload date:
- Size: 6.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/5.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ce6b23f3e1b22692ef7271782a86f9d0cac6bf5fb4e3b66473974dbc75813935
|
|
| MD5 |
c0fa9a9c65b527a288434aaa7fd9c4bb
|
|
| BLAKE2b-256 |
86adbd82d23ab39950c9e6d1c58363a4a9dd29a86a4bfd95eae0ba4d45571ed5
|
File details
Details for the file svdi-1.0.1-py3-none-any.whl.
File metadata
- Download URL: svdi-1.0.1-py3-none-any.whl
- Upload date:
- Size: 8.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/5.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc125c23d87f803a48f82986dba7e1b56fb87fe2c197bf7d6b633fa474a46903
|
|
| MD5 |
4af50c70f92e8ca9da12369735bf2f9b
|
|
| BLAKE2b-256 |
329c42cec105bff045e6666c5906449384c30ac43cc0cadf650e328f6bdb1bb9
|