VTK vtkActor和vtkImageActor的区别

1、vtkActor

用途:

vtkActor 是一个通用的图形渲染对象,可以用于渲染几何数据,如多边形、线条、点等。
数据类型:通常与 vtkPolyData 一起使用,该数据结构可以存储点、线、面和多边形等几何信息。

功能:

a、支持变换操作(平移、旋转、缩放)。
b、支持应用材质、颜色和纹理。
c、支持复杂的渲染属性设置,例如光照、阴影等。

2、vtkImageActor

用途:

vtkImageActor 专门用于渲染图像数据,如 2D 或 3D 的影像。
数据类型:通常与 vtkImageData 一起使用,该数据结构可以存储体数据、图像等。

功能:

a、用于显示图像的切片,常用于医学图像可视化(例如 DICOM 图像)。
b、支持图像窗口和层次调整(window level)。
c、直接渲染图像数据,而不是几何数据。

3、具体区别:

a、数据源:

vtkActor 通常从 vtkPolyData 获取数据。
vtkImageActor 从 vtkImageData 获取数据。

b、渲染目的:

vtkActor 适用于渲染多边形网格和几何形状。
vtkImageActor 适用于渲染图像切片和体数据。

c、属性和方法:

vtkActor 拥有更多与几何变换和光照相关的方法和属性,例如 SetPosition、SetOrientation、GetProperty 等。
vtkImageActor 主要有与图像显示相关的方法和属性,例如 SetInputData、GetOpacity 等。

4、代码

a、使用 vtkActor 渲染几何数据

vtkSmartPointer sphereSource = vtkSmartPointer::New();
sphereSource->Update();

vtkSmartPointer mapper = vtkSmartPointer::New();
mapper->SetInputConnection(sphereSource->GetOutputPort());

vtkSmartPointer actor = vtkSmartPointer::New();
actor->SetMapper(mapper);

vtkSmartPointer renderer = vtkSmartPointer::New();
renderer->AddActor(actor);

vtkSmartPointer renderWindow = vtkSmartPointer::New();
renderWindow->AddRenderer(renderer);

vtkSmartPointer renderWindowInteractor = vtkSmartPointer::New();
renderWindowInteractor->SetRenderWindow(renderWindow);

renderWindow->Render();
renderWindowInteractor->Start();

b、使用 vtkImageActor 渲染图像数据:

vtkSmartPointer reader = vtkSmartPointer::New();
reader->SetFileName("path_to_image_file");
reader->Update();

vtkSmartPointer imageActor = vtkSmartPointer::New();
imageActor->GetMapper()->SetInputConnection(reader->GetOutputPort());

vtkSmartPointer renderer = vtkSmartPointer::New();
renderer->AddActor(imageActor);

vtkSmartPointer renderWindow = vtkSmartPointer::New();
renderWindow->AddRenderer(renderer);

vtkSmartPointer renderWindowInteractor = vtkSmartPointer::New();
renderWindowInteractor->SetRenderWindow(renderWindow);

renderWindow->Render();
renderWindowInteractor->Start();

你可能感兴趣的:(c++,算法,图像处理)