如何在Evil DICOM中使用VR = FL,VM = 2获取值

时间:2013-01-29 20:43:39

标签: c# dicom evil-dicom

我尝试使用以下方法获取Tag值: var vSAD = sel.VirtualSourceAxisDistance.Data; 我也试过var vSAD = dcm.FindAll("300A030A"); 它只返回一个数字(假设有2个)。

然后我尝试读取元素并仅保存到另一个dicom文件,找到VR=FLVM=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;
    }
}

1 个答案:

答案 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()方法中,您需要更改逻辑以允许连接的浮点数(无分隔符)。