2 利用ITK实现多帧Dicom读取,VTK实现数据显示

本文介绍了如何在VTK中使用ITK进行多帧DICOM数据的读取,包括编译ITK并解决遇到的问题,以及如何将ITK数据转换为VTK格式以便于三维显示。还提到在显示VTKImageData时可能遇到的权限问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vtk中也有dicom读写类,但是只能完成单帧DICOM数据读取,这对于实际应用是非常不利的。
而ITK可以实现dicom多帧读取,通常情况ITK与VTK也会结合使用(ITK处理,VTK显示),所以就一起学习下吧!

一、编译ITK

因为之后要将ITK与VTK混合编程,所以先编译生成VTK之后再进行ITK编译。
详情参考以下博文,这里不再赘述。
ITK 5.0.1 在Windows10+VS2017+CMake 环境下编译安装
ITK-001-5.2.0版本源码-编译
不过我在这里陷入了一个错误,给大家提个醒:最好不要随意改动生成好的VTK,因为ITK cmake时读取VTK中的cmake文件,会调取一些路径,如果路径被改变则会报错,不好找到原因。

另外需要注意的,在CMAKE_DEBUG_POSTFIX后面添加d这样进行Debug版本编译时会在库文件名后面多个d。

二、利用ITK实现多帧DICOM读取

先贴一下这段的代码:

itk::ImageBase<3>::Pointer DicomReadWrite::DicomReadSeries(const QString &path)
{
   
    itk::ImageBase<3>::Pointer outImage;
    // 检查路径是否有效,检查文件是否存在
    if (path.isEmpty() || !QFile::exists(path)) {
   
        return outImage;
    }

    std::string DirectPath = path.toStdString();
    // 图像类型
    using PixelType = unsigned char; // dicom图像常见像素类型
    constexpr unsigned int Dimension = 3; //维度为3
    using ImageType = itk::Image<PixelType, Dimension>;
    // 创建dicom图像读取器
    using ReaderType = itk::ImageSeriesReader<ImageType>;
    ReaderType::Pointer reader = ReaderType::New();
    reader->SetFileName(DirectPath);
    //创建GDCMImageIO对象与reader相连
    using ImageIOType = itk::GDCMImageIO;
    ImageIOType::Pointer gdcmImageIO = ImageIOType::
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值