Dicom影像在放大时往往需要对原始像素进行插值操作,找了下VTK中vtkInteractorStyleImage的放大实现,发现只是在窗宽窗位映射后进行的插值操作,效果不是很理想。所以还需要自己进行插值操作。
VTK中可以使用vtkImageResample类来对像素数据进行插值操作,并且可以选择相应的插值算法。下面简单记录插值操作的代码:
vtkSmartPointer<vtkImageResample> ir = vtkSmartPointer<vtkImageResample>::New(); ir->SetInputConnection(reader->GetOutputPort()); // reader 为vtkDICOMImageReader ir->SetDimensionality(2); // 设置为2维数据 ir->SetAxisMagnificationFactor(0, 5); // 设置X轴方向上的缩放倍率 ir->SetAxisMagnificationFactor(1, 5); // 设置Y轴方向上的缩放倍率 // ir->SetInterpolationModeToCubic(); // 立方体插值算法 ir->SetInterpolationModeToLinear(); // 线性插值算法 // ir->SetInterpolationModeToNearestNeighbor(); // 邻近插值算法 ir->Update(); // 应用插值