跳转到主要内容

"快速RLE解码器/编码器的Python绑定,重点在于作为pylibjpeg的插件使用"

项目描述

Build status Test coverage PyPI versions Python versions Code style: black

pylibjpeg-rle

适用于pylibjpeg(《PackBits》)的快速DICOM(RLE)插件,用Rust编写,并带有Python 3.7+包装器。

支持Linux、MacOS和Windows。

安装

安装当前版本

pip install pylibjpeg-rle

安装开发版本

请确保已安装PythonGitRust。对于Windows,您还需要安装Microsoft的C++构建工具

git clone https://github.com/pydicom/pylibjpeg-rle
cd pylibjpeg-rle
python -m pip install .

支持的传输语法

UID 描述 解码 编码
1.2.840.10008.1.2.5 RLE无损

使用方法

解码

与pylibjpeg一起使用
from pydicom import dcmread
from pydicom.data import get_testdata_file

ds = dcmread(get_testdata_file("OBXXXX1A_rle.dcm"))
arr = ds.pixel_array
与pydicom独立使用

或者您可以使用包含的函数解码给定的数据集

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)

编码

与pydicom独立使用

将未压缩的像素数据转换为RLE编码并保存

from pydicom import dcmread
from pydicom.data import get_testdata_file
from pydicom.uid import RLELossless

from rle import pixel_data

# Get the uncompressed pixel data
ds = dcmread(get_testdata_file("OBXXXX1A.dcm"))
arr = ds.pixel_array

# RLE encode and encapsulate `arr`
ds.PixelData = pixel_data(arr, ds)
# Set the correct *Transfer Syntax UID*
ds.file_meta.TransferSyntaxUID = RLELossless
ds.save_as('as_rle.dcm')

基准测试

解码

每次解码1000次的时间,pydicom默认的RLE处理程序与pylibjpeg-rle

数据集 像素 字节 pydicom pylibjpeg-rle
OBXXXX1A_rle.dcm 480,000 480,000 4.89秒 0.79秒
OBXXXX1A_rle_2frame.dcm 960,000 960,000 9.89秒 1.65秒
SC_rgb_rle.dcm 10,000 30,000 0.20秒 0.15秒
SC_rgb_rle_2frame.dcm 20,000 60,000 0.32秒 0.18秒
MR_small_RLE.dcm 4,096 8,192 0.35秒 0.13秒
emri_small_RLE.dcm 40,960 81,920 1.13秒 0.28秒
SC_rgb_rle_16bit.dcm 10,000 60,000 0.33秒 0.17秒
SC_rgb_rle_16bit_2frame.dcm 20,000 120,000 0.56秒 0.21秒
rtdose_rle_1frame.dcm 100 400 0.12秒 0.13秒
rtdose_rle.dcm 1,500 6,000 0.53秒 0.26秒
SC_rgb_rle_32bit.dcm 10,000 120,000 0.56秒 0.19秒
SC_rgb_rle_32bit_2frame.dcm 20,000 240,000 1.03秒 0.28秒

编码

每次编码1000次的时间,pydicom默认的RLE处理程序与pylibjpeg-rle

数据集 像素 字节 pydicom pylibjpeg-rle
OBXXXX1A.dcm 480,000 480,000 30.7秒 1.36秒
SC_rgb.dcm 10,000 30,000 1.80秒 0.09秒
MR_small.dcm 4,096 8,192 2.29秒 0.04秒
SC_rgb_16bit.dcm 10,000 60,000 3.57秒 0.17秒
rtdose_1frame.dcm 100 400 0.19秒 0.003秒
SC_rgb_32bit.dcm 10,000 120,000 7.20秒 0.33秒

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定要选择哪个,请了解有关安装软件包的更多信息。

源分布

pylibjpeg_rle-2.0.0.tar.gz (27.4 kB 查看散列值)

上传时间

构建分布

pylibjpeg_rle-2.0.0-cp312-none-win_amd64.whl (138.9 kB 查看散列值)

上传时间 CPython 3.12 Windows x86-64

pylibjpeg_rle-2.0.0-cp312-none-win32.whl (134.1 kB 查看散列值)

上传时间 CPython 3.12 Windows x86

pylibjpeg_rle-2.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB 查看哈希值)

上传时间: CPython 3.12 manylinux: glibc 2.17+ x86-64

pylibjpeg_rle-2.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB 查看哈希值)

上传时间: CPython 3.12 manylinux: glibc 2.17+ ARM64

pylibjpeg_rle-2.0.0-cp312-cp312-macosx_11_0_arm64.whl (249.4 kB 查看哈希值)

上传时间: CPython 3.12 macOS 11.0+ ARM64

pylibjpeg_rle-2.0.0-cp312-cp312-macosx_10_12_x86_64.whl (252.6 kB 查看哈希值)

上传时间: CPython 3.12 macOS 10.12+ x86-64

pylibjpeg_rle-2.0.0-cp311-none-win_amd64.whl (138.2 kB 查看哈希值)

上传时间: CPython 3.11 Windows x86-64

pylibjpeg_rle-2.0.0-cp311-none-win32.whl (134.1 kB 查看哈希值)

上传时间: CPython 3.11 Windows x86

pylibjpeg_rle-2.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB 查看哈希值)

上传时间: CPython 3.11 manylinux: glibc 2.17+ x86-64

pylibjpeg_rle-2.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB 查看哈希值)

上传时间: CPython 3.11 manylinux: glibc 2.17+ ARM64

pylibjpeg_rle-2.0.0-cp311-cp311-macosx_11_0_arm64.whl (249.5 kB 查看哈希值)

上传时间: CPython 3.11 macOS 11.0+ ARM64

pylibjpeg_rle-2.0.0-cp311-cp311-macosx_10_12_x86_64.whl (252.9 kB 查看哈希值)

上传时间: CPython 3.11 macOS 10.12+ x86-64

pylibjpeg_rle-2.0.0-cp310-none-win_amd64.whl (138.2 kB 查看哈希值)

上传时间 CPython 3.10 Windows x86-64

pylibjpeg_rle-2.0.0-cp310-none-win32.whl (134.1 kB 查看哈希值)

上传时间 CPython 3.10 Windows x86

pylibjpeg_rle-2.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ x86-64

pylibjpeg_rle-2.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB 查看哈希值)

上传时间 CPython 3.10 manylinux: glibc 2.17+ ARM64

pylibjpeg_rle-2.0.0-cp310-cp310-macosx_11_0_arm64.whl (249.4 kB 查看哈希值)

上传时间 CPython 3.10 macOS 11.0+ ARM64

pylibjpeg_rle-2.0.0-cp310-cp310-macosx_10_12_x86_64.whl (252.9 kB 查看哈希值)

上传时间 CPython 3.10 macOS 10.12+ x86-64

pylibjpeg_rle-2.0.0-cp39-none-win_amd64.whl (138.2 kB 查看哈希值)

上传时间 CPython 3.9 Windows x86-64

pylibjpeg_rle-2.0.0-cp39-none-win32.whl (134.1 kB 查看哈希值)

上传时间 CPython 3.9 Windows x86

pylibjpeg_rle-2.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.17+ x86-64

pylibjpeg_rle-2.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB 查看哈希值)

上传时间 CPython 3.9 manylinux: glibc 2.17+ ARM64

pylibjpeg_rle-2.0.0-cp39-cp39-macosx_11_0_arm64.whl (249.4 kB 查看散列值)

上传于 CPython 3.9 macOS 11.0+ ARM64

pylibjpeg_rle-2.0.0-cp39-cp39-macosx_10_12_x86_64.whl (252.9 kB 查看散列值)

上传于 CPython 3.9 macOS 10.12+ x86-64

pylibjpeg_rle-2.0.0-cp38-none-win_amd64.whl (138.1 kB 查看散列值)

上传于 CPython 3.8 Windows x86-64

pylibjpeg_rle-2.0.0-cp38-none-win32.whl (134.0 kB 查看散列值)

上传于 CPython 3.8 Windows x86

pylibjpeg_rle-2.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB 查看散列值)

上传于 CPython 3.8 manylinux: glibc 2.17+ x86-64

pylibjpeg_rle-2.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB 查看散列值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ARM64

pylibjpeg_rle-2.0.0-cp38-cp38-macosx_11_0_arm64.whl (249.0 kB 查看散列值)

上传于 CPython 3.8 macOS 11.0+ ARM64

pylibjpeg_rle-2.0.0-cp38-cp38-macosx_10_12_x86_64.whl (252.7 kB 查看散列值)

上传于 CPython 3.8 macOS 10.12+ x86-64

支持