我正在尝试检查是否有办法从私有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文件,我可以看到,即使是相同的供应商/型号组合,也可以在同一个私人TAG上使用不同的VR!
我可以动态提取私有dicom标签的VR吗?
答案 0 :(得分:1)
嗯,Dicom Standard
Private Tags
中有规则可以避免此类冲突。
请参阅私有创建者/标签的使用说明: Overview Private Tag Elements
答案 1 :(得分:1)
是的,您应该能够提取私有标记中的值。请注意,私人创建者数据元素VR始终为“LO”。当VR未知时,Value Field对Little / Big Endian字节排序不敏感,不应为'byteswapped'。因此,您可以假设属性的值字段使用隐式VR编码以Little Endian字节顺序进行编码,而不管当前的传输语法。
另请注意,UN的值表示的长度字段可能包含未知长度的值,在这种情况下,可以假设内容使用隐式VR和PS 3.5进行编码。第7.5.1节具有与解析相关的信息长度未知的数据元素。
第7.8节还介绍了私有数据元素编码规则。