Как получить значение с VR=FL, VM=2 в Evil DICOM

Я попытался получить значение тега с помощью: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;
    }
}

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() Метод, вам нужно будет изменить логику, чтобы разрешить сцепленные числа с плавающей запятой (без разделителя).

Другие вопросы по тегам