fo-dicom对多帧dicom图像的拆分

fo-dicom对多帧dicom图像的拆分

Dicom多帧数据存储

在Dicom标准中,关于多帧数据存储的最重要部分之一的说明是 PS3.5 Annex A.4 A.4 Transfer Syntaxes for Encapsulation of Encoded Pixel Data。 在Dicom格式中,Pixel Data存放在Pixel Data(7FE0,0010)中,直接存放(native)或者打包存放(ncapsulated)。一般的多帧序列均采用打包存放的方式,特别是在数据采用压缩格式的时候。

fo-dicom中的PixelData

 			DicomDataset oldDataSet = new DicomDataSet();//new with your file
 			var frames = oldDataSet.GetSingleValue<int>(DicomTag.NumberOfFrames);
            DicomPixelData oldPixelData = DicomPixelData.Create(oldDataSet);
            var buffer = oldPixelData.GetFrame(frames - 1);

            DicomDataset newDataset = oldDataSet.Clone();
            DicomPixelData newPixelData = DicomPixelData.Create(newDataset, true);
            newPixelData.AddFrame(buffer);

上述代码通过获取Dicom图像的帧数,利用PixelData新生成了一个只拥有最后一帧图像的Dataset,完成了对多帧Dicom图像的拆分。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用 FO-DICOM 库打印彩色胶片的示例代码: ```c++ #include "dcmtk/config/osconfig.h" #include "dcmtk/dcmdata/dctk.h" #include "dcmtk/dcmimgle/dcmimage.h" #include "dcmtk/dcmimgle/digsdfn.h" #include "dcmtk/dcmimgle/diutils.h" #include "dcmtk/dcmimage/diregist.h" #include "dcmtk/dcmimage/diprint.h" int main(int argc, char *argv[]) { // 初始化 FO-DICOM 库 if (!dcmDataDict.isDictionaryLoaded()) { fprintf(stderr, "Error: no data dictionary loaded.\n"); return 1; } // 创建 DicomImage 对象 DicomImage *image = new DicomImage("input.dcm"); // 获取图像的宽度和高度 unsigned int width = image->getWidth(); unsigned int height = image->getHeight(); // 创建一个 DicomImagePrint 对象,并设置打印参数 DicomImagePrint *printer = new DicomImagePrint(); printer->setDestinationAE("PRINT_SCP"); printer->setPrintLUTShape(PLUT_SHAPE_IDENTITY); printer->setMagnificationType(DIMAGPRINT_REPLICATE); printer->setBorderDensity(0); printer->setEmptyImageDensity(255); // 设置打印参数,包括图像的位置、大小和颜色模式等 printer->setFilmSizeID("8INX10IN"); printer->setMagnificationType(DIMAGPRINT_REPLICATE); printer->setPrintObjectSides(DIMSE_PRINT_BOTH); printer->setPrintPriority(DIMSE_PRIORITY_MEDIUM); printer->setImageDisplayFormat(DIMSE_PRINT_PORTRAIT); printer->setImagePosition(1, 1); printer->setImageSize(width, height); printer->setColorMode(COLOR_MODE_FULL); // 设置打印胶片类型为彩色 printer->setFilmType(DIMSE_FILM_TYPE_DV); // 打印图像 printer->printImage(image); // 删除 DicomImagePrint 对象和 DicomImage 对象 delete printer; delete image; return 0; } ``` 在上述示例代码中,我们首先创建了一个 DicomImage 对象,用于读取 DICOM 影像文件。然后,我们创建了一个 DicomImagePrint 对象,并设置打印参数。最后,我们调用 DicomImagePrint 对象的 printImage 方法,将图像打印到胶片上。需要注意的是,我们在打印参数中设置了打印胶片类型为彩色(DIMSE_FILM_TYPE_DV),从而实现了彩色胶片打印。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值