- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 gdcm 的 CompositeNetworkFunctions 从服务器获取 DICOMS .我的测试服务器是使用“Orthanc”设置的。
当我运行 Move 请求时,我得到:
terminate called after throwing an instance of 'gdcm::Exception'
what():/home/myname/Builds/GDCM/Source/Source/Common/gdcmException.h:74 ():
当我捕获到那个异常时,我发现它是一个“未处理的异常”,没有更多信息。因此,我没有捕获它,而是使用 gdb 运行该程序。这是我得到的:
0x00007ffff3e4dcc9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 0x00007ffff3e4dcc9 in __GI_raise (sig=sig@entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1 0x00007ffff3e510d8 in __GI_abort () at abort.c:89
#2 0x00007ffff44526b5 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3 0x00007ffff4450836 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4 0x00007ffff4450863 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5 0x00007ffff4450aa2 in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6 0x0000000000781772 in std::istream& gdcm::DataSet::ReadWithLength<gdcm::ExplicitDataElement, gdcm::SwapperNoOp>(std::istream&, gdcm::VL&) ()
#7 0x00000000007cd268 in gdcm::network::PresentationDataValue::ConcatenatePDVBlobsAsExplicit(std::vector<gdcm::network::PresentationDataValue, std::allocator<gdcm::network::PresentationDataValue> > const&) ()
#8 0x00000000007d6af1 in gdcm::network::ULConnectionManager::RunEventLoop(gdcm::network::ULEvent&, gdcm::network::ULConnection*, gdcm::network::ULConnectionCallback*, bool const&) ()
#9 0x00000000007d5190 in gdcm::network::ULConnectionManager::RunMoveEventLoop(gdcm::network::ULEvent&, gdcm::network::ULConnectionCallback*) ()
#10 0x00000000007d4acf in gdcm::network::ULConnectionManager::SendMove(gdcm::BaseRootQuery const*, gdcm::network::ULConnectionCallback*) ()
#11 0x00000000007c1750 in gdcm::CompositeNetworkFunctions::CMove(char const*, unsigned short, gdcm::BaseRootQuery const*, unsigned short, char const*, char const*, char const*) ()
#12 0x0000000000666c5c in PACSCMove::run (this=0x25a9dd0) at /home/myname/Projects/Hiwi/Source/src/PACSCMove.cpp:67
#13 0x00007ffff4798384 in ?? () from /home/myname/Qt/5.4/gcc_64/lib/libQt5Core.so.5
#14 0x00007ffff70fa182 in start_thread (arg=0x7fffd8cf5700) at pthread_create.c:312
#15 0x00007ffff3f1147d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
这是我的代码:
mQuery.InitializeDataSet( mQueryLevel );
setSearchParameter( gdcm::Tag( 0x20, 0x000d ), studyUID.toStdString() ); // Study UID
setSearchParameter( gdcm::Tag( 0x20, 0x000e ), seriesUID.toStdString() ); // Series UID
std::cout << "New Move Query: " << mQuery.ValidateQuery(true) << std::endl;
mQuery.WriteQuery("MoveQuery.dcm");
bool res = gdcm::CompositeNetworkFunctions::CMove(
"localhost", 4242,
&mQuery,
11110,
"IMHOTEP",
NULL,
"/home/myname/TestPatient" );
mQueryLevel 是 gdcm::eSeries
有趣的是,有了写入的查询文件“MoveQuery.dcm”,我可以使用 movescu 下载该文件:
movescu -v -p -aet IMHOTEP -od /home/myname/TestPatient/ --port 11110 localhost 4242 MoveQuery.dcm
我试过:
将 PatientID 也添加到查询中,这里是 MoveQuery.dcm 的内容:
$ dcmdump MoveQuery.dcm
# Dicom-File-Format
# Dicom-Meta-Information-Header
# Used TransferSyntax: Unknown Transfer Syntax
# Dicom-Data-Set
# Used TransferSyntax: Little Endian Implicit
(0008,0052) CS [SERIES] # 6, 1 QueryRetrieveLevel
(0010,0020) LO [4589301] # 8, 1 PatientID
(0020,000d) UI [1.2.840.113619.2.55.1.1762893669.2104.1060778173.267] # 52, 1 StudyInstanceUID
(0020,000e) UI [1.2.840.113619.2.55.1.1762893669.2104.1060778173.271] # 52, 1 SeriesInstanceUID
最佳答案
C-GET 服务并未在 DICOM 标准中停用。 C-GET 使用相同的连接从 SCP 检索图像,但 C-MOVE 使用并行连接,其中服务器将其角色切换为 SCU(客户端)并将尝试连接以移动目标 AE(目标服务器)。在这种情况下,您需要有一个 DICOM 监听器 (SCP) 来处理传入的连接。
我想你是说调用 AE 标题(C-Move 服务请求者)是“IMHOTEP”,你应该有一个 DICOM 监听器在端口“11110”上监听。您正在请求远程 AE“ORTHANC”(称为 AE)将系列移动到 C-Move Destination AE(这应该是您身边的 DICOM 监听器 (SCP),即“IMHOTEP”)。
关于c++ - DICOM C_MOVE 与 gdcm 的 "CompositeNetworkFunctions",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29180692/
我正在尝试将一个 DICOM 实例(在我的例子中是一个图像)从一个应用程序发送到一个服务器。但不知何故,它并没有发生。 日志显示某些标签丢失。 那么在 DICOM 关联(在我的例子中是 C-STORE
我所说的方向是指例如从患者的头部到底部或从他的底部到头部。到目前为止,我所看到的胸部 CT 扫描表明,实例编号 1 切片通常是从 body 上部向下的第一个切片,但我不知道这是标准的一部分还是我应该做
我知道单帧和多帧 dicom 图像文件。我想了解电影 dicom 图像,还有其他 dicom 图像格式。 最佳答案 正如您提到的,Alon 在他的评论中提到,DICOM 文件格式支持单帧和多帧像素数据
在处理 DICOM 研究、系列和媒体概念时,我想知道这些值是对所有数据都是唯一的,还是仅对它们所属的患者而言是唯一的。 换句话说;我可以让 2 名患者的研究/系列/sop 实例 uid 对这两名患者具
我有两个 图片 来自同一系列,但两个图像具有相同的 实例编号 6. 有可能吗????根据我的理解,系列实例编号对于该系列中的图像来说是唯一的。所以请帮助我......无论如何,是否可以从模态工作站??
我需要在像 firefox/chrome 这样的浏览器上显示 DICOM 图像。我遇到了这个名为 DWV 的查看器 - https://github.com/ivmartel/dwv . 我想知道是否
我遇到了在私有(private)标签中包含序列的 DICOM 对象;该序列中的每个项目都包含其自己的特定字符集 (0008,0005)。所有特定字符集元素都具有相同的值。 我还发现这些额外的特定字符集
如何识别 dicom 图像是否为压缩格式?还想知道如何读取压缩图像像素数据? 最佳答案 您可以使用命令行工具转储此类信息,例如 gdcminfo: $ gdcminfo 012345.002.050.
是否可以通过读取该研究中文件的 DICOM 头来找到 DICOM 研究中的图像数量? 我正在开发一个 Java 应用程序,它接收来自不同来源的 DICOM 研究。我只是想检查一份研究是否已经完全收到。
我必须从文件夹中选择所有有效的 DICOM 文件。我可以递归地从具有 *.DCM 扩展名的文件夹中选择所有文件。但是任何带有 *.DCM 的文件也会被拾取,并且此类文件不是有效的 DICOM 文件。
我有一堆 DICOM 冠状图像,我使用图像位置(患者)(0020,0032) 标签按正确的顺序对图像进行排序。 然而,该堆栈还包含一个“概述”图像,显示如何从轴向堆栈生成冠状切片 - 请参阅附件。 显
我一直在处理每个大约 4 MB 的 dicom 文件,但我最近收到了一些每个 280 KB 的文件。我不确定这是因为它们来自不同的 CT 扫描仪,还是新的 dicom 在给我之前被压缩了。有没有办法找
为了创建匿名化/去识别化工具,我想从 DICOM 文件中删除/覆盖所有不必要的标签/属性。我在互联网上搜索过,但没有找到 DICOM 文件必须使用哪些标签的明确列表。 我发现有多种类型,类型1是强制的
我有一堆 DICOM 冠状图像,我使用图像位置(患者)(0020,0032) 标签按正确的顺序对图像进行排序。 然而,该堆栈还包含一个“概述”图像,显示如何从轴向堆栈生成冠状切片 - 请参阅附件。 显
我一直在处理每个大约 4 MB 的 dicom 文件,但我最近收到了一些每个 280 KB 的文件。我不确定这是因为它们来自不同的 CT 扫描仪,还是新的 dicom 在给我之前被压缩了。有没有办法找
为了创建匿名化/去识别化工具,我想从 DICOM 文件中删除/覆盖所有不必要的标签/属性。我在互联网上搜索过,但没有找到 DICOM 文件必须使用哪些标签的明确列表。 我发现有多种类型,类型1是强制的
对不起,如果这是非常基本的,我是 DICOM 的新手。我知道 DICOM 文件有多个部分,例如:患者、研究、系列和实例(图像)。 现在要与设备通信,它需要一个传输语法,它告诉通信模式,如 Little
我在解释 DICOM 规范时遇到困难。具体来说,如果我有两个 DICOM 文件,每个文件都表示来自单个 CT 系列(同一研究)的独特 CT 切片。这两个文件都将包含 Patient 模块,因此理论上它
几天以来,我一直在使用 FO-DICOM 处理 DICOM 文件。 我正在使用一组 dicom 文件进行测试,并且我一直在打印“光度解释”和“每像素样本”值,以便更好地了解我正在处理的图像类型。 结果
AFAIK 没有 bool 值表示,我需要在私有(private)标记中指定 bool 值 true/false。 我想到了SH (短字符串),说 TRUE或 FALSE .是否有标准或广泛使用的方法
我是一名优秀的程序员,十分优秀!