[ITK] [ITK-users] Fwd: problem with convert itk to vtk

Dženan Zukić dzenanz at gmail.com
Thu May 8 04:57:24 EDT 2014


Below code runs without problems on my system (the last delete() was
crashing it after closing). Screenshot is attached. Dataset in question is
here:
http://www.cg.informatik.uni-siegen.de/data/Downloads/DzZ.zip

Problem with your .pro file is lack of itkImageToVTKImageFilter in either
include path or libs. With such a simple "project" you can easily switch to
CMake <http://www.cmake.org/Wiki/CMake/Tutorials/Qt>.

#include <itkImageFileReader.h>
#include <itkGDCMImageIO.h>
#include <vtkSmartPointer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <itkImageToVTKImageFilter.h>
#include <vtkImageViewer.h>
#include <itkImageSeriesReader.h>
#include <itkGDCMSeriesFileNames.h>

void main()
{
    typedef itk::Image<unsigned char, 3> VisualizingImageType;
    typedef itk::Image<unsigned char, 3> ImageType;
    typedef itk::ImageSeriesReader< ImageType >  ReaderType;

    ReaderType::Pointer reader = ReaderType::New();
    typedef itk::GDCMImageIO ImageIOType;
    ImageIOType::Pointer dicomIO = ImageIOType::New();
    reader->SetImageIO(dicomIO);

    typedef itk::GDCMSeriesFileNames NamesGeneratorType;
    NamesGeneratorType::Pointer nameGenerator = NamesGeneratorType::New();
    nameGenerator->SetDirectory("D:/Repo/Data/Zukic/DzZ_1189252");


    // get series IDs
    typedef std::vector<std::string> SeriesIdContainer;
    const SeriesIdContainer &seriesUID = nameGenerator->GetSeriesUIDs();

    // get dicom series
    typedef std::vector<std::string> FileNamesContainer;
    FileNamesContainer fileName;
    fileName=nameGenerator->GetFileNames(seriesUID.begin()->c_str());
    reader->SetFileNames(fileName);

    // pull reader
    reader->Update();
    reader->GetOutput()->Print(std::cout);

    vtkSmartPointer<vtkRenderWindow> renWin =
vtkSmartPointer<vtkRenderWindow>::New();
    vtkSmartPointer<vtkRenderer> ren1 = vtkSmartPointer<vtkRenderer>::New();
    ren1->SetBackground(0.5f,0.5f,1.0f);

    renWin->AddRenderer(ren1);
    renWin->SetSize(1280,1024);
    vtkSmartPointer<vtkRenderWindowInteractor> iren =
        vtkSmartPointer<vtkRenderWindowInteractor>::New();
    iren->SetRenderWindow(renWin);
    renWin->Render(); // make sure we have an OpenGL context.

    typedef itk::ImageToVTKImageFilter<VisualizingImageType>
itkVtkConverter;
    itkVtkConverter::Pointer conv=itkVtkConverter::New();
    conv->GetExporter()->SetInput(reader->GetOutput());
    conv->GetImporter()->Update();
    conv->GetImporter()->GetOutput()->Print(std::cout);

    vtkImageViewer * viewer =vtkImageViewer::New();
    vtkRenderWindowInteractor * renderWindowInteractor =
    vtkRenderWindowInteractor::New();
    viewer->SetupInteractor( renderWindowInteractor );
    viewer->SetInputData( conv->GetImporter()->GetOutput() );
    viewer->SetZSlice( 0 ); // <-- Slice selection
    viewer->Render();
    renderWindowInteractor->Start();

    viewer->Delete();
    renderWindowInteractor->Delete();
    //conv->GetImporter()->Delete(); //causes error due to unnecessary
Delete
}



On Thu, May 8, 2014 at 10:19 AM, Роман Глуховский <roman_glu at mail.ru> wrote:

> Hi,
>
> I build the libraries agian. the examples works now.
>
> But i get the same error again in my programm.
>
>
> Here is my pro-file, maybe here is something wrong:
>
> #-------------------------------------------------
> #
> # Project created by QtCreator 2014-05-07T17:08:03
> #
> #-------------------------------------------------
>
> QT       += core gui
>
> greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
>
> TARGET = test
> TEMPLATE = app
>
> INCLUDEPATH+= /usr/local/include/ITK-4.5\
> /usr/local/include/vtk-6.1
> DEPENDPATH+=/usr/local/include/ITK-4.5\
> /usr/local/include/vtk-6.1
> LIBS += -L/usr/local/lib/\
> #-lITKBiasCorrection-4.5\
> -lITKBioCell-4.5\
> -lITKCommon-4.5\
> -lITKDICOMParser-4.5\
> -litkdouble-conversion-4.5\
> -lITKEXPAT-4.5\
> -ITKFEM-4.5\
> -litkgdcmCommon-4.5\
> -litkgdcmDICT-4.5\
> -litkgdcmDSED-4.5\
> -litkgdcmIOD-4.5\
> -litkgdcmjpeg8-4.5\
> -litkgdcmjpeg12-4.5\
> -litkgdcmjpeg16-4.5\
> -litkgdcmMSFF-4.5\
> -litkgdcmuuid-4.5\
> -lITKgiftiio-4.5\
> -litkhdf5_cpp-4.5\
> -litkhdf5-4.5\
> -lITKIOBioRad-4.5\
> -lITKIOBMP-4.5\
> -lITKIOCSV-4.5\
> -lITKIOGDCM-4.5\
> -lITKIOGE-4.5\
> -lITKIOGIPL-4.5\
> -lITKIOHDF5-4.5\
> -lITKIOImageBase-4.5\
> -lITKIOIPL-4.5\
> -lITKIOJPEG-4.5\
> -lITKIOLSM-4.5\
> -lITKIOMesh-4.5\
> -lITKIOMeta-4.5\
> -lITKIONIFTI-4.5\
> -lITKIONRRD-4.5\
> -lITKIOPNG-4.5\
> -lITKIOSiemens-4.5\
> -lITKIOSpatialObjects-4.5\
> -lITKIOStimulate-4.5\
> -lITKIOTIFF-4.5\
> -lITKIOTransformBase-4.5\
> -lITKIOTransformHDF5-4.5\
> -lITKIOTransformInsightLegacy-4.5\
> -lITKIOTransformMatlab-4.5\
> -lITKIOVTK-4.5\
> -lITKIOXML-4.5\
> -litkjpeg-4.5\
> -lITKKLMRegionGrowing-4.5\
> -lITKLabelMap-4.5\
> -lITKMesh-4.5\
> -lITKMetaIO-4.5\
> -litkNetlibSlatec-4.5\
> -lITKniftiio-4.5\
> -lITKNrrdIO-4.5\
> -litkopenjpeg-4.5\
> -lITKOptimizers-4.5\
> #-lITKOptimizersv4-4.5\
> -lITKPath-4.5\
> -litkpng-4.5\
> -lITKPolynomials-4.5\
> -lITKQuadEdgeMesh-4.5\
> #-lITKReview-4.5\
> -lITKSpatialObjects-4.5\
> -lITKStatistics-4.5\
> -litksys-4.5\
> -litktiff-4.5\
> -litkv3p_lsqr-4.5\
> -litkv3p_netlib-4.5\
> -litkvcl-4.5\
> -lITKVideoCore-4.5\
> -lITKVideoIO-4.5\
> -litkvnl_algo-4.5\
> -litkvnl-4.5\
> -lITKVNLInstantiation-4.5\
> -lITKVTK-4.5\
> -lITKWatersheds-4.5\
> -litkzlib-4.5\
> -lITKznz-4.5\
> #-lvtkIOLSDyna
>
> LIBS += -L/usr/local/lib/vtk-6.1/\
> #-lMapReduceMPI\
> #-lmpistubs-6.1\
> -lQVTK\
> -lvtkalglib\
> -lvtkCharts\
> -lvtkCommon\
> -lvtkDICOMParser\
> -lvtkexoIIc\
> -lvtkexpat-6.1\
> -lvtkFiltering\
> -lvtkfreetype-6.1\
> -lvtkftgl\
> -lvtkGenericFiltering\
> -lvtkGeovis\
> -lvtkGraphics\
> -lvtkhdf5_hl-6.1\
> -lvtkhdf5-6.1\
> -lvtkHybrid\
> -lvtkImaging\
> -lvtkInfovis\
> -lvtkIO\
> -lvtkjpeg-6.1\
> -lvtklibxml2-6.1\
> -lvtkmetaio\
> -lvtkNetCDF_cxx-6.1\
> -lvtkNetCDF-6.1\
> -lvtkpng-6.1\
> -lvtkproj4\
> -lvtkRendering\
> -lvtksqlite-6.1\
> -lvtksys\
> -lvtktiff-6.1\
> -lvtkverdict\
> -lvtkViews\
> -lvtkVolumeRendering\
> -lvtkWidgets\
> -lvtkzlib-6.1
>
> SOURCES += main.cpp\
>         mainwindow.cpp
>
> HEADERS  += mainwindow.h
>
> FORMS    += mainwindow.ui.
>
>
>
> Tue, 29 Apr 2014 13:48:33 +0200 от Dženan Zukić <dzenanz at gmail.com>:
>
>   You could try that, definitely. Using static libraries instead of
> dynamic can save you some headaches.
>
>
> On Tue, Apr 29, 2014 at 1:45 PM, Роман Глуховский <roman_glu at mail.ru<https://e.mail.ru/compose/?mailto=mailto%3aroman_glu@mail.ru>
> > wrote:
>
> it could be that i have some problems with the libraries.
>
> should i compile and build ITK and VTK again?
>
>
>
> Tue, 29 Apr 2014 13:14:29 +0200 от Dženan Zukić <dzenanz at gmail.com<https://e.mail.ru/compose/?mailto=mailto%3adzenanz@gmail.com>
> >:
>
>   Then you most likely have some problems with how libraries are
> compiled/built. Can you successfully run examples that come with ITK and
> VTK libraries? If not, you first need to take care of those issues.
>
>
> On Tue, Apr 29, 2014 at 1:01 PM, Роман Глуховский <roman_glu at mail.ru<https://e.mail.ru/compose/?mailto=mailto%3aroman_glu@mail.ru>
> > wrote:
>
> I try this example, but i get also a segmentation fault
>
>
> Tue, 29 Apr 2014 12:04:45 +0200 от Dženan Zukić <dzenanz at gmail.com<https://e.mail.ru/compose/?mailto=mailto%3adzenanz@gmail.com>
> >:
>
>   Have you seen this example?
>
> http://vtk.org/Wiki/VTK/ExamplesBoneYard/Cxx/VolumeRendering/itkVtkImageConvert
>
>
> On Tue, Apr 29, 2014 at 10:45 AM, Роман Глуховский <roman_glu at mail.ru<https://e.mail.ru/compose/?mailto=mailto%3aroman_glu@mail.ru>
> > wrote:
>
>
>   I change the part of my programm to load the ImageSeries,
>
>     typedef itk::Image<unsigned char, 3> ImageType;
>     typedef itk::ImageSeriesReader< ImageType >  ReaderType;
>     ReaderType::Pointer reader = ReaderType::New();
>     typedef itk::GDCMImageIO ImageIOType;
>     ImageIOType::Pointer dicomIO = ImageIOType::New();
>     reader->SetImageIO(dicomIO);
>
>     typedef itk::GDCMSeriesFileNames NamesGeneratorType;
>     NamesGeneratorType::Pointer nameGenerator = NamesGeneratorType::New();
>     nameGenerator->SetDirectory("Folder");
>
>
>     // get series IDs
>     typedef std::vector<std::string> SeriesIdContainer;
>     const SeriesIdContainer &seriesUID = nameGenerator->GetSeriesUIDs();
>
>     // get dicom series
>     typedef std::vector<std::string> FileNamesContainer;
>     FileNamesContainer fileName;
>     fileName=nameGenerator->GetFileNames(seriesUID.begin()->c_str());
>     reader->SetFileNames(fileName);
>
>     // pull reader
>     reader->Update();
>
> But my programm crash again at the same position, when i try to convert to
> vtk.
>
>
> Sat, 26 Apr 2014 07:12:55 +0800 (CST) от 关红彦 <ghy at tellyes.com<https://e.mail.ru/compose/?mailto=mailto%3aghy@tellyes.com>
> >:
>
>
>
> I just wonder if your 3D medical images save as a file or a series of
> images.
> If you save  them to a series of files,  you shouldn't  do this:
>  #include <itkImageFileReader.h<http://www.itk.org/Doxygen45/html/itkImageFileReader_8h_source.html>
> >
> reader->SetFileName( "DICOM-File" ); 
>
> but this:
> #include <itkImageSeriesReader.h<http://www.itk.org/Doxygen45/html/itkImageSeriesReader_8h_source.html>
> >
>  void SetFileNames<http://www.itk.org/Doxygen45/html/classitk_1_1ImageSeriesReader.html#aedb3ea58c4bb4975f46ef9c85a855aa6>
>  (const FileNamesContainer<http://www.itk.org/Doxygen45/html/classitk_1_1ImageSeriesReader.html#a2efd0b86373c161229f7984b9ea4af56>
>  &name) This class can read a series of *.DCM files that are using a lot
> in the hospital.
>
>
> At 2014-04-25 20:52:20,"Роман Глуховский" <roman_glu at mail.ru<https://e.mail.ru/compose/?mailto=mailto%3aroman_glu@mail.ru>>
> wrote:
>
> Hi vtkusers,
>
> i load a DICOM-file with itk and after that i would like to display the
> file with vtk.
>
> If I compile the programm I have no error. When i start the programm, its
> crashed and
> i get a return value "0".
>
> In the debug-mode i get a "segmentation fault" and the programm stops at
> this position
>
> ---------->
> m_Importer->SetPropagateUpdateExtentCallback(m_Exporter->GetPropagateUpdateExtentCallback());
>
> in the "itkImageToVTKImageFilter_hxx".
>
> Here is my code:
>
>         typedef itk::Image<unsigned char, 3> VisualizingImageType;
>         typedef itk::ImageFileReader< VisualizingImageType >  ReaderType;
>         ReaderType::Pointer reader = ReaderType::New();
>         reader->SetFileName( "DICOM-File" );
>         typedef itk::GDCMImageIO ImageIOType;
>
>         ImageIOType::Pointer gdcmImageIO = ImageIOType::New();
>
>         reader->SetImageIO( gdcmImageIO );
>         reader->Update();
>         reader->GetOutput()->Print(std::cout);
>
>         vtkSmartPointer<vtkRenderWindow> renWin =
> vtkSmartPointer<vtkRenderWindow>::New();
>         vtkSmartPointer<vtkRenderer> ren1 =
> vtkSmartPointer<vtkRenderer>::New();
>         ren1->SetBackground(0.5f,0.5f,1.0f);
>
>         renWin->AddRenderer(ren1);
>         renWin->SetSize(1280,1024);
>         vtkSmartPointer<vtkRenderWindowInteractor> iren =
>             vtkSmartPointer<vtkRenderWindowInteractor>::New();
>         iren->SetRenderWindow(renWin);
>         renWin->Render(); // make sure we have an OpenGL context.
>
>         typedef itk::ImageToVTKImageFilter<VisualizingImageType>
> itkVtkConverter;
>         itkVtkConverter::Pointer conv=itkVtkConverter::New();
>         conv->GetExporter()->SetInput(reader->GetOutput());
>         conv->GetImporter()->Update();
>         conv->GetImporter()->GetOutput()->Print(std::cout);
>
>         vtkImageViewer * viewer =vtkImageViewer::New();
>         vtkRenderWindowInteractor * renderWindowInteractor =
>         vtkRenderWindowInteractor::New();
>         viewer->SetupInteractor( renderWindowInteractor );
>         viewer->SetInputData( conv->GetImporter()->GetOutput() );
>         viewer->SetZSlice( 0 ); // <-- Slice selection
>         viewer->Render();
>         renderWindowInteractor->Start();
>
>         viewer->Delete();
>         renderWindowInteractor->Delete();
>         conv->GetImporter()->Delete();
>
>
> Thank you for your help
>
> Roman
>
>
>  _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the VTK FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
>
> ------------------------------
>
> ------------------------------
>
> --
> Роман Глуховский
>
> _____________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Kitware offers ITK Training Courses, for more information visit:
> http://www.kitware.com/products/protraining.php
>
> Please keep messages on-topic and check the ITK FAQ at:
> http://www.itk.org/Wiki/ITK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.itk.org/mailman/listinfo/insight-users
>
>
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/community/attachments/20140508/18348777/attachment-0002.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Roman.png
Type: image/png
Size: 64887 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/community/attachments/20140508/18348777/attachment-0002.png>
-------------- next part --------------
_____________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://www.kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-users


More information about the Community mailing list