开发环境:
- Windows 11 家庭中文版
- Microsoft Visual Studio Community 2019
- VTK-9.3.0.rc0
- vtk-example
demo解决问题: VTK 读取、预处理、处理和可视化医学图像数据的过程
图像读取和预处理:
- 程序使用 VTK 的图像阅读器
vtkImageReader2Factory
类读取作为命令行参数指定的输入图像文件。
程序会对输入图像数据进行类型转换vtkImageCast
,将标量类型转换为 double 类型,以便进一步处理。 - 对图像数据应用高斯平滑滤波器
vtkImageGaussianSmooth
,以减少噪音并创建更平滑的表示。
图像处理:
- 定义隐式球形函数
vtkSphere
并对其进行采样vtkSampleFunction
(m2->SetImplicitFunction(m1);
),以在图像数据中创建感兴趣的球形区域。 - 然后对采样球进行缩放
vtkImageShiftScale
(m3->SetInputConnection(m2->GetOutputPort());
此处输入时上一步中的感兴趣输出),并使用乘法对原始图像数据进行数学运算vtkImageMathematics
,从而有效地应用遮罩。
可视化:
- 程序使用 VTK 的图像演员类
vtkImageActor
为原始图像和滤波图像设置演员。 - 程序还定义了视口,用于在渲染窗口中显示原始图像和滤波图像。
- 程序还创建了两个独立的呈现器,用于在呈现窗口中并排显示原始图像和滤波图像。
- 然后,程序初始化呈现窗口,设置交互样式,并显示图像供用户交互。
以上演示了在一个应用程序中使用 VTK 读取、预处理、处理和可视化医学图像数据的过程。
prj name: AttachAttributes
#include <vtkImageActor.h>
#include <vtkImageCast.h>
#include <vtkImageGaussianSmooth.h>
#include <vtkImageMapper3D.h>
#include <vtkImageMathematics.h>
#include <vtkImageProperty.h>
#include <vtkImageReader2.h>
#include <vtkImageReader2Factory.h>
#include <vtkImageShiftScale.h>
#include <vtkInteractorStyleImage.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkSampleFunction.h>
#include <vtkSphere.h>
/*
这张核磁共振成像图显示了传感器位置可能导致的衰减。
通过除以人工确定的衰减曲线,可以去除伪影。该直方图显示了伪