gpt4 book ai didi

python - 如何使用 pydicom 从 DICOM 文件访问 RGB 像素阵列?

转载 作者:行者123 更新时间:2023-11-28 18:24:11 26 4
gpt4 key购买 nike

我尝试使用未知压缩(也许没有)访问 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 不包含正确的像素数据。内容不是错误缩放的,它们在空间上受到干扰。问题在哪里?

最佳答案

它不是 RGB 像素阵列,更好的方法是转换为灰度图像。

获取CT Image的方法是获取CT dicom文件中pixel_array的属性。CT dicom文件的pixel_array中的元素类型都是uint16。但是python中的很多工具,比如OpenCV,一些AI的东西,都不能兼容这个类型。

从CT dicom文件中得到pixel_array(CT Image)后,总是需要将pixel_array转换成灰度图,这样就可以通过python中的很多图像处理工具来处理这个灰度图 .

以下代码是将 pixel_array 转换为灰度图像的工作示例。

import matplotlib.pyplot as plt
import os
import pydicom
import numpy as np
# Abvoe code is to import dependent libraries of this code

# Read some CT dicom file here by pydicom library
ct_filepath = r"<YOUR_CT_DICOM_FILEPATH>"
ct_dicom = pydicom.read_file(ct_filepath)
img = ct_dicom.pixel_array

# Now, img is pixel_array. it is input of our demo code

# Convert pixel_array (img) to -> gray image (img_2d_scaled)
## Step 1. Convert to float to avoid overflow or underflow losses.
img_2d = img.astype(float)

## Step 2. Rescaling grey scale between 0-255
img_2d_scaled = (np.maximum(img_2d,0) / img_2d.max()) * 255.0

## Step 3. Convert to uint
img_2d_scaled = np.uint8(img_2d_scaled)


# Show information of input and output in above code
## (1) Show information of original CT image
print(img.dtype)
print(img.shape)
print(img)

## (2) Show information of gray image of it
print(img_2d_scaled.dtype)
print(img_2d_scaled.shape)
print(img_2d_scaled)

## (3) Show the scaled gray image by matplotlib
plt.imshow(img_2d_scaled, cmap='gray', vmin=0, vmax=255)
plt.show()

下面是我打印出来的结果。

enter image description here

关于python - 如何使用 pydicom 从 DICOM 文件访问 RGB 像素阵列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42650233/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com