2017-09-05 256 views
0

嗨,我是從閱讀DICOM文件與pydicompydicom:數據集沒有屬性 'TransferSyntaxUID'

這個職位的痛苦不同於 pydicom 'Dataset' object has no attribute 'TransferSyntaxUID'

這裏是我的代碼

import dicom 
dicom.read_file(file,force=True) 

這導致錯誤

 AttributeError       Traceback (most recent call last) 
    <ipython-input-32-a32aef2d2178> in <module>() 
    ----> 1 dicom.read_file(raw_path + pat_lst[0] + '\\' + pat_dcm_lst[0],force=True) 

    D:\Program Files\Anaconda2\lib\site-packages\dicom\filereader.pyc in read_file(fp, defer_size, stop_before_pixels, force) 
     612  try: 
     613   dataset = read_partial(fp, stop_when, defer_size=defer_size, 
    --> 614        force=force) 
     615  finally: 
     616   if not caller_owns_file: 

    D:\Program Files\Anaconda2\lib\site-packages\dicom\filereader.pyc in read_partial(fileobj, stop_when, defer_size, force) 
     520  if preamble: 
     521   file_meta_dataset = _read_file_meta_info(fileobj) 
    --> 522   transfer_syntax = file_meta_dataset.TransferSyntaxUID 
     523   if transfer_syntax == dicom.UID.ImplicitVRLittleEndian: 
     524    pass 

    D:\Program Files\Anaconda2\lib\site-packages\dicom\dataset.pyc in __getattr__(self, name) 
     254   if tag not in self: 
     255    raise AttributeError("Dataset does not have attribute " 
    --> 256         "'{0:s}'.".format(name)) 
     257   else: # do have that dicom data_element 
     258    return self[tag].value 

    AttributeError: Dataset does not have attribute 'TransferSyntaxUID'. 

I t匿名時出現錯誤。 我想知道爲什麼會發生這種情況。

正在刪除與DICOM標準相關的TransferSyntaxUID?

而且,我可以通讀MATLABVTKITKpydicom

所以,現在我想要做的是設置TransferSyntaxUID通過SimpleITK手動和通過pydicom再次讀取。

,我會讓你知道什麼時候該工作

在此先感謝

回答

0

的pydicom庫有一個更新是寬容缺失轉移語法。作爲一種解決方法,直到下一個版本,你可以修改filereader.py中的幾行,如圖所示here

+0

嗨達西,感謝您的回答,我會檢查您鏈接的pydicom問題,我會讓你知道的 – JessieB

0

從我對DICOM標準的理解看來,Transfer Syntax UID(0002,0010)是一個強制標記。這是一個type 1 tag它指示它is required

雖然這是標準所說的,但即使缺少這個標籤,庫仍然可以讀取這些文件。我猜這是因爲該標準還定義了一個default transfer syntax

關於使用SimpleITK設置值,這應該肯定有效。此外,如果您需要驗證您的文件符合標準,則可以使用David Clunie的dicom3tools,特別是dciodvfy和dcdump。

+0

HI zivy,是謝謝你的回答,我同意你的觀點,即Transfer Syntax是強制性的,但我想知道DICOM標準中的匿名協議允許使用空傳輸語法,正如PS 3.15中的表E.1-1所述。 [PS.3.15 pdf](http://dicom.nema.org/medical/dicom/current/output/pdf/part15.pdf) – JessieB

+0

嗨JessieB,不幸匿名化超出了我的DICOM專業知識。鑑於匿名數據不適用於患者治療,我對DICOM規範之後的匿名者持懷疑態度。我懷疑他們不遵循標準是很常見的(只是基於個人對軟件開發經驗的看法)。 – zivy