Python bindings for a fast RLE decoder, with a focus on use as a plugin for pylibjpeg
Project description
pylibjpeg-rle
A fast DICOM (PackBits) RLE plugin for pylibjpeg, written in Rust with a Python 3.6+ wrapper.
Linux, MacOS and Windows are all supported.
Installation
Installing the current release
pip install pylibjpeg-rle
Installing the development version
Make sure Python, Git and Rust are installed. For Windows, you also need to install Microsoft's C++ Build Tools.
git clone https://github.com/pydicom/pylibjpeg-rle
cd pylibjpeg-rle
python -m setup.py develop
Supported Transfer Syntaxes
UID | Description | Decoding | Encoding |
---|---|---|---|
1.2.840.10008.1.2.5 | RLE Lossless | Yes | No |
Benchmarks
Decoding
Time per 1000 decodes, pydicom's NumPy RLE handler vs. pylibjpeg-rle
Dataset | Pixels | Bytes | NumPy | pylibjpeg-rle |
---|---|---|---|---|
OBXXXX1A_rle.dcm | 480,000 | 480,000 | 4.89 s | 0.79 s |
OBXXXX1A_rle_2frame.dcm | 960,000 | 960,000 | 9.89 s | 1.65 s |
SC_rgb_rle.dcm | 10,000 | 30,000 | 0.20 s | 0.15 s |
SC_rgb_rle_2frame.dcm | 20,000 | 60,000 | 0.32 s | 0.18 s |
MR_small_RLE.dcm | 4,096 | 8,192 | 0.35 s | 0.13 s |
emri_small_RLE.dcm | 40,960 | 81,920 | 1.13 s | 0.28 s |
SC_rgb_rle_16bit.dcm | 10,000 | 60,000 | 0.33 s | 0.17 s |
SC_rgb_rle_16bit_2frame.dcm | 20,000 | 120,000 | 0.56 s | 0.21 s |
rtdose_rle_1frame.dcm | 100 | 400 | 0.12 s | 0.13 s |
rtdose_rle.dcm | 1,500 | 6,000 | 0.53 s | 0.26 s |
SC_rgb_rle_32bit.dcm | 10,000 | 120,000 | 0.56 s | 0.19 s |
SC_rgb_rle_32bit_2frame.dcm | 20,000 | 240,000 | 1.03 s | 0.28 s |
Usage
Decoding
With pylibjpeg
Because pydicom defaults to the NumPy RLE decoder, you must specify the use of pylibjpeg when decompressing:
from pydicom import dcmread
from pydicom.data import get_testdata_file
ds = dcmread(get_testdata_file("OBXXXX1A_rle.dcm"))
ds.decompress("pylibjpeg")
arr = ds.pixel_array
Standalone with pydicom
Alternatively you can use the included functions to decode a given dataset:
from rle import pixel_array, generate_frames
# Return the entire Pixel Data as an ndarray
arr = pixel_array(ds)
# Generator function that only processes 1 frame at a time,
# may help reduce memory usage when dealing with large Pixel Data
for arr in generate_frames(ds):
print(arr.shape)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pylibjpeg-rle-1.0.0.tar.gz
(17.8 kB
view hashes)
Built Distributions
Close
Hashes for pylibjpeg_rle-1.0.0-pp37-pypy37_pp73-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ded061b19fc753b5d12192bf87d9d0fbec8645ec50ef0870be57f402ed209114 |
|
MD5 | 650bc8fca98477758af87a09f1e465a1 |
|
BLAKE2b-256 | 03b37056f57796af99da1f6ba3e57b107ed768ed4dfcc958e56b4b7fd3c2385e |
Close
Hashes for pylibjpeg_rle-1.0.0-pp37-pypy37_pp73-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1975d4ef9b5d65929799ac9162089c6f3bdbd940ceded1e28ba1b465f3cb1d51 |
|
MD5 | d0f39f2b4cbfcfce62d3680f154a3f05 |
|
BLAKE2b-256 | 96d5c93e9b7d6bf42f06a77edfb1bb11ebfb3d11196aac817bb83d75feb3f87a |
Close
Hashes for pylibjpeg_rle-1.0.0-pp37-pypy37_pp73-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 15ef73137df427035436cdcaca382e04e54baacf3d112f97499764eb78ff0084 |
|
MD5 | 5d55e7d8b0ed4aa3077ad8ac557a90fe |
|
BLAKE2b-256 | cb1ed4ffd1afdee65051d8d3f266d2dd5f5f3745895a2f77a4532a10a7da2ed0 |
Close
Hashes for pylibjpeg_rle-1.0.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 544ceb44197f50bf006a233d538515ad220e9edbe48a03948f606308926ee378 |
|
MD5 | f9a8494732ba8bbad4167d7812bffab9 |
|
BLAKE2b-256 | ad63db720fae835a20d97c814b65f090b9c2abece3a7b01b9aed690a6e98937b |
Close
Hashes for pylibjpeg_rle-1.0.0-pp36-pypy36_pp73-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 882a8d835aced9bec1da61615b875e9559abee9c015bf0563a6f14cd4fb830bd |
|
MD5 | 3f85805b3caee160b44a862bf79380e7 |
|
BLAKE2b-256 | 1762bc9825fd979a6ad31b45f71b2f3c845f0d4e695398ea00754f81e2f3779d |
Close
Hashes for pylibjpeg_rle-1.0.0-pp36-pypy36_pp73-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 74b4b8e7dae88df9ca63744f65a06d8eac81bd8954ab8d0703fdb5bc84ecc210 |
|
MD5 | b398089071b52fdb3c6a12c7026d832b |
|
BLAKE2b-256 | 1c5d4d11ef1e885579f69e06b3356e96df87ae2587cc13357483025008c6afee |
Close
Hashes for pylibjpeg_rle-1.0.0-pp36-pypy36_pp73-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28d4ac9c7bd27ba37be590db2924bc85da461bf5f366959a2c07474caa0d6b91 |
|
MD5 | 48bda37ed7bb3912f8d4d131f7e0e356 |
|
BLAKE2b-256 | 0af31073c0e527830273461043889c6ce40b0a612beb6d299d44d90e278e15c4 |
Close
Hashes for pylibjpeg_rle-1.0.0-pp36-pypy36_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 911fa63bfcf0688ff22429b16816108efcd5f1af268ce2033c35ec433d8f24a5 |
|
MD5 | 5ee26d6d578fad845e99a5ec957e7100 |
|
BLAKE2b-256 | 96072c505f52113b5c2b714d546cb1feec081c8a1f3769475ae157c1351ad5db |
Close
Hashes for pylibjpeg_rle-1.0.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b5f81e6d3e647ceb0edc15a421f264faf9a0df79db24d5a78f5e758736d8d9f |
|
MD5 | 956a31408ab23dfb44f124b06cecae87 |
|
BLAKE2b-256 | 1748da7960d7e0210b740ec07b6030af227c591fb1e9bdc4a980e56468cf06ba |
Close
Hashes for pylibjpeg_rle-1.0.0-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3a0e501c28ffe0b3c9cd4b5bc174610e8905a913d9cbc787930c93a7d6957c31 |
|
MD5 | 22c1f28d68ad1e2dc7b007963e2a5207 |
|
BLAKE2b-256 | 20a80ee13db33d7a0825702fd8af14d5225c8663c99799c56fd6ab1a498b5eb2 |
Close
Hashes for pylibjpeg_rle-1.0.0-cp39-cp39-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5a496bd1034df99b9a81bd12c2f57e2ce686f74d28537c1cfd63920a8aac8979 |
|
MD5 | 105bfbbace1669df1166bd78bd1085ac |
|
BLAKE2b-256 | 88947f0a267a04eccce68ede3933003995d5416c5699cbc0fdf9127b03e16246 |
Close
Hashes for pylibjpeg_rle-1.0.0-cp39-cp39-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 05de1572c6548baab773ba335f7ed0a5367c1e72bca76d883bd17c48dc375f69 |
|
MD5 | 3368cebcd92ad6be3b964555d64c94b9 |
|
BLAKE2b-256 | 339dbe3e2b283954eea4dea068bc6ace9d689dd5380f9beef79586efe5fb6eb9 |
Close
Hashes for pylibjpeg_rle-1.0.0-cp39-cp39-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3b2a842c2223e5bbae8c8ecb938de23b3f7d19490f5f2523ab3be26249574256 |
|
MD5 | 56db8c51bf77f0d8c673c954b29cb4eb |
|
BLAKE2b-256 | a3c9860b4432876444af2e571b82ead8f3bff1157db0108f84dc064a114f278f |
Close
Hashes for pylibjpeg_rle-1.0.0-cp39-cp39-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d1fbb81b9a0424e131caf798179c28cdbf32af6b6173a4921a6a4d071ea6016 |
|
MD5 | aad5ca1043a13f1f1598c0e660587ee2 |
|
BLAKE2b-256 | 9b14cfb546c6c2ada76e32d57d8dba9e79ffce0ccf47ba698d37eb0e42628c60 |
Close
Hashes for pylibjpeg_rle-1.0.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 58e5eeb6dbef36cd6f4b04338e3f5211db455823852319efeb720d93c46d6ac9 |
|
MD5 | 047d4c870c3559748d3e9bc1abc7a47e |
|
BLAKE2b-256 | 16072a4f4668953ddba33218150de996bacf26814229a101b3539368565e58bd |
Close
Hashes for pylibjpeg_rle-1.0.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 26d16ec93c6089575165d4b2d96b704c18084012fd673269a515f15f8e2982eb |
|
MD5 | c9131cc23f880fa1e97ddef70c3579fb |
|
BLAKE2b-256 | 9276ec7918003b5e9e1b57082642176fcc794f915837c42abbb7e74e7cdc3d6b |
Close
Hashes for pylibjpeg_rle-1.0.0-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8f198eb92ff38e9f2470672b91a167291964e7876c070903f78daf2b6e10fb92 |
|
MD5 | c89442403282eb2f67def4fb8c2f45ac |
|
BLAKE2b-256 | 4d005d1c6336eb97eac7db7ad480c87ccc174d65c1ba765366932ef894f9909e |
Close
Hashes for pylibjpeg_rle-1.0.0-cp38-cp38-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ece975c68eeec76f3dd0335bbd40e8155b13955e166b1b929c95fde6fced9bcd |
|
MD5 | cb28f80206f3e238d1c2a0440648d65c |
|
BLAKE2b-256 | 55109aaf8271fb1f1f38c44866265b30a60e29826b8ba68c15ffdb8965a23e3a |
Close
Hashes for pylibjpeg_rle-1.0.0-cp38-cp38-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 484b25f47189f0ff1c541c913a6c9ca320e46e781decb196fd1513b7b3caa49c |
|
MD5 | f9aa86634754c46b6ff7294b6e973c4b |
|
BLAKE2b-256 | d71fae02a350853c605753cdcea10042c9035e529d2bcc2fd824813e943694f2 |
Close
Hashes for pylibjpeg_rle-1.0.0-cp38-cp38-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c70dc43c56b3e6018d727ef090d48cfc22ded50dc2450d7c06e61a5f875d29cc |
|
MD5 | db2237da271720f3bba259dac2b4d2f1 |
|
BLAKE2b-256 | 29ff24f58db9e63932d8e7b3260b865f4f33c113d3e189d7ff724d9c49081927 |
Close
Hashes for pylibjpeg_rle-1.0.0-cp38-cp38-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c42e0a5aff591ae137f8f80ae823fc2feaf774b9c8e550f5dd5804741bdfc647 |
|
MD5 | c566c6aad5c1c2e23c73e8356e5e65ed |
|
BLAKE2b-256 | ee4e4bdf0280e43475f5579e7f19b184f59270118a5a4be7ea2192f604c8d75f |
Close
Hashes for pylibjpeg_rle-1.0.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d5efd82f065f11552e022a0a480622cef26412a9bd562c13e0baa5d59ebdd4e |
|
MD5 | 9b08672103ada8de3f1f96d359d6bce2 |
|
BLAKE2b-256 | a9fc2135b4c91e5afd458d12ddb61c7448d6fa2918475f3e7b69d828c69ca2ea |
Close
Hashes for pylibjpeg_rle-1.0.0-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6c80dcf1fede5cfd633e4e1c11615e4d6d6f4a9ed4583ba1cdf493f7930cc520 |
|
MD5 | 025cc2d7ec8257f6e9f2057029fc44c8 |
|
BLAKE2b-256 | 7943bc807e326318ba16e4012db04e841e7bd3bd94d09994aea3e186599561a2 |
Close
Hashes for pylibjpeg_rle-1.0.0-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 17f3eac3ac3e9d5b1c60dad46f6fd1901cb71fc3851574eaa0f4f1f121b1e340 |
|
MD5 | c6b6ee016cdfb3bf30a4f9ed1c6f61a3 |
|
BLAKE2b-256 | 4f8b65d8c68027ebf6bb643c20a5b968591867ae87f00ec9ee8aeb490311542b |
Close
Hashes for pylibjpeg_rle-1.0.0-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a3726cbbb4d51899858ed73fe6c56f484689aa5b285b4b21e4a57725a18bd6f2 |
|
MD5 | 9a532e2a38251a0840997598e22f5436 |
|
BLAKE2b-256 | fddab8215ab19f6add3025f58f6a9acadf324d7bb396918808e4c16d81e154dd |
Close
Hashes for pylibjpeg_rle-1.0.0-cp37-cp37m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 21a90ec7ab9e8f9fb747c34d3d65c667d1b718aa7546b0c991da2ffb7b0a6c30 |
|
MD5 | 7ca319d9d63882dec79c2fb5ee3bb661 |
|
BLAKE2b-256 | abd689a6fe65e184733e1ff221073fe16d013c5ea5ef72f813e863c0322833b6 |
Close
Hashes for pylibjpeg_rle-1.0.0-cp37-cp37m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 265d6bbff982dcd43f524d72f899dbc4a20342d47233e53ab91be0704e2ec4b7 |
|
MD5 | 9f929031f6fea772fb5adad702d931ab |
|
BLAKE2b-256 | 17a3356f201f4a80d517decd9b96e1bb5bb1767f06e30e781aaa95c2acb02069 |
Close
Hashes for pylibjpeg_rle-1.0.0-cp37-cp37m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 78123b85c19e57bdf8a588ab4da00a2078969266ce888dfce1b2816aa7496bdb |
|
MD5 | 8f97ac07570770b6aa2a6ce3df470e90 |
|
BLAKE2b-256 | 24f5b321db265650b16989b705f6ebb7ddb9ca8dfb8d431808f58af097e6eeba |
Close
Hashes for pylibjpeg_rle-1.0.0-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 00516613bfb594b1b6f5d4b147b68c04a067cb115cdac778e999654a1558ea1b |
|
MD5 | ef2a494c0dd97d04001597b001919ae7 |
|
BLAKE2b-256 | 858c29130ac9935b359ba51342f9135994eeb0655c0a63872848ab80a54d3388 |
Close
Hashes for pylibjpeg_rle-1.0.0-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f0302dcd882b64f0a105b6213936e605e991c5f8c1ab9d462a8fecfd728df6c0 |
|
MD5 | ccc551337f7d57358a4d2ca78169278e |
|
BLAKE2b-256 | 92f3e794850a7295e5d2f61aeeae2de9d2a2cac414d7269a70e6ee109af67751 |
Close
Hashes for pylibjpeg_rle-1.0.0-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 30c47f2f0d0ef85568943f013104ba98e18171905863aa65c8dac45ba10aa4c9 |
|
MD5 | e5f8045336836a3c13d05b58dc30db68 |
|
BLAKE2b-256 | fffcd6b5d60e76aee1e800b7692889cfb505e5372634477809e9841cbfe11be5 |
Close
Hashes for pylibjpeg_rle-1.0.0-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f1a57553e51aed84c00dbafc4a147b4bc17e39235d46da67fc61cd747ad4dcbc |
|
MD5 | 45349df8d32c7b0c659f8a9ae44807c1 |
|
BLAKE2b-256 | 919a4db3b03d29a59c73958230c21810196a58d3430af522470edcfeeb8aff9e |
Close
Hashes for pylibjpeg_rle-1.0.0-cp36-cp36m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a972fc629ea676c968566729d29f80cc66564093c66a3905ba36bee37bf187bb |
|
MD5 | 52a1e80f75df369a8daa062f3e9cc2ce |
|
BLAKE2b-256 | 7a5983f976f2c4d046afba2bd599904ce9d7ea71de3e23a6ecb431a1f76b211b |
Close
Hashes for pylibjpeg_rle-1.0.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | baa8a71459ac3cb135860a13e9c454709b1b7db7caaba65676bb740fb1222337 |
|
MD5 | e45a4780a739303f0b5708847f20a233 |
|
BLAKE2b-256 | 9357c58c3f92e4cbabd83a77ff8a262dd9ede1bcf95270af20b7685d11681c56 |
Close
Hashes for pylibjpeg_rle-1.0.0-cp36-cp36m-manylinux1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d5c855e36e641ccf1b26b3d95f6aaa058e824fbf350094a62be276362ffbf17b |
|
MD5 | 0639cd03eb6672187dd54f58cf484ebd |
|
BLAKE2b-256 | 1e0187f23639b037e3500482f50494d3daa020febc04cb7f90227207d4c59185 |
Close
Hashes for pylibjpeg_rle-1.0.0-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 64cea417fbc4b81b46420d9ace6f776b2e9ebce67381b1b1dc1154a32fbb455b |
|
MD5 | 3117d0f1723a19526bb12db70e49619b |
|
BLAKE2b-256 | 8ffab061dad543bbba06b70ca270cd183cf76f544c56323751ad61b77c08eb54 |