[Insight-users] Runtime error while connecting itk with vtk
Sotiris Dimopoulos
vtksot_dimopoulos at yahoo.gr
Mon Dec 20 12:04:59 EST 2004
Hi to all!
I started using itk 1.8( xp,visual studio 6) few days
ago so i don't have experience with it..i try to
connect vtk with itk in my project (read images with
vtk,do the image processing with itk and do the
visualization with vtk again),so when i try to test
the procedure vtk -> itk -> vtk,described in an
example i found (see at the end of the mail), although
the compile-build process its flowless(0 warnings,0
errors) when i try to execute the "exe" file i get a
"runtime error" and the message "abnormal
termination"...
Have you got an idea of what might be?
I'm sending you the example that i used as a guide
which makes me the same error when entering to the itk
pipeline (the first image is displayed ok, but when i
close the first and i'm about to see the other two i
get the message i decribed above) :
#include "itkImage.h"
#include "itkVTKImageExport.h"
#include "itkVTKImageImport.h"
#include "itkCurvatureFlowImageFilter.h"
#include "vtkImageImport.h"
#include "vtkImageExport.h"
#include "vtkImageShiftScale.h"
#include "vtkImageNoiseSource.h"
#include "vtkImageActor.h"
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtk2itk2vtk.h"
int main()
{
// VTK pipeline.
vtkImageNoiseSource* source =
vtkImageNoiseSource::New();
source->SetWholeExtent(0, 255, 0, 255, 0, 0);
source->SetMinimum(0);
source->SetMaximum(1);
// Create a vtkImageShiftScale to convert the
floating point image
// to an unsigned char image.
vtkImageShiftScale* shifter =
vtkImageShiftScale::New();
shifter->SetInput(source->GetOutput());
shifter->SetScale(256);
shifter->SetOutputScalarTypeToUnsignedChar();
// Create a vtkImageActor to help render the image.
Connect it to
// the vtkImageShiftScale instance.
vtkImageActor* actor = vtkImageActor::New();
actor->SetInput(shifter->GetOutput());
// Create a renderer, render window, and render
window interactor to
// display the results.
vtkRenderer* renderer = vtkRenderer::New();
vtkRenderWindow* renWin = vtkRenderWindow::New();
vtkRenderWindowInteractor* iren =
vtkRenderWindowInteractor::New();
renWin->SetSize(500, 500);
renWin->AddRenderer(renderer);
iren->SetRenderWindow(renWin);
// Add the vtkImageActor to the renderer for
display.
renderer->AddActor(actor);
renderer->SetBackground(0.4392, 0.5020, 0.5647);
// Bring up the render window and begin interaction.
renWin->Render();
iren->Start();
// Create a vtkExport object.
vtkImageExport* vtkExporter = vtkImageExport::New();
vtkExporter->SetInput(source->GetOutput());
// VTK to ITK pipeline connection.
typedef itk::Image<float, 2> ImageType;
typedef itk::VTKImageImport<ImageType>
ImageImportType;
ImageImportType::Pointer itkImporter =
ImageImportType::New();
ConnectPipelines(vtkExporter, itkImporter);
// ITK pipeline.
typedef itk::CurvatureFlowImageFilter<ImageType,
ImageType> DenoiserType;
// Create the itk::CurvatureFlowImageFilter to
smooth the source data.
DenoiserType::Pointer denoiser =
DenoiserType::New();
denoiser->SetInput(itkImporter->GetOutput());
denoiser->SetTimeStep(0.15);
denoiser->SetNumberOfIterations(8);
// ITK to VTK pipeline connection.
typedef itk::VTKImageExport<ImageType>
ImageExportType;
// Create the itk::VTKImageExport instance and connect
it to the
// itk::CurvatureFlowImageFilter.
ImageExportType::Pointer itkExporter =
ImageExportType::New();
itkExporter->SetInput(denoiser->GetOutput());
// Create the vtkImageImport and connect it to the
// itk::VTKImageExport instance.
vtkImageImport* vtkImporter = vtkImageImport::New();
ConnectPipelines(itkExporter, vtkImporter);
// VTK pipeline.
// Convert the floating point image to an unsigned
char image.
shifter->SetInput(vtkImporter->GetOutput());
shifter->SetScale(256);
shifter->SetOutputScalarTypeToUnsignedChar();
// Update the input to actor.
actor->SetInput(shifter->GetOutput());
iren->Start();
// After last interaction is quit, modifiy the ITK
pipeline and
// begin interaction again. The user will see the
ITK pipeline
// re-execute due only to the update request through
the VTK
// pipeline.
source->SetMinimum(0.5);
iren->Start();
// VTK does not use smart pointers, so we must clean
up its pipeline
// explicitly.
iren->Delete();
renWin->Delete();
renderer->Delete();
actor->Delete();
shifter->Delete();
vtkImporter->Delete();
source->Delete();
vtkExporter->Delete();
return 0;
}
Thanks
____________________________________________________________
Do You Yahoo!?
Αποκτήστε τη δωρεάν @yahoo.gr διεύθυνση σας στο http://www.otenet.gr
More information about the Insight-users
mailing list