Mohammed Adel
2018-11-08 15:36:39 UTC
Hi all
I am using VTK with Activiz.net to reconstruct a series of JPEG ultrasound
images, I have used raycasting technique and applied transfer function as
here,
The problem is that the Opacity transfer function isn't working with the
vtkJPEG reader output, the black regions was not filtered, the code is
working fine with vtkDICOMReader? so, any solutions for this ???
The code:
vtkJPEGReader jpegReader = vtkJPEGReader.New();
jpegReader.SetDataByteOrderToLittleEndian();
jpegReader.SetFilePattern("%s%d.jpg");
jpegReader.SetFilePrefix(@"C:\Users\DilenyTech\Desktop\test\TestC#\Series_004\CIM_0001_Frame");
jpegReader.SetDataExtent(0, 176, 0, 510,1, 243);
jpegReader.SetDataScalarTypeToFloat();
jpegReader.SetDataSpacing(1, 1, 1);
jpegReader.SetDataOrigin(0, 0, 0);
vtkImageThreshold SelectTissue = vtkImageThreshold.New();
SelectTissue.SetInput(jpegReader.GetOutput());
SelectTissue.ThresholdBetween(0, 10);
vtkFixedPointVolumeRayCastMapper volumeMapper =
vtkFixedPointVolumeRayCastMapper.New();
volumeMapper.SetInput(SelectTissue.GetOutput());
vtkColorTransferFunction volumeColor =
vtkColorTransferFunction.New();
volumeColor.AddRGBPoint(1, 1, 0, 0);
volumeColor.AddRGBPoint(100, 1, 0, 0.4);
volumeColor.AddRGBPoint(160, 1.0, 0.5, 0.1);
volumeColor.AddRGBPoint(255, 1.0, 0.5, 0.1);
vtkPiecewiseFunction volumeScalarOpacity =
vtkPiecewiseFunction.New();
volumeScalarOpacity.AddPoint(0, 0.00);
volumeScalarOpacity.AddPoint(20, 0.00);
volumeScalarOpacity.AddPoint(30, 0.20);
volumeScalarOpacity.AddPoint(100, 0.7);
vtkPiecewiseFunction volumeGradientOpacity =
vtkPiecewiseFunction.New();
volumeGradientOpacity.AddPoint(0, 1.0);
volumeGradientOpacity.AddPoint(255, 1.0);
vtkVolumeProperty volumeProperty = vtkVolumeProperty.New();
volumeProperty.SetColor(volumeColor);
volumeProperty.SetScalarOpacity(volumeScalarOpacity);
volumeProperty.SetGradientOpacity(volumeGradientOpacity);
volumeProperty.SetInterpolationTypeToLinear();
volumeProperty.ShadeOn();
volumeProperty.SetAmbient(0.1);
volumeProperty.SetDiffuse(0.9);
volumeProperty.SetSpecular(0.2);
vtkVolume volume = vtkVolume.New();
volume.SetMapper(volumeMapper);
volume.SetProperty(volumeProperty);
vtkRenderWindow renderWindow =
renderWindowControl1.RenderWindow;
vtkRenderer renderer =
renderWindow.GetRenderers().GetFirstRenderer();
renderer.AddViewProp(volume);
renderer.SetBackground(0.2, 0.3, 0.4);
I am using VTK with Activiz.net to reconstruct a series of JPEG ultrasound
images, I have used raycasting technique and applied transfer function as
here,
The problem is that the Opacity transfer function isn't working with the
vtkJPEG reader output, the black regions was not filtered, the code is
working fine with vtkDICOMReader? so, any solutions for this ???
The code:
vtkJPEGReader jpegReader = vtkJPEGReader.New();
jpegReader.SetDataByteOrderToLittleEndian();
jpegReader.SetFilePattern("%s%d.jpg");
jpegReader.SetFilePrefix(@"C:\Users\DilenyTech\Desktop\test\TestC#\Series_004\CIM_0001_Frame");
jpegReader.SetDataExtent(0, 176, 0, 510,1, 243);
jpegReader.SetDataScalarTypeToFloat();
jpegReader.SetDataSpacing(1, 1, 1);
jpegReader.SetDataOrigin(0, 0, 0);
vtkImageThreshold SelectTissue = vtkImageThreshold.New();
SelectTissue.SetInput(jpegReader.GetOutput());
SelectTissue.ThresholdBetween(0, 10);
vtkFixedPointVolumeRayCastMapper volumeMapper =
vtkFixedPointVolumeRayCastMapper.New();
volumeMapper.SetInput(SelectTissue.GetOutput());
vtkColorTransferFunction volumeColor =
vtkColorTransferFunction.New();
volumeColor.AddRGBPoint(1, 1, 0, 0);
volumeColor.AddRGBPoint(100, 1, 0, 0.4);
volumeColor.AddRGBPoint(160, 1.0, 0.5, 0.1);
volumeColor.AddRGBPoint(255, 1.0, 0.5, 0.1);
vtkPiecewiseFunction volumeScalarOpacity =
vtkPiecewiseFunction.New();
volumeScalarOpacity.AddPoint(0, 0.00);
volumeScalarOpacity.AddPoint(20, 0.00);
volumeScalarOpacity.AddPoint(30, 0.20);
volumeScalarOpacity.AddPoint(100, 0.7);
vtkPiecewiseFunction volumeGradientOpacity =
vtkPiecewiseFunction.New();
volumeGradientOpacity.AddPoint(0, 1.0);
volumeGradientOpacity.AddPoint(255, 1.0);
vtkVolumeProperty volumeProperty = vtkVolumeProperty.New();
volumeProperty.SetColor(volumeColor);
volumeProperty.SetScalarOpacity(volumeScalarOpacity);
volumeProperty.SetGradientOpacity(volumeGradientOpacity);
volumeProperty.SetInterpolationTypeToLinear();
volumeProperty.ShadeOn();
volumeProperty.SetAmbient(0.1);
volumeProperty.SetDiffuse(0.9);
volumeProperty.SetSpecular(0.2);
vtkVolume volume = vtkVolume.New();
volume.SetMapper(volumeMapper);
volume.SetProperty(volumeProperty);
vtkRenderWindow renderWindow =
renderWindowControl1.RenderWindow;
vtkRenderer renderer =
renderWindow.GetRenderers().GetFirstRenderer();
renderer.AddViewProp(volume);
renderer.SetBackground(0.2, 0.3, 0.4);