2012-04-12 69 views
2

我使用DICOM與Python和Pydicom庫,當我使用.dcm文件時我沒有問題。但我現在正在使用DICOMDIR數據集。如何使用pydicom訪問DICOMDIR文件中的單個NumPy數組?

我的代碼是下一個:

ds = dicom.read_file("dicomdir") 

我試圖按如下方式訪問到pixel_array元素:

data = ds.pixel_array 

我也得到了一個錯誤:TypeError: No pixel data found in this dataset.

的輸出print ds或多或少是下一個:

(0004,1230)文件集ID CS:'GEMS_11_10_111' (0004,1200)第一目錄記錄器UL的偏移:412 (0004,1202)最後目錄記錄UL的偏移:412 (0004,1212) )文件集一致性標誌US:0 (0004,1220)目錄記錄序列7項----- (0004,1400)下一個目錄記錄的偏移UL:0 (0004,1410)記錄在(0004,1420)指定記錄類型CS:'患者' (0008,0005)特定字符集CS:'ISO_IR 100 '(0010,0010)患者姓名PN:'------------------' (0010,0020)患者ID LO:' 246992' (0010,0030)患者的出生日期DA: '19630523' (0010,0040)患者的性別CS: 'F'


偏移的下一個目錄記錄UL的

(0004,1400):0 (0004,1410)記錄使用中的標誌US:65535 (0004,1420)參考低級Di UL的偏移:800 (0004,1430)目錄記錄類型CS:'STUDY' (0008,0005)特定字符集CS:'ISO_IR 100' (0008,0020)研究日期DA:'20111011' (0008,0030)研究時間TM:'151535.000000' (0008,0050)保藏號SH:' 1009819901' (0008,1030)研究說明LO: 'MG CONVENCIONAL' (0020,000D)的研究實例UID UI:1.2.840.113564.9.1.2005121220021252.20110608105548.21009819901 (0020,0010)研究ID SH: '1009819901' (0004,1410)記錄在使用中標誌美國:65535 (0004,1420)偏移參考的較低級別迪UL的:偏移的下一個目錄記錄UL的


(0004,1400)968 (0004,1430)目錄記錄類型CS:'SERIES' (0008,0005)特定字符集CS:'ISO_IR 100' (0008,0060)模式CS:'MG' (0008,103e)系列描述LO:'屏幕保存' (0020,000e)系列實例UID UI:1.2.840.113619.2.144.2347322947.2192645372。5 (0020 0011)系列號爲: '354'

偏移的下一個目錄記錄UL的

(0004,1400):1298 (0004,1410)記錄在使用中標誌美國:65535 (0004,1420)引用的下級Di的偏移UL:0 (0004,1430)目錄記錄類型CS:'IMAGE' (0004,1500)參考文件ID CS:['DICOM','PA1',' ST1','SE1','IM1'] (0004,1510)文件UI中的引用SOP類UID:輔助捕獲圖像存儲 (0004,1511)文件UI中引用的SOP實例UID:1.2.840.113619.2.144.44653394.14990 .1318380911.86 (0004,1512)R (0008,0023)特定字符集CS:'ISO_IR 100' (0008,0008)圖像類型CS:'DERIVED' (0008,0023)內容日期DA:參考的F UI中的傳輸語法UID:明確的VR小端序 (0008,0023) '20111011' (0008,0033)內容時間TM: '151909.000000' (0020 0013)實例編號爲: '8844' (0028,0010)行美國:2298 (0028,0011)列美國:1980年 (0028,1052)重​​縮放截取DS: '0' (0028,1053)重新縮放斜率DS: '1'


最後一部分被重複四次。我在我的DICOMDIR數據集中有4個圖像。

你知道如何使用Numpy Array訪問每個圖像的字段嗎?

+0

注意到,你問在[pydicom用戶論壇] HTTPS同樣的問題(: //groups.google.com/forum/?fromgroups#!topic/pydicom/TR2nl6_JRtM)。爲了完整起見,如果您可以在SO上提供此答案的副本,那將是非常好的。 – 2012-06-12 11:03:48

+0

@AndersGustafsson是好的,你說得很對。 – omar 2012-06-13 16:38:25

回答

4

我通過Suever收到Pydicom用戶論壇的答案:

DICOMDIR文件不包含與路徑數據集中的每個文件一起任何的像素信息,而是基本的頭信息。爲了從每個圖像中獲取像素數據,您必須遍歷dicomdir數據集以獲取單個dicom文件(相對於當前目錄)的文件路徑,然後從每個單獨的dicom中加載像素數據文件。

一個簡單的方法來做到這將是(有可能是更好的方法)

ds = dicom.read_file("dicomdir") 
    pixel_data = list() 
    for record in ds.DirectoryRecordSequence: 
     if record.DirectoryRecordType == "IMAGE": 
     # Extract the relative path to the DICOM file 
      path = os.path.join(*record.ReferencedFileID) 
      dcm = dicom.read_file(path) 

      # Now get your image data 
      pixel_data.append(dcm.pixel_array) 

它的工作原理;)

相關問題