【发布时间】:2017-03-07 13:57:45
【问题描述】:
我尝试访问具有未知压缩(可能没有)的 DICOM 文件的 RGB 像素阵列。提取灰度像素阵列完全正常。
但是,使用
import dicom
import numpy as np
data_set = dicom.read_file(path)
pixel_array = data_set.pixel_array
size_of_array = pixel_array.shape
if len(size_of_array ) == 3:
chanR = pixel_array[0][0:size_of_array[1], 0:size_of_array[2]]
chanG = pixel_array[1][0:size_of_array[1], 0:size_of_array[2]]
chanB = pixel_array[2][0:size_of_array[1], 0:size_of_array[2]]
output_array = (0.299 ** chanR) + (0.587 ** chanG) + (0.114 ** chanB)
目标是将其转换为通用灰度数组。不幸的是,结果数组output_array 不包含正确的像素数据。内容不是错误缩放的,它们在空间上受到干扰。问题出在哪里?
【问题讨论】:
-
可能是 BGR 而不是 RGB?
-
不,对应的 DICOM 标签显示为“RGB”,其他模式为“OT”,将患者报告转换为图像格式。结果图像的分辨率和图像大小确实很合适。但每个通道似乎只包含部分空间信息。
-
什么是
pixel_array.shape? -
我问是因为我用来读取 RGB 图像的其他库(不是 dicom,而是 JPG、PNG 等)通常返回一个形状为 (m, n, 3) 的数组,而不是 (3 , 米, n)。如果是这样,那么你会写
chanR = pixel_array[:,:,0]。 -
相应的 DICOM 标签写着“RGB”如果你说的是
Photometric Interpretation,那并不意味着顺序。
标签: python numpy dicom pydicom