2017-03-07 77 views
3

我嘗試訪問DICOM文件的RGB未知壓縮(也許沒有)的像素陣列。提取灰度像素數組工作得很好。如何使用pydicom從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沒有包含正確的像素數據。內容不是虛假縮放的,它們在空間上受到干擾。問題在哪裏?

+0

也許它BGR而不是RGB? – Divakar

+0

不,相應的DICOM標籤顯示「RGB」,其他模式是「OT」,其患者報告轉換爲圖像格式。 結果圖像的分辨率和圖像大小確實很合適。但是每個頻道似乎只包含部分空間信息。 –

+0

什麼是'pixel_array.shape'? –

回答

0

您現在可能已經解決了這個問題,但我認爲pydicom不能正確解釋planar configuration

你需要做的第一:

img = data_set.pixel_array 
img = img.reshape([img.shape[1], img.shape[2], 3]) 

從這裏開始你的形象將有形狀[rows cols 3],與渠道分離

+0

非常感謝!我馬上試一下。其實我的解決方案是寫一個ITK方法。 –

相關問題