【问题标题】:How do I read a DICOM tag within another tag with ITK?如何使用 ITK 读取另一个标签中的 DICOM 标签?
【发布时间】:2015-10-14 10:12:28
【问题描述】:

我正在使用 ITK 读取 DICOM 文件,调用

dicomIO->GetValueFromTag(...)

读取标签值。这适用于“300a|011e”(龙门角度)之类的标签。问题在于试图读取嵌入在“3002|0030”中的标签“0018|0060”。

如果我将 GetValueFromTag 用于“3002|0030”,我会读回一个空字符串,因为“3002|0030”是曝光序列,没有任何价值。如何使用 ITK 读取标签内的标签?浏览 ITK 文档我看不出有什么方法可以做到这一点?

【问题讨论】:

    标签: dicom itk gdcm


    【解决方案1】:

    显然您不能使用 ImageIOType 从 DICOM 读取序列,而必须使用 GDCM。

    #include "gdcmReader.h"
    #include "gdcmImage.h"
    #include "gdcmDataElement.h"
    #include "gdcmTag.h"
    
    using namespace gdcm;
    
    bool readGDCMTags(std::string filename, float &kvp)
    {
        Reader reader;
        reader.SetFileName(filename.c_str());
        reader.Read();
    
        File &file = reader.GetFile();
        DataSet &ds = file.GetDataSet();
    
        const Tag tag(0x3002, 0x0030);
        const Tag subTag(0x0018, 0x0060);
    
        const DataElement &seq = ds.GetDataElement(tag);
    
        SmartPointer<SequenceOfItems> sqi = seq.GetValueAsSQ();
    
        assert(sqi->GetNumberOfItems() == 1);
    
        Item &item = sqi->GetItem(1);
    
        DataSet &subds = item.GetNestedDataSet();
    
        if (!subds.FindDataElement(subTag))
        {
            return false;
        }
    
        const DataElement &de = item.GetDataElement(subTag);
    
        const ByteValue *value = de.GetByteValue();
    
        char *buffer;
    
        VL vl = value->GetLength();
        uint32_t length = (uint32_t)vl;
    
        buffer = new char[length + 1];
    
        value->GetBuffer(buffer, length);
    
        buffer[length] = 0;
    
        kvp = (float)atof(buffer);
    
        delete buffer;
    
        return true;
    }
    

    【讨论】:

    • 正确,SQ 值表示从未在 ITK MetaDataDictionary 中加载,如 here
    【解决方案2】:

    通常该标签应位于顶层,因为它是用于 X 射线/CT 扫描仪的峰值电压。您是否尝试过直接读取标签“0018|0060”,例如:

    dicomIO->GetValueFromTag("0018|0060")
    

    ?

    【讨论】:

    • 是的,它读取为值“”。标签在那里,但在另一个标签内。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多