嗨,我正在用pydicom读取DICOM文件
这篇文章不同于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'.我觉得匿名的时候出了点问题。我想知道为什么会这样。
删除TransferSyntaxUID是否与DICOM标准有关?
而且,我可以通过MATLAB,VTK,ITK阅读,但pydicom
所以现在我要做的是通过SimpleITK手动设置TransferSyntaxUID,然后通过pydicom再次读取。
我会让你知道什么时候管用
提前感谢
发布于 2017-09-05 11:59:35
pydicom存储库有一个允许缺少传输语法的更新。作为下一版本之前的一种解决办法,您可以修改filereader.py中的几行代码,如下所示的here
发布于 2017-09-05 22:54:38
根据我对DICOM标准的理解,传输语法UID (0002,0010)似乎是一个强制标签。这是一个指示它为is required的type 1 tag。
虽然这是标准所说的,但即使没有这个标记,库也可能能够读取这样的文件。我猜这是因为标准也定义了default transfer syntax。
关于用SimpleITK设置值,这肯定是可行的。此外,如果需要验证文件是否符合标准,可以使用David Clunie的dicom3tools,特别是dciodvfy和dcdump。
https://stackoverflow.com/questions/46045495
复制相似问题