首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >status.pixel_array Dataset: pydicom返回成功,但pydicom中包含错误文本

status.pixel_array Dataset: pydicom返回成功,但pydicom中包含错误文本
EN

Stack Overflow用户
提问于 2019-03-09 17:40:34
回答 2查看 465关注 0票数 2

我使用dcm4chee作为PACS服务器,并尝试基于患者姓名检索研究。

相关代码为:

代码语言:javascript
复制
ae = AE()
ae.add_requested_context(PatientRootQueryRetrieveInformationModelFind)
ae.add_requested_context(VerificationSOPClass)
assoc = ae.associate(config['pacs_remotehost']['ip'], config['pacs_remotehost']['ports']['DICOM'],ae_title='DCM4CHEE')

if assoc.is_established:
    ds = Dataset()
    ds.PatientName = '*************' #name erased 
    ds.QueryRetrieveLevel = 'PATIENT'
    ds.StudyInstanceUID = ''
    responses = assoc.send_c_find(ds, query_model='P')
    for (status, identifier) in responses:
        if status:
           print('C-FIND query status: 0x{0:04x}'.format(status.Status))

           # If the status is 'Pending' then `identifier` is the C-FIND response
           if status.Status in (0xFF00, 0xFF01):
               print(identifier)
        else:
           print('Connection timed out, was aborted or received invalid response')

# Release the association
    assoc.release()
else:
    print('Association rejected, aborted or never connected')

我得到了一个成功的信号:

C-FIND查询状态: 0x0000

但是当我想要访问像素数据时,我输入的是status.pixel_array,而不是Numpy数组,它包含以下错误:

代码语言:javascript
复制
    File "<ipython-input-2-c65fb50a50a6>", line 1, in <module>
    status.pixel_array File "/usr/local/lib/python2.7/site-packages/pydicom/dataset.py", line 552, in __getattr__
    return super(Dataset, self).__getattribute__(name)
  File "/usr/local/lib/python2.7/site-packages/pydicom/dataset.py", line 949, in pixel_array
    self.convert_pixel_data()
  File "/usr/local/lib/python2.7/site-packages/pydicom/dataset.py", line 816, in convert_pixel_data
    transfer_syntax = self.file_meta.TransferSyntaxUID
  File "/usr/local/lib/python2.7/site-packages/pydicom/dataset.py", line 552, in __getattr__
    return super(Dataset, self).__getattribute__(name)
AttributeError: 'Dataset' object has no attribute 'file_meta'

有人知道为什么我得到这个错误而不是图像吗?

EN

回答 2

Stack Overflow用户

发布于 2019-03-09 18:12:29

我不太明白您想要做什么(也不了解相关技术),但我认为您的理解是不正确的。

你正在做病人级别的C-FIND。您将获得响应(匹配条目),然后最终获得成功响应。好的。

然后,您试图访问这些响应中的像素数据元素?-这没有意义。

C-FIND,不会给你实际的实例/镜像。它只为您提供SCP上存在的条目,这些条目与您的搜索条件相匹配,最后给出一个成功响应。如果找不到匹配的条目,则仅返回最终成功响应。

所以,你想要这些条目的像素数据,它不会出现在那里。您还必须根据在C-FIND响应中收到的标识符执行C-MOVE (或C-GET)。我已经在details here中对此进行了解释。

这一段会有点复杂,可能会在不同的实现的工作流程中有一些变化。要执行CMove,必须存在CStoreSCP。您(CMoveSCU)将向您要接收实例的AE标题为CStoreSCP的PACS (CMoveSCP)发送CMove命令。这意味着要么你也应该开发你自己的CStoreSCP,要么你应该使用其他的。CMoveSCP将读取您发送的AE标题,并将其与其配置进行匹配。这意味着您的CStoreSCP必须事先在PACS上进行配置。在配置中,它将采用将在其中建立新关联的IP地址和端口。这就是所谓的角色转换。CMoveSCP现在也可以作为CStoreSCU使用。作为CStoreSCU,PACS会将实例推送到您的CStoreSCP。这样,您实际上就得到了图像/实例。

这样,您将实际获得实例。拥有这些实例后,您可以访问这些实例中的像素数据。

请参考this优秀文章,了解Q/R如何工作的更多信息。

简单的真实示例:

您有一个数据库表,其中包含个人id和指向其个人资料照片的URL。你想在你的网页上加载那个头像。

因此,您首先触发一个SQL查询(DICOM中的C-FIND)并获取记录。然后,从记录中读取URL。使用此URL,您可以启动从服务器下载照片的新操作(DICOM中的C-MOVE)。一旦你下载了照片,你就可以将它加载到你的网页中。

呀..。这个例子很糟糕,而且不完全匹配。但是,我希望您能理解,这涉及到两个不同的操作。

票数 1
EN

Stack Overflow用户

发布于 2019-03-11 17:31:08

我完全同意Amit Joshi所说的,但我想补充的是,即使您使用在C-FIND中找到的标识符执行C-MOVE,您也无法从状态中获取像素数据。状态仅传达C-FIND/C-MOVE操作的状态,而不是正在传输的数据。

对于C-MOVE (通常比C-GET更受支持),Move-SCP将打开到move目的地AE的C-STORE连接,并通过该连接传输图像。也就是说,C-MOVE仅传输有关图像传输的状态信息,而不是图像本身。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55075964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档