You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pydicom读取RGB DICOM是否自动转为(x,y,channel)格式?附转二进制需求

关于pydicom读取RGB DICOM图像的格式与转二进制图像的解决方案

1. Planar Configuration参数与像素格式的说明

DICOM标准中,Planar Configuration参数定义了RGB像素的存储方式:

  • 值为1时,表示平面式存储(先存储所有R通道像素,再依次存储G、B通道的全部像素)
  • 值为0时表示交错式存储(按像素顺序存储R、G、B分量,即第一个像素的RGB,第二个像素的RGB……)

pydicom在读取RGB DICOM时,会自动将平面式存储(Planar Configuration=1)的像素数据转换为(x, y, channel)格式,也就是你得到的(301, 301, 3),这是工具库的默认处理逻辑,目的是让用户能直接用常见的图像维度进行后续操作,无需手动拆分平面数据。

2. 将RGB DICOM转为二进制图像的步骤

二进制图像指仅包含黑、白两种颜色的图像,需先将RGB转为灰度图,再通过阈值分割实现,具体操作如下:

步骤1:读取DICOM文件并获取RGB数据

import pydicom
import numpy as np
from skimage.color import rgb2gray
from skimage.filters import threshold_otsu

# 读取目标DICOM文件
ds = pydicom.dcmread("your_rgb_dicom_file.dcm")
# 获取(x, y, 3)格式的RGB像素数组
rgb_pixels = ds.pixel_array

步骤2:将RGB图像转为灰度图

有两种常用方式:

# 方式1:使用scikit-image工具库转换
gray_pixels = rgb2gray(rgb_pixels)

# 方式2:手动按加权公式计算(符合人眼对颜色的感知)
gray_pixels = 0.2989 * rgb_pixels[..., 0] + 0.5870 * rgb_pixels[..., 1] + 0.1140 * rgb_pixels[..., 2]

步骤3:阈值分割生成二进制图像

可以用自动阈值算法(如Otsu)或手动指定阈值:

# 自动计算最优阈值
threshold = threshold_otsu(gray_pixels)
# 生成布尔型二进制数组,大于阈值为True(白色),否则为False(黑色)
binary_pixels = gray_pixels > threshold

# 若需转为0-255的uint8格式(方便保存或展示)
binary_pixels = (binary_pixels * 255).astype(np.uint8)

注意事项

  • RGB类型的DICOM一般为真彩色图像,无需额外做窗宽窗位调整;若为特殊场景下的伪彩DICOM,需先确认原始数据含义再处理。
  • 确保已安装依赖库:执行pip install pydicom numpy scikit-image完成安装

内容的提问来源于stack exchange,提问作者侯元昊

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 07:22:37