gpt4 book ai didi

c++ - 如何使用 GDCM 读取多帧 DICOM 文件?

转载 作者:行者123 更新时间:2023-12-05 07:41:45 47 4
gpt4 key购买 nike

我正在尝试使用 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++也差不多。我希望有人能从中得到帮助。

关于c++ - 如何使用 GDCM 读取多帧 DICOM 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45193995/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com