[vtkusers] greyscale/color rendering

anast.jm at pg.com anast.jm at pg.com
Mon Oct 28 10:26:10 EST 2002


Chunyan,

The reason your volume renders in color is that you have assigned colors to your
color transfer function. If you make all the rgb values equal (that is r=g=b)
you will get a grayscale rendering

vtkColorTransferFunction::New();
    colorTransferFunction->AddRGBPoint(0.0, 0.0, 0.0, 0.0);
    colorTransferFunction->AddRGBPoint(64.0, 1.0, 0.0, 0.0);  red => 1.0, 1.0,
1.0 white
    colorTransferFunction->AddRGBPoint(128.0, 0.0, 0.0, 1.0); blue => 1.0, 1.0,
1.0 white
    colorTransferFunction->AddRGBPoint(192.0, 0.0, 1.0, 0.0); green => 1.0, 1.0,
1.0 white
    colorTransferFunction->AddRGBPoint(255.0, 0.0, 0.2, 0.0); pale green => 0.2,
0.2, 0.2 light gray

You might want to try a gray ramp if this doesn't look very good

(0.0, 0.0, 0.0, 0.0);
(64.0, 0.2, 0.2, 0.2);
(128.0, 0.4, 0.4, 0.4);
(192.0, 0.7, 1.7, 0.7);
(255.0, 1.0, 1.0, 1.0);

john


                                                                
 Internet Mail Message                                          
 Received from host:      public.kitware.com                    
 [24.97.130.19]                                                 
                                                                


From: "Chunyan Jiang" <jiang at TI.FhG.DE>@public.kitware.com on 10/28/2002 11:37
AM CET
                                                                                           
    "Chunyan Jiang" <jiang at TI.FhG.DE>           To:   "VTK-User"                           
                  @public.kitware.com        <vtkusers at public.kitware.com>                 
                                                Cc:    (bcc: John Anast-JM/PGI)            
                                        Subject:      [vtkusers] greyscale/color           
                             Sent by:                                                      
    vtkusers-admin at public.kitware.com                                                      
                  10/28/2002 05:37 AM                                                      
                                                                                           
                                                                                           




Dear VTK friends,
I import the greyscale image data from memery to vtkImageImport, then
transform the vtkImageImport to vtkStructuredPoints by
vtkImageToStructuredPoints. After that I use vtkVolumeRayCastMapper to
render the volume. It works now, however, the greyscale image changes to
color image. How can I render grey image? I attach the code below. Is there
something wrong? Any help is appreciated.

Code:
     vtkImageImport *importer = vtkImageImport::New();
     importer->SetWholeExtent(1,dimensions[0],1,dimensions[1],1,dimensions[2]);
     importer->SetDataExtentToWholeExtent();

     importer->SetDataScalarTypeToUnsignedChar();

     importer->SetDataOrigin(0,0,0);
    importer->SetDataSpacing(1,1,1);
     importer->SetImportVoidPointer(data);//data is unsigned char* that storing
greyscale images data

     vtkStructuredPoints* structPts= vtkStructuredPoints::New();
     vtkImageToStructuredPoints* its=vtkImageToStructuredPoints::New();
     its->SetInput(importer->GetOutput());
     structPts=its->GetOutput();



// Create transfer mapping scalar value to opacity
     vtkPiecewiseFunction *opacityTransferFunction =
vtkPiecewiseFunction::New();
    opacityTransferFunction->AddPoint(20, 0.0);
    opacityTransferFunction->AddPoint(255, 0.2);

// Create transfer mapping scalar value to color
     vtkColorTransferFunction *colorTransferFunction =
vtkColorTransferFunction::New();
    colorTransferFunction->AddRGBPoint(0.0, 0.0, 0.0, 0.0);
    colorTransferFunction->AddRGBPoint(64.0, 1.0, 0.0, 0.0);
    colorTransferFunction->AddRGBPoint(128.0, 0.0, 0.0, 1.0);
    colorTransferFunction->AddRGBPoint(192.0, 0.0, 1.0, 0.0);
    colorTransferFunction->AddRGBPoint(255.0, 0.0, 0.2, 0.0);

// The property describes how the data will look
     vtkVolumeProperty *volumeProperty = vtkVolumeProperty::New();
    volumeProperty->SetColor(colorTransferFunction);
    volumeProperty->SetScalarOpacity(opacityTransferFunction);

// The mapper / ray cast function know how to render the data
     vtkVolumeRayCastCompositeFunction *compositeFunction=
vtkVolumeRayCastCompositeFunction::New();
     vtkVolumeRayCastMapper *volumeMapper=vtkVolumeRayCastMapper::New();
    volumeMapper->SetVolumeRayCastFunction(compositeFunction);

    volumeMapper->SetInput(structPts);//sp reader->GetOutput()

// The volume holds the mapper and the property and can be used to
position/orient the volume
     vtkVolume *volume = vtkVolume::New();
    volume->SetMapper(volumeMapper);
    volume->SetProperty(volumeProperty);


     renderer->AddActor(volume);

  // interact with data
  renWin->Render();

***********************************************************************
Chunyan Jiang, Dipl.-Inform.,
Institut for Telematic
Bahnhofstrasse 30-32, D-54292 Trier, Germany
Phone: (+49) (0)651-97551-34
Fax: (+49) (0)651-97551-12
***********************************************************************

_______________________________________________
This is the private VTK discussion list.
Please keep messages on-topic. Check the FAQ at: <
http://public.kitware.com/cgi-bin/vtkfaq>
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtkusers






More information about the vtkusers mailing list