一个用于解码JPEG和编码/解码DICOM RLE数据的Python框架,主要支持pydicom
项目描述
pylibjpeg
一个适用于Python 3.8+的框架,用于解码JPEG图像和解码/编码RLE数据集,重点关注对pydicom的支持。
安装
安装当前版本
pip install pylibjpeg
安装额外需求
可以通过安装额外需求来安装此软件包,以分别启用对JPEG(使用libjpeg
)、JPEG 2000(使用openjpeg
)和运行长度编码(RLE)(使用rle
)的支持
pip install pylibjpeg[libjpeg,openjpeg,rle]
或者仅使用all
pip install pylibjpeg[all]
安装开发版本
请确保已安装Git,然后
git clone https://github.com/pydicom/pylibjpeg
python -m pip install pylibjpeg
插件
在pylibjpeg能够处理JPEG图像或RLE数据集之前,需要安装一个或多个插件。要处理特定的格式或DICOM传输语法,首先必须安装相应的软件包
支持图像格式
格式 | 解码? | 编码? | 插件 | 许可证 | 基于 |
---|---|---|---|---|---|
JPEG、JPEG-LS和JPEG XT | 是 | 否 | pylibjpeg-libjpeg | GPLv3 | libjpeg |
JPEG 2000 | 是 | 是 | pylibjpeg-openjpeg | MIT | openjpeg |
RLE无损(PackBits) | 是 | 是 | pylibjpeg-rle | MIT | - |
支持的DICOM传输语法
UID | 描述 | 插件 |
---|---|---|
1.2.840.10008.1.2.4.50 | JPEG基线(处理1) | pylibjpeg-libjpeg |
1.2.840.10008.1.2.4.51 | JPEG扩展(处理2和4) | pylibjpeg-libjpeg |
1.2.840.10008.1.2.4.57 | JPEG无损、非分层(处理14) | pylibjpeg-libjpeg |
1.2.840.10008.1.2.4.70 | JPEG无损、非分层、一阶预测 (处理14,选择值1) |
pylibjpeg-libjpeg |
1.2.840.10008.1.2.4.80 | JPEG-LS无损 | pylibjpeg-libjpeg |
1.2.840.10008.1.2.4.81 | JPEG-LS有损(近似无损)图像压缩 | pylibjpeg-libjpeg |
1.2.840.10008.1.2.4.90 | JPEG 2000图像压缩(仅无损) | pylibjpeg-openjpeg |
1.2.840.10008.1.2.4.91 | JPEG 2000图像压缩 | pylibjpeg-openjpeg |
1.2.840.10008.1.2.4.201 | 高吞吐量JPEG 2000图像压缩(仅无损) | pylibjpeg-openjpeg |
1.2.840.10008.1.2.4.202 | 具有RPCL选项的高吞吐量JPEG 2000图像压缩(仅无损) | pylibjpeg-openjpeg |
1.2.840.10008.1.2.4.203 | 高吞吐量JPEG 2000图像压缩 | pylibjpeg-openjpeg |
1.2.840.10008.1.2.5 | RLE无损 | pylibjpeg-rle |
如果您不确定数据集的传输语法UID,可以使用以下方法确定
>>> from pydicom import dcmread
>>> ds = dcmread('path/to/dicom_file')
>>> ds.file_meta.TransferSyntaxUID.name
使用方法
解码
使用pydicom
假设您已安装pydicom v2.1+和合适的插件
from pydicom import dcmread
from pydicom.data import get_testdata_file
# With the pylibjpeg-libjpeg plugin
ds = dcmread(get_testdata_file('JPEG-LL.dcm'))
jpg_arr = ds.pixel_array
# With the pylibjpeg-openjpeg plugin
ds = dcmread(get_testdata_file('JPEG2000.dcm'))
j2k_arr = ds.pixel_array
# With the pylibjpeg-rle plugin and pydicom v2.2+
ds = dcmread(get_testdata_file('OBXXXX1A_rle.dcm'))
# pydicom defaults to the numpy handler for RLE so need
# to explicitly specify the use of pylibjpeg
ds.decompress("pylibjpeg")
rle_arr = ds.pixel_array
独立JPEG解码
如果您已安装合适的插件,也可以仅使用pylibjpeg将JPEG图像解码为numpy ndarray
from pylibjpeg import decode
# Can decode using the path to a JPG file as str or path-like
arr = decode('filename.jpg')
# Or a file-like...
with open('filename.jpg', 'rb') as f:
arr = decode(f)
# Or bytes...
with open('filename.jpg', 'rb') as f:
arr = decode(f.read())
编码
使用pydicom
假设您已安装pydicom v2.2+和合适的插件
from pydicom import dcmread
from pydicom.data import get_testdata_file
from pydicom.uid import RLELossless
ds = dcmread(get_testdata_file("CT_small.dcm"))
# Encode in-place using RLE Lossless and update the dataset
# Updates the Pixel Data, Transfer Syntax UID and Planar Configuration
ds.compress(RLELossless)
# Save compressed
ds.save_as("CT_small_rle.dcm")
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。
源分发
pylibjpeg-2.0.1.tar.gz (21.3 kB 查看哈希值)
构建分发
pylibjpeg-2.0.1-py3-none-any.whl (24.6 kB 查看哈希值)
关闭
pylibjpeg-2.0.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3beae5cf829f83bf0c1e5640c3b655bc0f406b8be302215e72f8d31a4185a947 |
|
MD5 | cd24db648eb1a5f84ddbe297735785db |
|
BLAKE2b-256 | 7c6534b3da5d0f8fabf09f2f8d5db2977e307d0aa2cdba6c605338005e91077d |
关闭
pylibjpeg-2.0.1-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 90b611304c99b0752c0e0d78d3c3c25ea0b1a53c82e40c78f347367a8709edcc |
|
MD5 | c74c3ad4585d3bbd1920d83c428c9afe |
|
BLAKE2b-256 | 1fab8181a9ddcca65487f9f0e9054da7675ecc701fca29904c7d9d44fa8789a7 |