[vtkusers] vtkImageActor return error from function

Jothy jothybasu at gmail.com
Fri Oct 1 07:33:01 EDT 2010


Hi all,

I am trying to get the vtkImageACtor form a function, but it says
vtkImageActor is protected.

I have tried even without vtkSmartPointer.

Here is the code!

Thanks

void MainWindow::imageReslice(int sliceValue)

{

this->imageData->GetWholeExtent(this->imgExtent);

//qDebug()<<imgExtent[0]<<imgExtent[1]<<imgExtent[2]<<imgExtent[3]<<imgExtent[4]<<imgExtent[5];

this->imageData->GetSpacing(this->imgSpacing);

//qDebug()<<this->imgSpacing[0]<< this->imgSpacing[1]<< this->imgSpacing[2];

this->imageData->GetOrigin(this->imgOrigin);

//qDebug()<<this->imgOrigin[0]<< this->imgOrigin[1]<< this->imgOrigin[2];

double center[3];

 center[0] = this->imgOrigin[0] + this->imgSpacing[0] * 0.5 *
(imgExtent[0] + imgExtent[1]);

 center[1] = this->imgOrigin[1] + this->imgSpacing[1] * 0.5 *
(imgExtent[2] + imgExtent[3]);

 center[2] = this->imgOrigin[2] + this->imgSpacing[2] * 0.5 *
(imgExtent[4] + imgExtent[5]);

 // Matrices for axial, coronal, sagittal, oblique view orientations

   static double axialElements[16] = {

            1, 0, 0,0 ,

            0, 1, 0, 0,

            0, 0, 1, sliceValue,

            0, 0, 0, 1 };

   //static double coronalElements[16] = {

   //         1, 0, 0, 0,

   //         0, 0, 1, 0,

   //         0,-1, 0, 0,

   //         0, 0, 0, 1 };

//   static double sagElements[16] = {

//             0, 0,-1, 0,

//            1, 0, 0, 0,

//            0,-1, 0, 0,

//            0, 0, 0, 1 };

//   // Set the slice orientation

    vtkSmartPointer<vtkMatrix4x4> resliceAxes =

      vtkSmartPointer<vtkMatrix4x4>::New();

    resliceAxes->DeepCopy(axialElements);

//    // Set the point through which to slice

//    resliceAxes->SetElement(0, 3, center[0]);

//    resliceAxes->SetElement(1, 3, center[1]);

//    resliceAxes->SetElement(2, 3, center[2]);

    // Extract a slice in the desired orientation

    vtkSmartPointer<vtkImageReslice> reslice =

      vtkSmartPointer<vtkImageReslice>::New();

    reslice->SetInput(this->imageData);

    reslice->SetOutputDimensionality(2);

    reslice->SetResliceAxes(resliceAxes);

    reslice->SetInterpolationModeToLinear();

    // Create a greyscale lookup table

    vtkSmartPointer<vtkLookupTable> table =

      vtkSmartPointer<vtkLookupTable>::New();

    table->SetRange(-300,900); // image intensity range

    table->SetValueRange(0.0, 1.0); // from black to white

    table->SetSaturationRange(0.0, 0.0); // no color saturation

    table->SetRampToLinear();

    table->Build();

    // Map the image through the lookup table

    vtkSmartPointer<vtkImageMapToColors> color =

      vtkSmartPointer<vtkImageMapToColors>::New();

    color->SetLookupTable(table);

    color->SetInputConnection(reslice->GetOutputPort());

      // Return the image

   vtkSmartPointer<vtkImageActor>   imgActor =
vtkSmartPointer<vtkImageActor>::New();

    imgActor->SetInput(color->GetOutput());

   return imgActor;

}


Jothy

-- 
Research Scholar
Dept. of Medical Physics
Clatterbridge Centre for Oncology
UK
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20101001/b8a524f6/attachment.htm>


More information about the vtkusers mailing list