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