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

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::

你可能感兴趣的:(VTK从入门到放弃,qt,开发语言,3d)