1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
/*=========================================================================
Program: Insight Segmentation & Registration Toolkit
Module: itkOrientedImageProfileTest3.cxx
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) Insight Software Consortium. All rights reserved.
See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#if defined(_MSC_VER)
#pragma warning ( disable : 4786 )
#endif
#include "itkVectorImage.h"
#include "itkImageRegionIteratorWithIndex.h"
#include "itkTimeProbesCollectorBase.h"
int itkOrientedImageProfileTest3( int , char *[] )
{
const unsigned int Dimension = 3;
typedef unsigned char PixelType;
//
// Yes, on purpose we are using here the itk::VectorImage, so we can compare it
// against the itk::OrientedImage used in itkOrientedImageProfileTest1.
//
typedef itk::VectorImage<PixelType, Dimension> ImageType;
typedef ImageType::IndexType IndexType;
typedef ImageType::SizeType SizeType;
typedef ImageType::PointType PointType;
typedef ImageType::RegionType RegionType;
typedef ImageType::SpacingType SpacingType;
IndexType start;
SizeType size;
start.Fill( 0 );
size.Fill( 300 );
RegionType region;
region.SetIndex( start );
region.SetSize( size );
ImageType::Pointer image = ImageType::New();
image->SetVectorLength( 2 );
image->SetRegions( region );
image->Allocate();
SpacingType spacing;
spacing.Fill( 1.5 );
image->SetSpacing( spacing );
PointType origin;
origin.Fill( 1.3 );
image->SetOrigin( origin );
typedef itk::ImageRegionConstIteratorWithIndex< ImageType > IteratorType;
IteratorType itr( image, region );
itr.GoToBegin();
itk::TimeProbesCollectorBase chronometer;
chronometer.Start("Transform");
IndexType index;
PointType point;
while( !itr.IsAtEnd() )
{
image->TransformIndexToPhysicalPoint( itr.GetIndex(), point );
image->TransformPhysicalPointToIndex( point, index );
++itr;
}
chronometer.Stop("Transform");
chronometer.Report( std::cout );
return EXIT_SUCCESS;
}
|