Не можете применить функцию передачи с выводом из vtkJPEGReader? (vtk - Activiz.net) - PullRequest
0 голосов
/ 11 ноября 2018

Я использую 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);
...