我尝试使用以下方法获取Tag值:
var vSAD = sel.VirtualSourceAxisDistance.Data;
我也试过var vSAD = dcm.FindAll("300A030A");
它只返回一个数字(假设有2个)。
然后我尝试读取元素并仅保存到另一个dicom文件,找到VR=FL
,VM=2
只有一个数字出现在新文件中。
如何解决此问题以获得2个数字?
这是否意味着我使用var dcm = DICOMFileReader.Read(openFileDialog1.FileName);
它只返回一个号码?
我在FloatingPiontSingle.cs文件中看到了:
public class FloatingPointSingle : AbstractElement<float?>
{
public FloatingPointSingle() { }
public FloatingPointSingle(Tag tag, float? data)
{
Tag = tag;
Data = data;
VR = Enums.VR.FloatingPointSingle;
}
}
答案 0 :(得分:2)
我没有意识到FL VM可能不止一个。我只是看了DICOM规范,并意识到它是可能的。这实际上很容易解决。您是否可以发布包含此类值的示例(匿名)DICOM文件的链接,我将修补核心框架。
仅供参考:要自我修补,您需要将FloatingPointSingle
更改为:
public class FloatingPointSingle : AbstractElement<float[]>
{
public FloatingPointSingle() { }
public FloatingPointSingle(Tag tag, float[] data)
{
Tag = tag;
Data = data;
VR = Enums.VR.FloatingPointSingle;
}
}
然后在LittleEndianReader.ReadSinglePrecision()
和BigEndianReader.ReadSinglePrecision()
方法中,您需要更改逻辑以允许连接的浮点数(无分隔符)。