[Insight-users] Reading/writing images and CMake

John Drozd john.drozd at gmail.com
Fri Nov 26 15:20:32 EST 2010


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>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-users/attachments/20101126/f4ba98af/attachment-0001.htm>


More information about the Insight-users mailing list