1

我正在尝试检查是否有办法从私有 DICOM 标签中提取 VR(值表示)。

我知道 DicomObject.vROf:

http://www.dcm4che.org/docs/dcm4che2-apidocs/org/dcm4che2/data/DicomObject.html#vrOf(int)

如果没有为此私有 TAGS 配置 VRMap,则返回 UN!我想做类似的事情:

vR = dcmObj4.vrOf(0X0051100b).toString();
    if("LO".equals(vR)) {
        log.info("VR of acquisitionMatrix is: " + vR);
        acquisitionMatrixX = dcmObj4.getString(0X0051100b, VR.LO);
    } else if ("SH".equals(vR)) {
        log.info("VR of acquisitionMatrix is: " + vR);
        acquisitionMatrixX = dcmObj4.getString(0X0051100b, VR.SH);
    } else if ("UN".equals(vR)) {
        log.info("VR of acquisitionMatrix is: " + vR);
        acquisitionMatrixX = dcmObj4.getString(0X0051100b, VR.UN);
    } else {
        log.info("VR of acquisitionMatrix is OTHER: " + vR);
    }

事实是我正在尝试解析来自特定供应商/型号的 dicom 文件,我可以看到即使对于相同的供应商/型号组合,不同的 VR 也可以在同一个私有 TAG 上使用!

我可以动态提取私有 dicom 标签的 VR 吗?

4

2 回答 2

1

Dicom Standard好吧, for中有一些规则Private Tags可以避免这种冲突。

请参阅此 Private Creator/Tags 用法说明: Overview Private Tag Elements

于 2015-06-05T10:56:45.723 回答
1

是的,您应该能够提取私有标签中的值。请注意,私有创建者数据元素 VR 始终为“LO”。当 VR 未知时,值字段对 Little/Big Endian 字节顺序不敏感,并且不应“字节交换”。因此,您可以假设属性的值字段以具有隐式 VR 编码的 Little Endian 字节顺序编码,而与当前的传输语法无关。

另请注意,UN 的值表示的长度字段可能包含未知长度的值,在这种情况下,可以假设内容是用隐式 VR 编码的,并且 PS 3.5 第 7.5.1 节具有与解析数据元素相关的信息一个未知的长度。

7.8 节还介绍了私有数据元素编码规则。

于 2015-06-05T15:28:55.850 回答