[vtkusers] vtkImageMathematics

Matthias Haack haack at rz.rwth-aachen.de
Sun Aug 31 07:58:17 EDT 2003


Hi,

I tried to use the class vtkImageMathematics to invert the image colors. 
At the moment I do not really understand what to do with the two inputs 
in this case because an invert operation only need one image (or: What 
does the vtkImageMathematics invert operation really do?)

I fed an image to input number one, set the operation to invert and 
fetched the resulting image from vtkImageMathematics via GetOutput() but 
the image was only black and not inverted. I used vtkImageActor and a 
vtkRendererWindow to render it.

Can anyone explain to me what I did wrong? I'm using vtk 4.0.2.

Here's an example (the reader has definitely a valid image as filename, 
I also stripped includes and variable definitions):


   imData = pngReader->GetOutput();
   imData->Update();
   imData->Register(0);
   pngReader->SetOutput(0);
   pngReader->Delete();

   imActor = vtkImageActor::New();
   imActor->SetInput(imData);

   renderer= vtkRenderer::New();
   renderer->AddProp(imActor);

   renWindow = vtkRenderWindow::New();
   renWindow->AddRenderer(renderer);

   int i=1;
   while(i<10) {
     renWindow->Render();
     sleep(1);

     vtkImageMathematics* math = vtkImageMathematics::New();
     math->SetOperationToInvert();

     vtkImageData* temp = vtkImageData::New();

     math->SetInput1(imData);
     temp = math->GetOutput();
     temp->Update();
     imData->DeepCopy(temp);
     math->RemoveAllInputs();
     temp->Register(0);
     temp->Delete();

     math->Delete();

   }


As I wrote above, the resulting image is fully black.


thanks in advance

Matthias





More information about the vtkusers mailing list