如何用VTK、ITK对DCIOM模型进行分割

1 篇文章 0 订阅

1. 读取 DICOM 图像序列

  • 设置读取器以加载 DICOM 图像系列。
  • 使用 itk::GDCMImageIO 作为 DICOM 图像的输入输出接口。
  • 使用 itk::GDCMSeriesFileNames 获取指定路径下的所有 DICOM 文件名。
  • 使用 itk::ImageSeriesReader 读取 DICOM 图像序列,并将其作为3D图像存储。

2. 阈值分割

  • 创建 itk::ThresholdImageFilter 进行图像阈值分割。
  • 设置阈值(在此例中为150到3071)以区分感兴趣的图像区域和背景。
  • 更新滤波器并获取分割后的图像。
  • 这里是为了过滤掉一些不需要的背景,只保留要处理的模型

3. 连通性分析

  • 创建 itk::ConnectedComponentImageFilter 对分割后的图像进行连通性分析。
  • 对每个连通区域分配唯一的标签。
  • 获取标记(labeled)图像。
  • 获得连通性分析后的图像像素,后面就可以对像素做处理
  • 
        //连通域检测标记图
        ImageType::Pointer labeledImage = connectedComponentFilter->GetOutput();

4. 选定区域处理

  • 遍历用户选定的点。
  • 对每个点,将屏幕坐标转换为图像坐标。
  • 从标记图像中提取每个点的标签值。
  • 将提取的标签值存储在列表中。
  • QList<int>selectIndex ;
        for(int i =0; i<g_index; i++)
        {
            ImageType::IndexType position;
            //这里要对position的三个坐标值做一些处理
            ...
    
            PixelType labelValue = labeledImage->GetPixel(position);
            int a = static_cast<int>(labelValue);
            selectIndex << a;
        }

5. 创建输出图像

  • 创建一个新的空白图像(outputImage)并设置其属性以匹配分割后的图像。
  • 使用迭代器遍历分割图像、标记图像和输出图像。
  • 将分割图像中属于选定标签的像素复制到输出图像中。
  • for (inputIt.GoToBegin(), labeledIt.GoToBegin(), outputIt.GoToBegin(); !inputIt.IsAtEnd(); ++inputIt, ++labeledIt, ++outputIt) {
            if (m_selectIndex.contains(labeledIt.Get()))
            {    
                outputIt.Set(inputIt.Get());
            }
        }

6. 转换为 VTK 图像

  • 将 ITK 图像转换为 VTK 的 vtkImageData
  • 设置体素间距、原点和尺寸。
  • 复制 ITK 图像的像素值到 VTK 图像。

7. 创建并配置 VTK 体渲染器

  • 创建 vtkSmartVolumeMapper 并设置输入数据。
  • 创建 vtkVolume 并设置映射器。
  • 定义颜色和不透明度传递函数,以及体属性。

8. 可视化

  • 创建 VTK 渲染器和渲染窗口。
  • 添加体对象到渲染器。
  • 设置背景色并重置摄像机。
  • 启动渲染窗口交互器以开始交互式查看。

这个过程涵盖了从读取 DICOM 图像、图像处理(阈值分割和连通性分析)、用户交互(选定区域处理)到最终的3D可视化。此代码对于理解如何在医学图像处理中结合使用 ITK 和 VTK 是非常有用的。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值