ITK/Examples/IO/ReadUnknownImageType: Difference between revisions
Daviddoria (talk | contribs) mNo edit summary |
Daviddoria (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
==ReadUnknownImageType.cxx== | |||
<source lang="cpp"> | |||
#include "itkImage.h" | |||
#include "itkImageFileReader.h" | |||
template<typename TImageType> | |||
void ReadFile(std::string filename, typename TImageType::Pointer image); | |||
int main(int argc, char *argv[]) | |||
{ | |||
if(argc < 2) | |||
{ | |||
std::cerr << "Required: filename" << std::endl; | |||
return EXIT_FAILURE; | |||
} | |||
std::string inputFilename = argv[1]; | |||
typedef itk::ImageIOBase::IOComponentType ScalarPixelType; | |||
itk::ImageIOBase::Pointer imageIO = | |||
itk::ImageIOFactory::CreateImageIO( | |||
inputFilename.c_str(), itk::ImageIOFactory::ReadMode); | |||
// Now that we found the appropriate ImageIO class, ask it to | |||
// read the meta data from the image file. | |||
imageIO->SetFileName(inputFilename); | |||
imageIO->ReadImageInformation(); | |||
const ScalarPixelType pixelType = imageIO->GetComponentType(); | |||
std::cout << "Pixel Type is " << imageIO->GetComponentTypeAsString(pixelType) | |||
<< std::endl; | |||
const size_t numDimensions = imageIO->GetNumberOfDimensions(); | |||
std::cout << "numDimensions: " << numDimensions << std::endl; | |||
/* | |||
switch (pixelType) | |||
{ | |||
case itk::ImageIOBase::COVARIANTVECTOR: | |||
typedef itk::Image<unsigned char, 2> ImageType; | |||
ImageType::Pointer image = ImageType::New(); | |||
ReadFile<ImageType>(inputFilename, image); | |||
break; | |||
typedef itk::Image<unsigned char, 2> ImageType; | |||
ImageType::Pointer image = ImageType::New(); | |||
ReadFile<ImageType>(inputFilename, image); | |||
break; | |||
default: | |||
std::cerr << "Pixel Type (" | |||
<< imageIO->GetComponentTypeAsString(pixelType) | |||
<< ") not supported. Exiting." << std::endl; | |||
return -1; | |||
} | |||
*/ | |||
return EXIT_SUCCESS; | |||
} | |||
template<typename TImageType> | |||
void ReadFile(std::string filename, typename TImageType::Pointer image) | |||
{ | |||
typedef itk::ImageFileReader<TImageType> ReaderType; | |||
typename ReaderType::Pointer reader = ReaderType::New(); | |||
reader->SetFileName(filename); | |||
reader->Update(); | |||
image->Graft(reader->GetOutput()); | |||
} | |||
</source> | |||
==CreateImages.cxx== | ==CreateImages.cxx== | ||
Line 18: | Line 87: | ||
typedef itk::Image< itk::CovariantVector<double, 4> , 2> ImageType4; | typedef itk::Image< itk::CovariantVector<double, 4> , 2> ImageType4; | ||
ImageType4::Pointer image4 = ImageType4::New(); | ImageType4::Pointer image4 = ImageType4::New(); | ||
WriteFile(image4, std::string("image4.mhd")); | WriteFile<ImageType4>(image4, std::string("image4.mhd")); | ||
typedef itk::Image< itk::CovariantVector<double, 5> , 2> ImageType5; | typedef itk::Image< itk::CovariantVector<double, 5> , 2> ImageType5; | ||
ImageType5::Pointer image5 = ImageType5::New(); | ImageType5::Pointer image5 = ImageType5::New(); | ||
WriteFile(image5, std::string("image5.mhd")); | WriteFile<ImageType5>(image5, std::string("image5.mhd")); | ||
return EXIT_SUCCESS; | return EXIT_SUCCESS; | ||
Line 45: | Line 114: | ||
image->SetRegions(region); | image->SetRegions(region); | ||
image->Allocate(); | image->Allocate(); | ||
typedef itk:: | typedef typename itk::ImageFileWriter<TImageType> WriterType; | ||
typename | typename WriterType::Pointer writer = WriterType::New(); | ||
writer->SetInput(image); | |||
writer->SetFileName(filename); | |||
writer->Update(); | |||
} | } | ||
Line 67: | Line 136: | ||
FIND_PACKAGE(ITK REQUIRED) | FIND_PACKAGE(ITK REQUIRED) | ||
INCLUDE(${ITK_USE_FILE}) | INCLUDE(${ITK_USE_FILE}) | ||
ADD_EXECUTABLE(ReadUnknownImageType ReadUnknownImageType.cxx) | |||
TARGET_LINK_LIBRARIES(ReadUnknownImageType ITKIO ITKBasicFilters ITKCommon ) | |||
ADD_EXECUTABLE(CreateImages CreateImages.cxx) | ADD_EXECUTABLE(CreateImages CreateImages.cxx) | ||
TARGET_LINK_LIBRARIES(CreateImages ITKIO ITKBasicFilters ITKCommon ) | TARGET_LINK_LIBRARIES(CreateImages ITKIO ITKBasicFilters ITKCommon ) | ||
</source> | </source> |
Revision as of 15:56, 1 December 2010
ReadUnknownImageType.cxx
<source lang="cpp">
- include "itkImage.h"
- include "itkImageFileReader.h"
template<typename TImageType> void ReadFile(std::string filename, typename TImageType::Pointer image);
int main(int argc, char *argv[]) {
if(argc < 2) { std::cerr << "Required: filename" << std::endl;
return EXIT_FAILURE; } std::string inputFilename = argv[1];
typedef itk::ImageIOBase::IOComponentType ScalarPixelType;
itk::ImageIOBase::Pointer imageIO = itk::ImageIOFactory::CreateImageIO( inputFilename.c_str(), itk::ImageIOFactory::ReadMode);
// Now that we found the appropriate ImageIO class, ask it to // read the meta data from the image file.
imageIO->SetFileName(inputFilename); imageIO->ReadImageInformation(); const ScalarPixelType pixelType = imageIO->GetComponentType(); std::cout << "Pixel Type is " << imageIO->GetComponentTypeAsString(pixelType) << std::endl; const size_t numDimensions = imageIO->GetNumberOfDimensions(); std::cout << "numDimensions: " << numDimensions << std::endl;
/* switch (pixelType) { case itk::ImageIOBase::COVARIANTVECTOR: typedef itk::Image<unsigned char, 2> ImageType; ImageType::Pointer image = ImageType::New(); ReadFile<ImageType>(inputFilename, image); break; typedef itk::Image<unsigned char, 2> ImageType; ImageType::Pointer image = ImageType::New(); ReadFile<ImageType>(inputFilename, image); break;
default: std::cerr << "Pixel Type (" << imageIO->GetComponentTypeAsString(pixelType) << ") not supported. Exiting." << std::endl; return -1; } */
return EXIT_SUCCESS;
}
template<typename TImageType> void ReadFile(std::string filename, typename TImageType::Pointer image) {
typedef itk::ImageFileReader<TImageType> ReaderType; typename ReaderType::Pointer reader = ReaderType::New();
reader->SetFileName(filename); reader->Update();
image->Graft(reader->GetOutput());
} </source>
CreateImages.cxx
<source lang="cpp">
- include "itkImage.h"
- include "itkImageFileWriter.h"
- include <itkCovariantVector.h>
- include <string>
template<typename TImageType> void WriteFile(typename TImageType::Pointer image, std::string filename);
int main(int, char *[]) {
typedef itk::Image< itk::CovariantVector<double, 4> , 2> ImageType4; ImageType4::Pointer image4 = ImageType4::New(); WriteFile<ImageType4>(image4, std::string("image4.mhd"));
typedef itk::Image< itk::CovariantVector<double, 5> , 2> ImageType5; ImageType5::Pointer image5 = ImageType5::New(); WriteFile<ImageType5>(image5, std::string("image5.mhd"));
return EXIT_SUCCESS;
}
template<typename TImageType> void WriteFile(typename TImageType::Pointer image, std::string filename) {
// Create image typename TImageType::IndexType start; start[0] = 0; start[1] = 0;
typename TImageType::SizeType size; size[0] = 20; size[1] = 30;
typename TImageType::RegionType region; region.SetSize(size); region.SetIndex(start);
image->SetRegions(region); image->Allocate(); typedef typename itk::ImageFileWriter<TImageType> WriterType; typename WriterType::Pointer writer = WriterType::New(); writer->SetInput(image); writer->SetFileName(filename); writer->Update();
}
template void WriteFile<itk::Image< itk::CovariantVector<double, 4> , 2> >(itk::Image< itk::CovariantVector<double, 4> , 2>::Pointer, std::string); template void WriteFile<itk::Image< itk::CovariantVector<double, 5> , 2> >(itk::Image< itk::CovariantVector<double, 5> , 2>::Pointer, std::string); </source>
CMakeLists.txt
<source lang="cmake"> cmake_minimum_required(VERSION 2.6)
PROJECT(CreateImages)
FIND_PACKAGE(ITK REQUIRED) INCLUDE(${ITK_USE_FILE})
ADD_EXECUTABLE(ReadUnknownImageType ReadUnknownImageType.cxx) TARGET_LINK_LIBRARIES(ReadUnknownImageType ITKIO ITKBasicFilters ITKCommon )
ADD_EXECUTABLE(CreateImages CreateImages.cxx) TARGET_LINK_LIBRARIES(CreateImages ITKIO ITKBasicFilters ITKCommon ) </source>