基本的に、gdcm C++ ライブラリを使用して、DICOM ファイルからすべてまたはほとんどの属性値を読み取ろうとしています。文字列以外の値を取得するのに苦労しています。gdcm の例では、一般に、属性テンプレート クラスを使用できるようにグループ/要素番号を事前に知っていると想定していますが、属性テンプレート クラスを使用する必要も関心もありません。すべての属性名と値を報告する必要があるだけです。実際には、値は XML に入る必要があるため、文字列表現が必要です。私が現在持っているのは次のようなものです:
for (gdcm::DataSet::ConstIterator it = ds.Begin(); it!=ds.End(); ++it) {
const gdcm::DataElement& elem = *it;
if (elem.GetVR() != gdcm::VR::SQ) {
const gdcm::Tag& tag = elem.GetTag();
std::cout << dict.GetDictEntry(tag).GetKeyword() << ": ";
std::cout << elem.GetValue() << "\n";
}
}
UL のような数値の場合、出力は "Loaded:4" のようになります。これは、おそらくライブラリが 4 バイトのデータ (unsigned long) をロードしたことを意味します。これはまったく役に立ちません。実際の値を取得するにはどうすればよいですか? 私は確かに明らかな何かを見落としているに違いありません。
例から、それを行うことができるgdcm::StringFilterクラスがあるようですが、アルゴリズムの複雑さを二次的にするDICOMファイル内の各要素を単独で検索したいようです。これは確かに私がしたいことです避けるのが好きです。
ティア・パーヴォ