跳转到主要内容

一个用于解码JPEG和编码/解码DICOM RLE数据的Python框架,主要支持pydicom

项目描述

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

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 查看哈希值)

上传时间 Python 3

由...