MPR(三维重建中的 Multi-Planar Reconstruction,多平面重建)里的"三视图",是医学影像软件(CT、MRI、PET-CT 等)中的核心。
一、核心三视图解析
1、横断面(Axial)
相当于把人体水平切开。观察方向:从下往上看。常用于脑 CT、胸部 CT、腹部 CT.
2、冠状面(Coronal)
相当于把人体从正面切开。观察方向:面对病人。常用于鼻窦、脊柱、肺部上下关系.
3、矢状面(Sagittal)
相当于把人体左右切开。观察方向:从身体侧面看。常用于脊柱、膝关节、大脑中线结构.
4、示例图

5、三视图核心思想
在三个正交切面(轴状、冠状、矢状)之间共享同一个空间坐标点(x,y,z),用户在任意一个视图里的操作,会同步影响另外两个视图。所以三个视图其实只是同一体数据的不同切片投影。
二、为什么需要三视图
因为单个方向无法完整描述空间关系。例如某个肿瘤,在横断面里能看到左右位置,但不知道上下深度。加入冠状面、矢状面后才能真正定位。
三、三视图的核心价值
-
医生能快速知道病灶在人体哪个空间位置。
-
观察器官关系。例如:肿瘤是否侵犯血管、骨折是否穿透关节、病灶与神经距离。
-
提高手术规划能力。例如:穿刺路径、切除范围、导航定位。
四、什么是MPR(Multi-Planar Reconstruction)
Multi-Planar Reconstruction翻译过来就是多平面重建。因为原始 CT 实际只直接采集了某个方向的数据。比如CT 常以 axial 为主采集,coronal/sagittal 是后处理重新生成,因此叫多平面重建。
五、MPR本质和三视图
CT/MRI 原始数据本质上是一个三维标量场,每个 voxel(体素)都有灰度值,可以理解成 3D 数组。
例如:512 × 512 × 400;表示512×512 的单层图像,共 400 层。
MPR 本质从三维体数据中重新取样(resampling)得到任意平面切片。三视图其实就是三个互相垂直的二维采样面。可以理解为三维数组在三个维度上的"切片操作"。
六、VTK中的MPR三视图
在 VTK 中实现 MPR 的核心通常是:
-
vtkImageData:读取 DICOM/CT 数据。
-
vtkImageReslice:做任意切面重建(核心)。
-
vtkResliceCursorWidget:三视图联动十字线。
-
vtkImageViewer2:显示二维切片。
-
多个
vtkRenderer:同时显示三个方向。
1、经典MPR架构
DICOM 数据
│
▼
Volume Builder
(体数据构建)
│
▼
3D Volume Cache
(体缓存)
│
┌─────────┼─────────┐
▼ ▼ ▼
Axial Coronal Sagittal
Renderer Renderer Renderer
│ │ │
└─────────┼─────────┘
▼
MPR Controller
(同步控制)
│
▼
UI显示
2、简单实现流程
cpp
//读取 DICOM
vtkNew<vtkDICOMImageReader> reader;
reader->SetDirectoryName("dicom/");
reader->Update();
//得到vtkImageData*
//创建三个 Viewer
vtkNew<vtkImageViewer2> axialViewer;
vtkNew<vtkImageViewer2> coronalViewer;
vtkNew<vtkImageViewer2> sagittalViewer;
/*设置方向*/
//1.Axial
viewer->SetSliceOrientationToXY();
//2.Coronal
viewer->SetSliceOrientationToXZ();
//3.Sagittal
viewer->SetSliceOrientationToYZ();
3、医院系统中的完整功能
真正临床 MPR 通常包括:
| 功能 | VTK组件 |
|---|---|
| 三视图 | vtkResliceCursorWidget |
| 十字线 | ResliceCursorActor |
| 斜切 | vtkImageReslice |
| 厚层MPR | SlabMode |
| VR三维 | vtkGPUVolumeRayCastMapper |
| 窗宽窗位 | vtkImageMapToWindowLevelColors |
| 测量 | vtkDistanceWidget |
| ROI | vtkContourWidget |