乳房X光检查的VTK体积渲染

时间:2017-05-26 10:34:23

标签: c++ vtk

我正在研究乳腺X线摄影的vtk体积渲染。我在文件夹中有50个DICOM切片来构建卷。在这里,我需要vtkColorTransferFunctionvtkPiecewiseFunction来设置RGB颜色和标量不透明度。

相对于乳房图像(乳房图像),我没有获得准确的颜色和不透明度值。我需要关于乳房X射线图像的颜色和不透明度值。

任何建议都会有所帮助。

vtkGPUVolumeRayCastMapper *volumeGPUmapper = 
vtkGPUVolumeRayCastMapper::New();

volumeGPUmapper->SetInputConnection(clip->GetOutputPort());

// RGB and alpha funcions
double skinOnBlueMap[28][5] =
{
      {0,     0.987853825092316, 1.0,               1.0,               0.9},
      {10000, 0.987853825092316, 1.0,               1.0,               0.9},
      {20000, 0.987853825092316, 1.0,               1.0,               1.0},
      {30000, 0.987853825092316, 1.0,               1.0,               1.0},
      {40000, 0.0,               0.0,               0.0,               1.0},
      {50000, 1.0,               0.0,               0.0,               1.0},
      {60000, 1.0,               0.999206542968750, 0.0,               1.0},
      {70000, 1.0,               1.0,               1.0,               1.0}
};

vtkSmartPointer<vtkPiecewiseFunction> alphaChannelFunc = vtkSmartPointer<vtkPiecewiseFunction>::New();

vtkSmartPointer<vtkColorTransferFunction> colorFunc = vtkSmartPointer<vtkColorTransferFunction>::New();

for(int i = 0; i < sizeof(skinOnBlueMap)/(5*sizeof(double)); i++)
{
    colorFunc->AddRGBPoint(skinOnBlueMap[i][0], skinOnBlueMap[i][1], skinOnBlueMap[i][2], skinOnBlueMap[i][3]);

    alphaChannelFunc->AddPoint(skinOnBlueMap[i][0], skinOnBlueMap[i][4]);
}

vtkSmartPointer<vtkVolumeProperty> volumeProperty = vtkSmartPointer<vtkVolumeProperty>::New();

volumeProperty->SetColor(colorFunc);
volumeProperty->SetInterpolationTypeToLinear();
volumeProperty->SetScalarOpacity(alphaChannelFunc);

vtkSmartPointer<vtkVolume> VTKvolume = vtkSmartPointer<vtkVolume>::New();

VTKvolume->SetMapper(volumeGPUmapper);

VTKvolume->SetProperty(volumeProperty);

1 个答案:

答案 0 :(得分:0)

那些标量值对我来说似乎很奇怪。这可能是您的结果看起来不正确的原因。但是要确保我们需要图像堆栈和渲染结果。

标量值甚至不在无符号短类型的范围内,通常用于体素。