0

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

然后我尝试读取元素并仅保存到另一个 dicom 文件,发现 for 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;
    }
}
4

1 回答 1

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

于 2013-02-13T17:50:56.577 回答