在 DCMTK 中显示 ImageType 的全部内容
showing the full content of ImageType in DCMTK
我正在尝试使用 DCMTK 读取大量西门子 DICOM 图像,其中一些是马赛克图像。我正在寻找一种快速找到它们的方法。
我可以看到马赛克图像是在 ImageType 标签中指定的,例如
$ dcmdump ${im0} | grep ImageType
(0008,0008) CS [ORIGINAL\PRIMARY\ASL\NONE\ND\NORM\MOSAIC] # 40, 7 ImageType
大多数标签很容易用 findAndGetOFString()
读取(或类似的浮动等),但如果我这样做
tmpdata->findAndGetOFString(DCM_ImageType, tmpstring);
std::cout << "image type: " << tmpstring << "\n";
对于DcmDataset* tmpdata
和OFString tmpstring
,那么tmpstring
的内容只有ORIGINAL
,因此永远不会打印其余值。
在 dcmdump 中它被打印出来,但是 DCM_ImageType
的值似乎从未存储在字符串中,而我确实需要它。
'code strings' 是否有类似 findAndGetOFString()
的命令?也许我遗漏了一些明显的东西!
图像类型 (0008,0008) 是一个 multi-valued 属性。也就是说,它可能包括几个由反斜杠字符分隔的值。请注意,“正式”,反斜杠不是属性值的一部分。它是属性的多个值之间的分隔符。这就是你所拥有的。所以就DICOM而言,没有“一个值”而是多个。
DCMTK API 允许您处理这个(当然)。
findAndGetOFString() 有第三个参数(“索引”)来定义你想要获取的多个值中的哪一个。
您可能期望的行为就是 findAndGetOFStringArray() 所做的。
作为替代方案,您可以通过先获取“值多重性”来遍历属性的多个值,然后循环遍历
之类的值
DcmElement* element = tmpdata->findAndGetElement(DCM_ImageType);
int numberOfValues = element->getVM();
for(int index = 0; index < numberOfValues; index++)
{
OFString valueAtIndex;
element->GetOfString(valueAtIndex, index);
/// ... your concatenation goes here...
}
我正在尝试使用 DCMTK 读取大量西门子 DICOM 图像,其中一些是马赛克图像。我正在寻找一种快速找到它们的方法。
我可以看到马赛克图像是在 ImageType 标签中指定的,例如
$ dcmdump ${im0} | grep ImageType
(0008,0008) CS [ORIGINAL\PRIMARY\ASL\NONE\ND\NORM\MOSAIC] # 40, 7 ImageType
大多数标签很容易用 findAndGetOFString()
读取(或类似的浮动等),但如果我这样做
tmpdata->findAndGetOFString(DCM_ImageType, tmpstring);
std::cout << "image type: " << tmpstring << "\n";
对于DcmDataset* tmpdata
和OFString tmpstring
,那么tmpstring
的内容只有ORIGINAL
,因此永远不会打印其余值。
在 dcmdump 中它被打印出来,但是 DCM_ImageType
的值似乎从未存储在字符串中,而我确实需要它。
'code strings' 是否有类似 findAndGetOFString()
的命令?也许我遗漏了一些明显的东西!
图像类型 (0008,0008) 是一个 multi-valued 属性。也就是说,它可能包括几个由反斜杠字符分隔的值。请注意,“正式”,反斜杠不是属性值的一部分。它是属性的多个值之间的分隔符。这就是你所拥有的。所以就DICOM而言,没有“一个值”而是多个。 DCMTK API 允许您处理这个(当然)。
findAndGetOFString() 有第三个参数(“索引”)来定义你想要获取的多个值中的哪一个。
您可能期望的行为就是 findAndGetOFStringArray() 所做的。
作为替代方案,您可以通过先获取“值多重性”来遍历属性的多个值,然后循环遍历
之类的值DcmElement* element = tmpdata->findAndGetElement(DCM_ImageType);
int numberOfValues = element->getVM();
for(int index = 0; index < numberOfValues; index++)
{
OFString valueAtIndex;
element->GetOfString(valueAtIndex, index);
/// ... your concatenation goes here...
}