Я использую VTK с Activiz.net для реконструкции ультразвукового ряда JPEG, я использовал технику лучевого вещания и применил передаточную функцию, как здесь,
Проблема в том, что передаточная функция Opacity не работает с выводом считывателя vtkJPEG, черные области не были отфильтрованы, код работает нормально с vtkDICOMReader? Итак, какие-либо решения для этого ???
код:
vtkJPEGReader jpegReader = vtkJPEGReader.New();
jpegReader.SetDataByteOrderToLittleEndian();
jpegReader.SetFilePattern("%s%d.jpg");
jpegReader.SetFilePrefix(@"C:\Users\Dola\Desktop\test\TestC#\Series\Frame_001");
jpegReader.SetDataExtent(0, Width, 0, Length,1, numberOfFrames);
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);