大家.我在Visual Studio 2013中编译DCMTK 3.6.1.我的操作系统是Windows 8.我还使用了CMake 3.2.3.我已经成功编译了ALL_BUILD项目的两个x64版本的调试和发布.但是,对于INSTALL项目,我无法编译它,因为发生以下错误:
Error 1 error MSB3073: The command "setlocal
"C:\Program Files (x86)\CMake\bin\cmake.exe" -DBUILD_TYPE=Release -P cmake_install.cmake
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
:cmErrorLevel
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd
:VCEnd" exited with code 1. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets 132
Run Code Online (Sandbox Code Playgroud)
根据此链接,我需要管理员权限.但我已经在管理模式下运行Visual Studio.有人可以告诉我我可能做错了什么吗?非常感谢你!
我想知道是否有人试图解决以下问题.我需要在远程DICOM Q/R服务器上执行一系列测试.这将允许一些简单的DICOM一致性声明检查.
作为测试套件的实现细节,我运行以下(DCMTK样式命令):
$ findscu --study --cancel 1 --key 0020,0010=* --key 8,52=STUDY --aetitle MINE --call THEIR dicom.example.com 11112
Run Code Online (Sandbox Code Playgroud)
这里的目标是找到一个有效的StudyID(稍后我将使用该StudyID执行较低的密钥级别C-FIND,以及一些相关的C-MOVE查询).当然,如果我可以上传我自己的数据集并尝试将其取回,那将会容易得多,但我无法在临床环境中对付正在运行的PACS.我需要用最少量的查询来定义如何找到有效的StudyID.
但是我担心某些DICOM实现可能会禁止policies查询整个数据库.
所以我想知道是否有人编写了这些列表policies,并且可能描述了一种从具有最少数量的C-FIND查询的远程服务器检索有效StudyID的方法.
我正在使用DCMTK(3.6.0)库来获取(0020,0013)标签的值,该标签是图像编号,也就是系列的切片编号.
我在批处理脚本中使用以下内容
for /f "tokens=2 delims=[]" %%a in ('@echo. ^|c:\Libs\dcmtk-3.6.0\bin\dcmdump +P "0020,0013" %%i') do (set img_no=%%a)
Run Code Online (Sandbox Code Playgroud)
它通常很顺利,但有时这个值总是设置为整个系列的'0'.
我试图用这个命令转储它
C:\Libs\dcmtk-3.6.0\bin>dcmdump +P "0020,0013" PathToInvalideDICOM\img.dcm
(0020,0013) IS [0] # 2, 1 InstanceNumber
(0020,0013) IS [4] # 2, 1 InstanceNumber
(0020,0013) IS [0] # 2, 1 InstanceNumber
C:\Libs\dcmtk-3.6.0\bin>dcmdump +P "0020,0013" PathToCorrectDICOM\img.dcm
(0020,0013) IS [0] # 2, 1 InstanceNumber
(0020,0013) IS [5] # 2, 1 InstanceNumber
Run Code Online (Sandbox Code Playgroud)
我们可以看到,有时得到的值(不是'0')是最后一个.在这种情况下,一切都很好.但在某些特定情况下,正确的值存储在两个"0"之间.
我也试过一个不同的翻斗车(DCM4CHE 2.0.23),它给了我相同的结果.
我想知道为什么会这样.更重要的是,如何获得正确的价值?
在批处理文件中,有没有办法消除0直到正确的数字?
默认情况下,上面引用的命令行采用最后一个字段......我想.
我已经在 Ubuntu 18.04 上设置了 DCMTK 的 wlmscpfs。工作列表文件通过 dump2dcm 从转储文件转换为 .wl 文件。到目前为止,当从几台超声波机器(三星、西门子)查询时,工作列表文件已返回成功匹配。然而,对于另一台机器,wlmscpfs 一直说明“来自工作列表文件的信息......与查询不匹配”,尽管搜索掩码包含匹配的值。
这是详细日志:
Find SCP Request Identifiers:
# Dicom-Data-Set
(0008,0020) DA (no value available)
(0008,0050) SH (no value available)
(0008,0080) LO (no value available)
(0008,0081) ST (no value available)
(0008,0082) SQ (Sequence with undefined length #=1)
(fffe,e000) na (Item with undefined length #=4)
(0008,0100) SH (no value available)
(0008,0102) SH (no value available)
(0008,0103) SH (no value available)
(0008,0104) LO (no value available)
(fffe,e00d) na (ItemDelimitationItem)
(fffe,e0dd) na (SequenceDelimitationItem)
(0008,0090) …Run Code Online (Sandbox Code Playgroud) 我使用OFFIS DICOM dcmdump工具从DICOM图像中提取信息:http: //support.dcmtk.org/docs/dcmdump.html
我dcmdump.exe -M -L +Qn用来转储DICOM信息.
输出看起来像
# Dicom-Meta-Information-Header
# Used TransferSyntax: Little Endian Explicit
(0002,0000) UL 164 # 4, 1 FileMetaInformationGroupLength
(0002,0001) OB 00\01 # 2, 1 FileMetaInformationVersion
(0002,0002) UI =DigitalXRayImageStorageForPresentation # 28, 1 MediaStorageSOPClassUID
(0002,0003) UI [1.2.826.0.1.3680043.2.876.8598.1.4.0.20160428091911.2.2] # 56, 1 MediaStorageSOPInstanceUID
(0002,0010) UI =JPEGLSLossless # 22, 1 TransferSyntaxUID
(0002,0012) UI [1.2.276.0.64] # 12, 1 ImplementationClassUID
Run Code Online (Sandbox Code Playgroud)
为什么dcmdump将(0002,0010)转换为值JPEGLSLossless而不是1.2.840.10008.1.2.4.80?
有没有切换这样做?
我正在将 DCMTK 用于 C++ 项目,并希望从 dicom 文件中检索像素。我使用了这个基本示例:
DicomImage *image = new DicomImage("test.dcm");
if (image != NULL)
{
if (image->getStatus() == EIS_Normal)
{
if (image->isMonochrome())
{
image->setMinMaxWindow();
Uint8 *pixelData = (Uint8 *)(image->getOutputData(8 /* bits */));
if (pixelData != NULL)
{
/* do something useful with the pixel data */
}
}
} else
cerr << "Error: cannot load DICOM image (" << DicomImage::getString(image->getStatus()) << ")" << endl;
}
delete image;
Run Code Online (Sandbox Code Playgroud)
在“对像素数据做一些有用的事情”部分中,如何使用 PixelData 变量来获取像素
标题说明了一切。dcm2pnm ( http://support.dcmtk.org/docs/dcm2pnm.html )、dcmj2pnm ( http://support.dcmtk.org/docs/dcmj2pnm.html ) 和 dcml2pnm ( http://support .dcmtk.org/docs/dcml2pnm.html)dcmtk 工具包的命令(http://support.dcmtk.org/docs/pages.html)?他们似乎都将 dicom 图像转换为其他格式。有什么特殊情况应该优先于其他人吗?
编辑:似乎 dcml2pnm 支持更多格式。为什么不把它用于所有目的?其他命令的优点是什么?
关于处理 DICOM 中的私有标签。谁能给我以下的编码示例: 1. 编写私有标签固定属性标签。2. 类似的读取私有标签的例子。注意:有时私有标签会被重新定位。当私有标签被重新定位时如何读取私有标签。例如:有时 Private Creator 会位于 (4201,0010) LO [测试数据] # 16, 1 PrivateCreator (4201,1000) IS [11] # 2, 1 未知标签和数据
或者它可以位于 (4201,0011) LO [测试数据] # 16, 1 PrivateCreator (4201,1100) IS [11] # 2, 1 未知标签和数据
在阅读可重定位私有标签时有任何建议。同样如何在写入时避免重定位。
我的问题是我必须只检索一批图像的某些标签。但这个过程需要太长的时间。
我在用着dcmdump -M -L +P '0010,0020' +P '0010,0010
-M不要加载很长的值(例如像素数据)-L打印缩短的长标签值(默认)+P打印标签的文本转储,该选项可以指定多次但单个文件的“转储”需要~1sc. 这是因为所有标签仍在加载,但随后+P 正在搜索所有标签。
我只有几个标签要检索。是否有可能仅加载某些特定标签以减少转储文件所需的时间?
也许 DCMTK 不是合适的工具。我对一切都持开放态度。