[Insight-users] Reading/writing images and CMake

Ryan Smith ryanleesmith at gmail.com
Mon Nov 29 11:48:27 EST 2010


Brecht-

You might also be interested in DIRART: http://code.google.com/p/dirart/

The Matlab based software package does deformable registration on volumetric
dicom imagesets.  I believe the backend uses ITK algorithms, while the front
end GUI is in Matlab.

Cheers-
-Ryan

On Fri, Nov 26, 2010 at 2:20 PM, John Drozd <john.drozd at gmail.com> wrote:

> Hi again,
>
> Just one clarification:
> Also I noticed that PNG supports pixel types of unsigned short and unsigned
> char.
> You had a short pixel type.
> You'll notice in my code that I sent you, I had changed short to unsigned
> short.
>
> John
>
>
> On Fri, Nov 26, 2010 at 3:00 PM, John Drozd <john.drozd at gmail.com> wrote:
>
>> Hi,
>>
>> Did you copy the png images to the same directory as your executable
>> program?
>> (otherwise you may need to specify the path)
>>
>> I revised your code as attached and it worked for me on linux.
>> (I used the attached CMakeLists.txt file that specifies the
>> include_directories where the libraries are on my system,
>> it includes more directories because I use this CMakeLists.txt file's
>> include_directories on all my compiliations)
>> Unfortunately, I have not figured out how to get CMake to automatically
>> find the include_directories and ITK_DIR. I enter the ITK_DIR each time I
>> first compile the program.
>>
>> John
>>
>> On Fri, Nov 26, 2010 at 1:57 PM, Brecht Heyde <
>> Brecht.Heyde at med.kuleuven.be> wrote:
>>
>>>  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\itkImageFileReader.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
>>>
>>>
>>>
>>> _____________________________________
>>> 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.html
>>>
>>> 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
>>>
>>>
>>
>>
>> --
>> John Jan Drozd, Ph.D.
>> Post-Doctoral Fellow
>> Imaging Research Laboratories
>> Robarts Research Institute
>> The University of Western Ontario
>> London, ON, Canada
>> http://imaging.robarts.ca/~jdrozd <http://imaging.robarts.ca/%7Ejdrozd>
>>
>>
>
>
> --
> John Jan Drozd, Ph.D.
> Post-Doctoral Fellow
> Imaging Research Laboratories
> Robarts Research Institute
> The University of Western Ontario
> London, ON, Canada
> http://imaging.robarts.ca/~jdrozd <http://imaging.robarts.ca/%7Ejdrozd>
>
>
> _____________________________________
> 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.html
>
> 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://www.itk.org/pipermail/insight-users/attachments/20101129/76eb0c98/attachment.htm>


More information about the Insight-users mailing list