如何使用GDCM读取多帧DICOM文件?
How to read multi frame DICOM files using GDCM?
我正在尝试使用 gdcm 库读取多帧 DICOM 文件。
但是我只能使用以下代码读取单帧dicom文件数据:
gdcm::ImageReader reader;
reader.SetFileName(path);
if(!reader.Read()) return false;
const gdcm::Pixmap &image = reader.GetPixmap();
int length = image.GetBufferLength();
char *buffer = new char[length];
image.GetBuffer(buffer);
如何访问另一个框架?
使用 GDCM 3.0.8,您可以使用以下代码读取帧,
gdcm.ImageRegionReader imageReader = new gdcm.ImageRegionReader();
imageReader.SetFileName(@"multiframe.dcm");
imageReader.ReadInformation();
gdcm.Image gimage = imageReader.GetImage();
uint numDims = gimage.GetNumberOfDimensions();
if (numDims < 2 || numDims > 3)
return false;
uint width = gimage.GetDimension(0);
uint height = gimage.GetDimension(1);
uint numFrames = 1;
if (numDims == 3)
numFrames = gimage.GetDimension(2);
gdcm.PixelFormat pixelFormat = gimage.GetPixelFormat();
var bytesPerPixel = pixelFormat.GetPixelSize();
for (uint frame = 0; frame < numFrames; frame++)
{
gdcm.BoxRegion boxRegion = new gdcm.BoxRegion();
boxRegion.SetDomain(0, width - 1, 0, height - 1, frame, frame);
boxRegion.ComputeBoundingBox();
imageReader.SetRegion(boxRegion);
byte[] pixelBytes = new byte[width * height * bytesPerPixel];
imageReader.ReadIntoBuffer(pixelBytes, (uint)pixelBytes.Length);
}
虽然这是 C# 代码,但C++几乎相同。 我希望有人可以从中得到帮助。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 如何从dicom文件中读取二进制数据
- 如何使用GDCM读取多帧DICOM文件?
- 如何使用Imebra库将压缩像素(用我自己的编码器压缩)回到DICOM图像文件中
- 如何从DICOM文件中提取PIXEL
- 如何使用纯C或C++文件读取方法解析DICOM文件
- 使用 DCMTK 压缩 DICOM 文件 (C++)
- 从 DICOM 文件 .dcm 获取像素数据
- 如何使用 MergeCom 工具包将 DICOM 文件发送到 PACS
- 如何使用Imebra库修改DICOM文件中的图像像素
- 阅读Dicom文件中的汉字
- 读取DICOM文件时,ITK访问违规错误在发布模式下,但在调试模式下没有
- DCMTK C++:如何从dicom文件中获取数据像素
- 使用Mergecom工具箱c++枚举DICOM文件中的SQ标记
- Vtk读取dicom文件