2017-09-05 39 views
0

こんにちは、私はこの投稿は pydicom 'Dataset' object has no attribute 'TransferSyntaxUID'pydicom:データセットが属性を持っていない 'TransferSyntaxUID'

異なっている。ここに私のコードは

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

このですpydicom

でDICOMファイルを読み込むに苦しみましたエラーが発生する

 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'. 

匿名で何かが間違ってしまう。 これがなぜ発生するのか知りたいです。

DICOM標準に関連するTransferSyntaxUIDを削除していますか?私はそうMATLABVTKITKしかしpydicom

て読むことができます

とは、今、私が何をしようとしているSimpleITKを経由して、手動でTransferSyntaxUID設定されているとpydicomを経由して再び読み込みます。私は、これは事前

答えて

0

pydicomリポジトリに

おかげで働くときに知ってもらおう

が不足している転送構文の耐性が更新されています。次のリリースまでの回避策として、filereader.pyの2行を修正することができます。here

+0

あなたの答えがありがとう、あなたがリンクしているpydicomの問題を確認します。 – JessieB

0

私はDICOM標準を理解しているので、Transfer Syntax UID(0002,0010)は必須タグです。それはis requiredを示すtype 1 tagです。

これは標準ですが、ライブラリはこのタグがなくてもこのようなファイルを読み取る可能性があります。標準では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

関連する問題