ITK/Examples/SimpleOperations/TranslationTransform: Difference between revisions
From KitwarePublic
Jump to navigationJump to search
Daviddoria (talk | contribs) |
Daviddoria (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
==TranslationTransform.cxx== | |||
== | |||
<source lang="cpp"> | <source lang="cpp"> | ||
#include "itkImage.h" | #include "itkImage.h" | ||
Line 8: | Line 6: | ||
#include "itkNormalizeImageFilter.h" | #include "itkNormalizeImageFilter.h" | ||
#include "itkResampleImageFilter.h" | #include "itkResampleImageFilter.h" | ||
#include "itkImageFileWriter.h" | |||
#include | #include "QuickView.h" | ||
typedef itk::Image<unsigned char, 2> ImageType; | |||
void CreateImage(ImageType::Pointer image); | |||
int main(int argc, char *argv[]) | int main(int argc, char *argv[]) | ||
{ | { | ||
ImageType::Pointer image = ImageType::New(); | |||
CreateImage(image); | |||
itk::TranslationTransform<double,2>::Pointer transform = | typedef itk::TranslationTransform<double,2> TranslationTransformType; | ||
TranslationTransformType::Pointer transform = | |||
TranslationTransformType::New(); | |||
TranslationTransformType::OutputVectorType translation; | |||
translation[0] = 10; | translation[0] = 10; | ||
translation[ | translation[1] = 20; | ||
transform->Translate(translation); | transform->Translate(translation); | ||
typedef itk::ResampleImageFilter<ImageType, ImageType> ResampleImageFilterType; | |||
ResampleImageFilterType::Pointer resampleFilter = ResampleImageFilterType::New(); | |||
resampleFilter->SetTransform(transform.GetPointer()); | |||
resampleFilter->SetInput(image); | |||
/* | |||
// These are the defaults | |||
double spacing[ 2 ]; | |||
spacing[0] = 1.0; | |||
spacing[1] = 1.0; | |||
resampleFilter->SetOutputSpacing( spacing ); | |||
resampleFilter-> | |||
double origin[ 2 ]; | |||
origin[0] = 0.0; | |||
origin[1] = 0.0; | |||
resampleFilter->SetOutputOrigin( origin ); | |||
*/ | |||
// Without this, the program crashes | |||
ImageType::SizeType size = image->GetLargestPossibleRegion().GetSize(); | |||
resampleFilter->SetSize( size ); | |||
resampleFilter->Update(); | |||
QuickView viewer; | |||
viewer.AddImage(image.GetPointer()); | |||
viewer.AddImage(resampleFilter->GetOutput()); | |||
viewer.Visualize(); | |||
return EXIT_SUCCESS; | |||
} | |||
void CreateImage(ImageType::Pointer image) | |||
{ | |||
ImageType::IndexType start; | |||
start.Fill(0); | |||
ImageType::SizeType size; | |||
size.Fill(100); | |||
ImageType::RegionType region(start, size); | |||
image->SetRegions(region); | |||
image->Allocate(); | |||
image->FillBuffer(0); | |||
// Make a square | |||
for(unsigned int r = 40; r < 60; r++) | |||
{ | |||
for(unsigned int c = 40; c < 60; c++) | |||
{ | |||
ImageType::IndexType pixelIndex; | |||
pixelIndex[0] = r; | |||
pixelIndex[1] = c; | |||
image->SetPixel(pixelIndex, 255); | |||
} | |||
} | |||
} | } | ||
</source> | </source> | ||
Line 130: | Line 92: | ||
cmake_minimum_required(VERSION 2.6) | cmake_minimum_required(VERSION 2.6) | ||
PROJECT( | PROJECT(TranslationTransform) | ||
include_directories(/home/doriad/ | include_directories(/home/doriad/ITKWikiExamples/ItkVtkGlue) | ||
FIND_PACKAGE(VTK REQUIRED) | FIND_PACKAGE(VTK REQUIRED) | ||
Line 140: | Line 102: | ||
INCLUDE(${ITK_USE_FILE}) | INCLUDE(${ITK_USE_FILE}) | ||
ADD_EXECUTABLE( | ADD_EXECUTABLE(TranslationTransform TranslationTransform.cxx /home/doriad/ITKWikiExamples/ItkVtkGlue/QuickView.cxx) | ||
TARGET_LINK_LIBRARIES( | TARGET_LINK_LIBRARIES(TranslationTransform | ||
vtkHybrid | |||
ITKBasicFilters ITKCommon ITKIO) | |||
</source> | </source> |
Revision as of 17:30, 27 January 2011
TranslationTransform.cxx
<source lang="cpp">
- include "itkImage.h"
- include "itkTranslationTransform.h"
- include "itkImageFileReader.h"
- include "itkNormalizeImageFilter.h"
- include "itkResampleImageFilter.h"
- include "itkImageFileWriter.h"
- include "QuickView.h"
typedef itk::Image<unsigned char, 2> ImageType;
void CreateImage(ImageType::Pointer image);
int main(int argc, char *argv[]) {
ImageType::Pointer image = ImageType::New(); CreateImage(image);
typedef itk::TranslationTransform<double,2> TranslationTransformType; TranslationTransformType::Pointer transform = TranslationTransformType::New(); TranslationTransformType::OutputVectorType translation; translation[0] = 10; translation[1] = 20; transform->Translate(translation);
typedef itk::ResampleImageFilter<ImageType, ImageType> ResampleImageFilterType; ResampleImageFilterType::Pointer resampleFilter = ResampleImageFilterType::New(); resampleFilter->SetTransform(transform.GetPointer()); resampleFilter->SetInput(image);
/* // These are the defaults double spacing[ 2 ]; spacing[0] = 1.0; spacing[1] = 1.0; resampleFilter->SetOutputSpacing( spacing );
double origin[ 2 ]; origin[0] = 0.0; origin[1] = 0.0; resampleFilter->SetOutputOrigin( origin ); */
// Without this, the program crashes ImageType::SizeType size = image->GetLargestPossibleRegion().GetSize(); resampleFilter->SetSize( size ); resampleFilter->Update();
QuickView viewer; viewer.AddImage(image.GetPointer()); viewer.AddImage(resampleFilter->GetOutput()); viewer.Visualize(); return EXIT_SUCCESS;
}
void CreateImage(ImageType::Pointer image) {
ImageType::IndexType start; start.Fill(0);
ImageType::SizeType size; size.Fill(100);
ImageType::RegionType region(start, size); image->SetRegions(region); image->Allocate(); image->FillBuffer(0);
// Make a square for(unsigned int r = 40; r < 60; r++) { for(unsigned int c = 40; c < 60; c++) { ImageType::IndexType pixelIndex; pixelIndex[0] = r; pixelIndex[1] = c;
image->SetPixel(pixelIndex, 255); } }
} </source>
CMakeLists.txt
<source lang="cmake"> cmake_minimum_required(VERSION 2.6)
PROJECT(TranslationTransform)
include_directories(/home/doriad/ITKWikiExamples/ItkVtkGlue)
FIND_PACKAGE(VTK REQUIRED) INCLUDE(${VTK_USE_FILE})
FIND_PACKAGE(ITK REQUIRED) INCLUDE(${ITK_USE_FILE})
ADD_EXECUTABLE(TranslationTransform TranslationTransform.cxx /home/doriad/ITKWikiExamples/ItkVtkGlue/QuickView.cxx) TARGET_LINK_LIBRARIES(TranslationTransform vtkHybrid ITKBasicFilters ITKCommon ITKIO)
</source>