[vtkusers] Extract slices from a vtkMetaImageReader with vtkExtractVOI

mathilde.merle mathilde.merle at laposte.net
Thu Jun 30 10:41:01 EDT 2011



Hello,

I'm trying to extract slices from a vtkImagedata sequence and then display it.

I tryed with vtkImageReslice and then vtkextractVOI, but it don't work. The image displayed is always the same even if I change 'slice_nb'.

How can I do ?

My code :

int* dims = reader->GetOutput()->GetDimensions();

// extract slice

int slice_nb = 0;

vtkSmartPointer extractVOI = vtkSmartPointer::New();
    extractVOI->SetInputConnection(reader->GetOutputPort());
    extractVOI->SetVOI(0,dims[0],0,dims[1], slice_nb, slice_nb); //extract first image
    extractVOI->Update();
   
    vtkImageData* extracted = extractVOI->GetOutput();

    int* dims2 = extracted->GetDimensions();
    cout << "DimensionsExtracted = ";
    for (int i=0; i<(int)(sizeof(dims2)/sizeof(int)+1); i++) {
        cout << dims2[i]<<", ";
    }
    cout << endl; // Get a good image dimension
   
// Visualize
    vtkSmartPointer renderWindowInteractor = vtkSmartPointer::New();
    imageViewer->SetInputConnection(extractVOI->GetOutputPort() );
    imageViewer->SetupInteractor( renderWindowInteractor );
    imageViewer->SetSize( 600, 600 );
   
    vtkRenderer* renderer = imageViewer->GetRenderer();
    renderer->ResetCamera();
    renderer->GradientBackgroundOn();
    renderer->SetBackground(0,0,0);
    renderer->SetBackground2(1,1,1);
   
    // Annotate the image with window/level and mouse over pixel information
    vtkSmartPointer cornerAnnotation = vtkSmartPointer::New();
    cornerAnnotation->SetLinearFontScaleFactor( 2 );
    cornerAnnotation->SetNonlinearFontScaleFactor( 1 );
    cornerAnnotation->SetMaximumFontSize( 20 );
    cornerAnnotation->SetText( 0, "Off Image" );
    cornerAnnotation->SetText( 3, "\n" );
    cornerAnnotation->GetTextProperty()->SetColor( 1,0,0);
   
    imageViewer->GetRenderer()->AddViewProp( cornerAnnotation );
   
    // Callback listens to MouseMoveEvents invoked by the interactor's style
    vtkSmartPointer callback = vtkSmartPointer::New();
    callback->SetViewer( imageViewer );
    callback->SetAnnotation( cornerAnnotation );
    callback->SetPicker( propPicker );
    callback->SetOrigin( orgn[0], orgn[1], orgn[2]); // add the origin of the sequence into the class

 // Events recognized
    vtkInteractorStyleImage* imageStyle = imageViewer->GetInteractorStyle();
    imageStyle->AddObserver( vtkCommand::MouseMoveEvent, callback );
    imageStyle->AddObserver( vtkCommand::LeftButtonReleaseEvent, callback );

    renderWindowInteractor->Initialize();
    renderWindowInteractor->Start();   


Thanks

Mathilde

Une messagerie gratuite, garantie à vie et des services en plus, ça vous tente ?
Je crée ma boîte mail www.laposte.net
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20110630/a117bca4/attachment.htm>


More information about the vtkusers mailing list