2

コンテキストを説明するために、DICOM ファイルを解析していますが、Transfer Syntax エントリを使用して暗黙的または明示的な解析を使用するかどうかを判断するのに苦労しています。しかし、簡略化された構文を定義するので、dicom の知識は必要ありません。

一連のエントリがあり、各エントリにはgroup number、および のdata部分があります。グループ番号は常に として表されu2ますが、データはさまざまなタイプにすることができu2ますu4。エントリの順序は任意ですが、 のエントリはすべてgroup number == 2先頭に配置する必要があります。のすべてのエントリgroup number == 2のデータ型は ですu2が、後続のデータ部分は異なる場合があります。

ここで難しい部分があります:これとまったく同じエントリが以前に存在した場合にのみ、を持つすべてのアイテムgroup number != 2がデータ型を持ちます。u4

(group, data) == (0x0002, 0x0101)

たとえば、Python では、次のように解析します。

def read_entries(stream):
  is_u4 = False
  while not stream.eos():
    group = stream.read_u2()
    if group != 2 and is_u4:
      data = stream.read_u4()
    else:      
      data = stream.read_u2()
    if group == 2 and data == 0x0101:
      is_u4 = True
    yield (group, data)

kaitai-struct を使用してこれを達成する方法はありますか?

4

1 に答える 1