[Insight-users] Reading/writing images and CMake

Brecht Heyde Brecht.Heyde at med.kuleuven.be
Fri Nov 26 13:57:59 EST 2010


Hi all,

 

I am fairly new to ITK and have a couple of questions:

 

1. When creating a new ITK program, do I always have to go through CMake to
create (in my case) a .sln Visual Studio Solution? Or do I otherwise have to
specify all the additional directories + libraries for the linker manually?

 

2. I tried adapting the ImageReadWrite.cxx slightly in order to read the
BrainMidSagittalSlice.png found in the ITK/Examples/Data directory. 
My source code is:

#include "itkImageFileReader.h"

#include "itkImageFileWriter.h"

 

#include "itkImage.h"

 

 

int main()

{

  typedef short      PixelType;

  const   unsigned int        Dimension = 2;

  typedef itk::Image< PixelType, Dimension >    ImageType;

  

  typedef itk::ImageFileReader< ImageType >  ReaderType;

  typedef itk::ImageFileWriter< ImageType >  WriterType;

 

  ReaderType::Pointer reader = ReaderType::New();

  WriterType::Pointer writer = WriterType::New();

  

  const char * inputFilename  = "BrainMidSagittalSlice.png";

  const char * outputFilename = "BrainMidSagittalSlice_output.png";

 

  reader->SetFileName( inputFilename  );

  writer->SetFileName( outputFilename );

  

  writer->SetInput( reader->GetOutput() );

  

  try 

    { 

    writer->Update(); 

    } 

  catch( itk::ExceptionObject & err ) 

    { 

    std::cerr << "ExceptionObject caught !" << std::endl; 

    std::cerr << err << std::endl;

    return EXIT_FAILURE;

    } 

 

  return EXIT_SUCCESS;

}

 

With CmakeList.txt:

 

                CMAKE_MINIMUM_REQUIRED(VERSION 2.4)

IF(COMMAND CMAKE_POLICY)

  CMAKE_POLICY(SET CMP0003 NEW)

ENDIF(COMMAND CMAKE_POLICY)

 

 

# This project is designed to be built outside the Insight source tree.

PROJECT(ImageReadWrite)

 

# Find ITK.

FIND_PACKAGE(ITK REQUIRED)

INCLUDE(${ITK_USE_FILE})

 

ADD_EXECUTABLE(ImageReadWrite ImageReadWrite.cxx)

 

TARGET_LINK_LIBRARIES(ImageReadWrite ITKIO)

 

When running the resulting executable from a cmd prompt as 'ImageReadWrite',
I get the following error:

 

C:\ITK-dev\ImageReadWrite\debug>ImageReadWrite

ExceptionObject caught !

 

itk::ImageFileReaderException (0133F0CC)

Location: "void __thiscall itk::ImageFileReader<class
itk::Image<short,2>,class

itk::DefaultConvertPixelTraits<short> >::GenerateOutputInformation(void)"

File:
c:\itk-src\insighttoolkit-3.20.0\insighttoolkit-3.20.0\code\io\itkImageFileR
eader.txx

Line: 146

Description:  Could not create IO object for file BrainMidSagittalSlice.png

  Tried to create one of the following:

    BioRadImageIO

    GDCMImageIO

    MetaImageIO

    PNGImageIO

    VTKImageIO

    GiplImageIO

    LSMImageIO

    AnalyzeImageIO

    NiftiImageIO

    StimulateImageIO

    JPEGImageIO

    TIFFImageIO

    NrrdImageIO

    BMPImageIO

    DICOMImageIO2

  You probably failed to set a file suffix, or  set the suffix to an
unsupported type.

 

As I understood from previous mails on this list, the IO object decides
automatically to what format it should write. What am I doing wrong?

 

3. I'd like to read a 3D+time dataset in ITK. The original dataset is in
dicom format but I have previously extracted the relevant data and converted
to a .mat format for further processing in Matlab (in practice this is just
one big 4D matrix). Furthermore, we have developed a visualisation tool to
manually segment such a dataset and export a mesh (cloud of points with
connectivity matrix) containing this manual contouring.

 

I was wondering what format I could use to import such a series of 3D
matrices and import this cloud of points. I doubt that a dicomreader would
work as the image data is stored in a private datastructure in the
dicomformat.

 

4. I'd like to register this set of 3D images and know how my cloud of
points are deformed by the registration algorithm. Is this possible in ITK?
Likewise, would it be possible to calculate how an overlying grid deforms
due to this registration? Finally, I would like to export the positions of
this deformed set of points (and preferably the deformed floating images).
Can I do this in a Matlab compatible format or do I have to write a mex
wrapper for this? 

 

Many thanks,

 

Best regards,

Brecht 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20101126/9895412c/attachment.htm>


More information about the Insight-users mailing list