标签: gdcm

使用vtk gdcm从多帧dicom映像获取单帧字节数组

我按如下方式读取多帧dicom并获取字节数组中图像的总像素数据.

 gdcm.ImageReader _reader = new gdcm.ImageReader();
_reader.SetFileName("FileName");
_reader.Read(); 
byte[] byteArray= new byte[_reader.GetImage().GetBufferLength()];
_reader.GetImage().GetBuffer(byteArray);
Run Code Online (Sandbox Code Playgroud)

但是对于具有超过300帧的多帧,它会给出内存不足的异常.所以我想一次提取一个字节数组中的单帧像素数据.任何的想法??

c# vtk gdcm

6
推荐指数
0
解决办法
319
查看次数

具有gdcm的“ CompositeNetworkFunctions”的DICOM C_MOVE

我正在尝试使用gdcm的CompositeNetworkFunctions从服务器获取DICOMS 。我的测试服务器是使用“ Orthanc”设置的。

当我运行Move请求时,我得到:

terminate called after throwing an instance of 'gdcm::Exception'
Run Code Online (Sandbox Code Playgroud)

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&) …
Run Code Online (Sandbox Code Playgroud)

c++ dicom gdcm

5
推荐指数
1
解决办法
785
查看次数

显示DICOM monochrome2,其存储位少于分配的位

我想显示具有光度解释MONOCHROME2的DICOM文件.

一些图像规格是 -

Rows:           1024
Columns:        1024
No of Frames:   622
Bits Allocated: 16
Bits Stored:    10
High Bit:       9
Pixel Representation: 0
Sample per pixel: 1
Run Code Online (Sandbox Code Playgroud)

gdcmRegionReader用以下面的方式提取单帧字节数组.

 gdcm.ImageRegionReader _regionReader = new gdcm.ImageRegionReader();
 _regionReader.SetRegion(_boxRegion);  // _boxRegion is some region
 _regionReader.ReadIntoBuffer(Result, (uint)Result.Length);
 Marshal.Copy(Result.ToArray(), 0, _imageData.GetScalarPointer(), 
 Result.ToArray().Length);
 _viewer.SetInput(_imageData);  // _viewer = vtkImageViewer
Run Code Online (Sandbox Code Playgroud)

但是,当我显示该文件时,它显示如下..使用gdcmRegionReader显示MONOCHROME2 dicom

但原始图像是这样的..原始图像

那么有人可以帮助我如何加载和显示MONOCHROME2 dicom图像.

c# dicom vtk gdcm

5
推荐指数
1
解决办法
346
查看次数

PyDICOM 无法读取像素数据,需要 GDCM 或 Pillow

我正在使用pydicom,我的代码非常简单:

image = np.stack([s.pixel_array for s in scans])
Run Code Online (Sandbox Code Playgroud)

但这会产生运行时错误:

RuntimeError: The following handlers are available to decode the pixel data however they are missing required dependencies: GDCM (req. GDCM), Pillow (req. Pillow)
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么做。任何帮助都会有帮助。

python python-imaging-library gdcm pydicom

4
推荐指数
1
解决办法
8462
查看次数

警告:禁用递归宏的扩展

我目前正在GDCM使用MacOSX默认编译器构建项目:clang.此编译器在其自己的标头中触发警告(请参阅参考资料):

In file included from /Users/builder/external/GDCM/Source/MediaStorageAndFileFormat/gdcmJPEG12Codec.cxx:21:
/Users/builder/external/GDCM/Source/MediaStorageAndFileFormat/gdcmJPEGBITSCodec.cxx:336:9: warning: disabled expansion of recursive macro [-Wdisabled-macro-expansion]
    if (setjmp(jerr.setjmp_buffer))
        ^
/Users/builder/llvm/llvm-rel-install/bin/../include/c++/v1/setjmp.h:40:21: note: expanded from macro 'setjmp'
#define setjmp(env) setjmp(env)
                    ^
In file included from /Users/builder/external/GDCM/Source/MediaStorageAndFileFormat/gdcmJPEG12Codec.cxx:21:
/Users/builder/external/GDCM/Source/MediaStorageAndFileFormat/gdcmJPEGBITSCodec.cxx:724:9: warning: disabled expansion of recursive macro [-Wdisabled-macro-expansion]
    if (setjmp(jerr.setjmp_buffer))
        ^
/Users/builder/llvm/llvm-rel-install/bin/../include/c++/v1/setjmp.h:40:21: note: expanded from macro 'setjmp'
#define setjmp(env) setjmp(env)
                    ^
2 warnings generated.
Run Code Online (Sandbox Code Playgroud)

这可能是llvm标题中的一个明显错误(我很难相信),或者我错过了关于使用setjmpin的一些内容C++98.

c++ llvm clang gdcm

2
推荐指数
1
解决办法
3067
查看次数

来自 CMake 的 Emscripten 库无法链接

我在 Windows 10 64 位平台上使用 Grassroot Dicom 查看器版本 2.8.9 编译成 Emscripten 库 bc。

我按照本网站的说明进行操作

emconfigure cmake .
emmake make VERBOSE=1
Run Code Online (Sandbox Code Playgroud)

之后,我得到了以 .a 而不是 .bc 结尾的库文件,类似于

libgdcmcharls.a libgdcmCommon.a libgdcmDICT.a ....

当我查看它开头的每个静态库文件的汇编代码时

!拱。/

代替

公元前

如教程网站中所述注意

使用上述过程,某些构建系统可能无法正确发出位代码,您可能会看到无效的位代码警告。您可以运行 file 来检查文件是否包含位码(您也可以手动检查内容是否以 BC 开头)。还值得运行 emmake make VERBOSE=1 这将打印出它运行的命令 - 您应该看到正在使用 emcc,而不是本机系统编译器。如果不使用 emcc,您可能需要修改 configure 或 cmake 脚本。

我认为这是我无法生成内容以 BC 开头的库的问题,但我得到了!拱 ./ ?

当然这些文件不能从 emcc 链接(找不到参考错误)

error: undefined symbol: _ZN4gdcm11ImageReader8GetImageEv
error: undefined symbol: _ZN4gdcm11ImageReaderC1Ev
error: undefined symbol: _ZN4gdcm11ImageReaderD1Ev
error: undefined symbol: _ZN4gdcm5Trace14GetErrorStreamE
Run Code Online (Sandbox Code Playgroud)

所以我根据 …

c++ makefile cmake emscripten gdcm

1
推荐指数
1
解决办法
1847
查看次数

标签 统计

gdcm ×6

c++ ×3

c# ×2

dicom ×2

vtk ×2

clang ×1

cmake ×1

emscripten ×1

llvm ×1

makefile ×1

pydicom ×1

python ×1

python-imaging-library ×1