本文实现了 Python C++ 版本 的 四视图,横断面,冠状面,矢状面,3D
三维重建 医学图像的可视化 PyQt Python VTK四视图(横断面,冠状,矢状面,3D)
主要功能:
1.支持 JPG PNG TIF DICOM RAW MHD Nii 等多种数据格式导入
2. 四视图搭建,,横断面,冠状面,矢状面 3D;
3. 四窗口每个窗口可以最大化,恢复
3.二维数据视图的图层切换, 缩放,窗宽窗位调整功能;可以通过进度条换图层;可以通过进度条调整窗宽窗位;
4.三维可视化数据显示,缩放,旋转 ,平移
5.测量功能,2D 距离测量 角度测量 :
6.3D 体绘制 ,三维可视化数据显示,缩放,旋转 ,平移
7.虚拟切割,内部可视化
8.体数据切割;保存
效果:
三维重建,窗口最大化
单窗口最大化
三维数据切割
这里主要讲一下体绘制:
1.固定点光线投影算法
vtkFixedPointVolumeRayCastMapper
该类能够实现基于Alpha合成的体绘制方法和最大密度投影体绘制方法,能够支持任意类型或者独立多元数据。
例如,当输入为二元独立数据时,第一源数据用于颜色映射,而第二元作为不透明度映射。该类使用了空间跳跃技术来加速体绘制的渲染过程,而在内部计算时,统一使用了float数据类型。
vtkFixedPointVolumeRayCastMapper与vtkVolumeRayCastMapper对比两个类的使用方法基本一致,都支持设置光线采样步长、图像采样距离、自动调整图像采样距离等操作。
vtkFixedPointVolumeRayCastMapper
只支持基于Alpha合成的体绘制方法和最大密度体绘制方法,
光线投影+最大密度投影+等值面法
void SetBlendModeToComposite();
void SetBlendModeToMaximumIntensity();
void SetBlendModeToMinimumIntensity();
void SetBlendModeToAddictive();
2、基于GPU加速的光线投射体会自算法
vtkGPUVolumeRayCastMapper类实现了基于GPU加速光线投影体绘制算法。该类的使用方法与上面各类基本一致。同样可以实现光线采样步长、图像采样距离、自动调整图像采样距离等。
vtkSmartPointer<vtkGPUVolumeRayCastMapper> volumeMapper =
vtkSmartPointer<vtkGPUVolumeRayCastMapper>::New();
volumeMapper->SetInputData(reader->GetOutput());;
volumeMapper->SetSampleDistance(volumeMapper->GetSampleDistance() / 2); //设置光线采样距离