四、MPR多平面重建(采用VTK方法代码示例)

一、读取DICOM文件(vtkDICOMImageReader)

cpp 复制代码
auto reader = vtkSmartPointer<vtkDICOMImageReader>::New();
reader->SetDirectoryName(folderPath.toStdString().c_str());
reader->Update();

二、获取vtkImageData

cpp 复制代码
vtkSmartPointer<vtkImageData> m_imageData = reader->GetOutput();

三、设置"十字定位器"(vtkResliceCursor)

cpp 复制代码
vtkSmartPointer<vtkResliceCursor> resliceCursor = vtkSmartPointer<vtkResliceCursor>::New();
//设置三视图同步定位点
resliceCursor->SetCenter(imageData->GetCenter());
//设置是否启用"厚切片(Thick Slab)模式"
resliceCursor->SetThickMode(0);
//设置图片数据
resliceCursor->SetImage(imageData);

四、创建三个render

cpp 复制代码
vtkSmartPointer<vtkRenderer> renAxial =
    vtkSmartPointer<vtkRenderer>::New();

vtkSmartPointer<vtkRenderer> renSagittal =
    vtkSmartPointer<vtkRenderer>::New();

vtkSmartPointer<vtkRenderer> renCoronal =
    vtkSmartPointer<vtkRenderer>::New();

五、创建三个 widget

cpp 复制代码
vtkSmartPointer<vtkResliceCursorWidget> widgetAxial =
    vtkSmartPointer<vtkResliceCursorWidget>::New();

vtkSmartPointer<vtkResliceCursorWidget> widgetSagittal =
    vtkSmartPointer<vtkResliceCursorWidget>::New();

vtkSmartPointer<vtkResliceCursorWidget> widgetCoronal =
    vtkSmartPointer<vtkResliceCursorWidget>::New();

六、创建 representation

cpp 复制代码
vtkSmartPointer<vtkResliceCursorLineRepresentation> repAxial =
    vtkSmartPointer<vtkResliceCursorLineRepresentation>::New();

vtkSmartPointer<vtkResliceCursorLineRepresentation> repSagittal =
    vtkSmartPointer<vtkResliceCursorLineRepresentation>::New();

vtkSmartPointer<vtkResliceCursorLineRepresentation> repCoronal =
    vtkSmartPointer<vtkResliceCursorLineRepresentation>::New();

七. 绑定 cursor(关键:共享同一个)

cpp 复制代码
repAxial->GetResliceCursorActor()
    ->GetCursorAlgorithm()
    ->SetResliceCursor(cursor);

repSagittal->GetResliceCursorActor()
    ->GetCursorAlgorithm()
    ->SetResliceCursor(cursor);

repCoronal->GetResliceCursorActor()
    ->GetCursorAlgorithm()
    ->SetResliceCursor(cursor);

八、设置方向

cpp 复制代码
repAxial->SetPlaneOrientationToZAxis();      // Axial

repSagittal->SetPlaneOrientationToXAxis();   // Sagittal

repCoronal->SetPlaneOrientationToYAxis();    // Coronal

九、设置 widget

cpp 复制代码
widgetAxial->SetRepresentation(repAxial);
widgetSagittal->SetRepresentation(repSagittal);
widgetCoronal->SetRepresentation(repCoronal);

十、renderer + interactor

cpp 复制代码
vtkSmartPointer<vtkRenderWindow> renderWindow =
    vtkSmartPointer<vtkRenderWindow>::New();

renderWindow->AddRenderer(renAxial);
renderWindow->AddRenderer(renSagittal);
renderWindow->AddRenderer(renCoronal);

vtkSmartPointer<vtkRenderWindowInteractor> interactor =
    vtkSmartPointer<vtkRenderWindowInteractor>::New();

interactor->SetRenderWindow(renderWindow);

十一、初始化Widget

cpp 复制代码
widgetAxial->SetInteractor(interactor);
widgetSagittal->SetInteractor(interactor);
widgetCoronal->SetInteractor(interactor);

widgetAxial->EnabledOn();
widgetSagittal->EnabledOn();
widgetCoronal->EnabledOn();

十二、启动

cpp 复制代码
renderWindow->Render();
interactor->Start();
相关推荐
机器视觉知识推荐、就业指导10 小时前
为什么老说“纯 Qt 没啥就业市场”?
开发语言·qt
telepan10 小时前
Qt 开发避坑与性能指南:如何优雅、安全地定义全局常量字符串?
开发语言·qt
小灰灰搞电子10 小时前
完全驾驭 Qt 与数据库:C++ ORM 框架 QxOrm 原理与实践指南
数据库·c++·qt
QT界面美化性能优化10 小时前
QT+AI:使用AI技术为QT应用程序赋能
c++·人工智能·qt·opencv·qt教程·qt6.3
m0_6952514910 小时前
Qt MaintenanceTool 使用国内镜像加速下载(超详细教程)
开发语言·qt
小小龙学IT17 小时前
Qt 元对象系统(Meta-Object System)深度解析:从 MOC 到反射式编程
数据库·qt
小王C语言19 小时前
QT 基础:QT SDK 下载、配置、新建项目、项目代码解释
开发语言·qt
张人玉1 天前
基于 Python + PyQt5 的水果目标检测与分割可视化系统——水果深度学习识别可视化大屏
python·深度学习·qt·目标检测·sqlite·echarts
程与留2 天前
12_常用控件速查(下):QSpinBox、QSlider、QProgressBar、QCheckBox
c++·qt
秋田君2 天前
QT_HTTP协议编程
qt·http·iphone