【问题标题】:How to get the value with VR=FL, VM=2 in Evil DICOM如何在 Evil DICOM 中获得 VR=FL、VM=2 的值
【发布时间】:2013-01-29 20:43:38
【问题描述】:

我尝试使用以下方法获取标记值: 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;
    }
}

【问题讨论】:

    标签: c# dicom evil-dicom


    【解决方案1】:

    我没有意识到 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() 方法中,您需要更改逻辑以允许连接浮点数(无分隔符)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      • 2018-02-17
      • 2019-12-18
      • 1970-01-01
      • 1970-01-01
      • 2015-12-18
      相关资源
      最近更新 更多