2017-05-26 6 views
0

私はマンモグラフィーのvtkボリュームレンダリングに取り組んでいます。ボリュームを構築するために、フォルダに50のDICOMスライスがあります。ここでは、vtkColorTransferFunctionvtkPiecewiseFunctionにRGBカラーとスカラー不透明度を設定する必要があります。マンモグラフィーのVTKボリュームレンダリング

私は、乳房画像(乳房画像)に関して色と不透明度の正確な値を取得していません。私は乳房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); 
+0

現在の出力を出力し、可能であれば予想される出力を送信することができれば便利です。 – cbuchart

答えて

0

これらのスカラー値は私には奇妙に見えます。あなたの結果が正しいと思わない理由かもしれません。しかし、イメージスタックとレンダリング結果が必要であることを確かめるためです。

スカラー値は、一般にボクセルに使用される符号なしのshort型の範囲内でさえありません。