Orfeo Toolbox  3.16
itkParametricSpaceToImageSpaceMeshFilter.txx
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Insight Segmentation & Registration Toolkit
4  Module: $RCSfile: itkParametricSpaceToImageSpaceMeshFilter.txx,v $
5  Language: C++
6  Date: $Date: 2009-09-17 11:14:56 $
7  Version: $Revision: 1.12 $
8 
9  Copyright (c) Insight Software Consortium. All rights reserved.
10  See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm for details.
11 
12  This software is distributed WITHOUT ANY WARRANTY; without even
13  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14  PURPOSE. See the above copyright notices for more information.
15 
16 =========================================================================*/
17 #ifndef __itkParametricSpaceToImageSpaceMeshFilter_txx
18 #define __itkParametricSpaceToImageSpaceMeshFilter_txx
19 
21 #include "itkExceptionObject.h"
22 #include "itkProgressReporter.h"
23 
24 namespace itk
25 {
26 
30 template <class TInputMesh, class TOutputMesh>
33 {
34  this->SetNumberOfRequiredInputs( 1 );
35 }
36 
37 
41 template <class TInputMesh, class TOutputMesh>
42 void
44 ::PrintSelf(std::ostream& os, Indent indent) const
45 {
46  Superclass::PrintSelf(os,indent);
47 }
48 
49 
53 template <class TInputMesh, class TOutputMesh>
54 void
57 {
58 
59  typedef typename TInputMesh::PointsContainer InputPointsContainer;
60  typedef typename TOutputMesh::PointsContainer OutputPointsContainer;
61 
62  typedef typename TInputMesh::PointsContainerPointer InputPointsContainerPointer;
63  typedef typename TOutputMesh::PointsContainerPointer OutputPointsContainerPointer;
64 
65  typedef typename TInputMesh::PointDataContainer InputPointDataContainer;
66  typedef typename TOutputMesh::PointDataContainer OutputPointDataContainer;
67 
68  typedef typename TInputMesh::PointDataContainerPointer InputPointDataContainerPointer;
69  typedef typename TOutputMesh::PointDataContainerPointer OutputPointDataContainerPointer;
70 
71  const InputMeshType * inputMesh = this->GetInput();
72  OutputMeshPointer outputMesh = this->GetOutput();
73 
74  if( !inputMesh )
75  {
76  itkExceptionMacro( <<"Missing Input Mesh" );
77  }
78 
79  if( !outputMesh )
80  {
81  itkExceptionMacro( <<"Missing Output Mesh" );
82  }
83 
84  outputMesh->SetBufferedRegion( outputMesh->GetRequestedRegion() );
85 
86  const InputPointsContainer * inPoints = inputMesh->GetPoints();
87  OutputPointsContainerPointer outPoints = OutputPointsContainer::New();
88 
89  outPoints->Reserve( inputMesh->GetNumberOfPoints() );
90 
91  const InputPointDataContainer * inData = inputMesh->GetPointData();
92  OutputPointDataContainerPointer outData = OutputPointDataContainer::New();
93 
94  outData->Reserve( inputMesh->GetNumberOfPoints() );
95 
96  outputMesh->SetPoints( outPoints.GetPointer() );
97  outputMesh->SetPointData( outData.GetPointer() );
98 
99 
100  if( !inData )
101  {
102  return;
103  }
104 
105  if( !inPoints )
106  {
107  return;
108  }
109 
110  typename InputPointsContainer::ConstIterator inputPoint = inPoints->Begin();
111  typename InputPointDataContainer::ConstIterator inputData = inData->Begin();
112 
113  typename OutputPointsContainer::Iterator outputPoint = outPoints->Begin();
114  typename OutputPointDataContainer::Iterator outputData = outData->Begin();
115 
116  // support progress methods/callbacks
117  ProgressReporter progress(this, 0, inPoints->Size());
118 
119  const unsigned long OutputDimension = TOutputMesh::PointDimension;
120 
121  typename TOutputMesh::PointType point;
122 
123  while( inputPoint != inPoints->End() )
124  {
125  for(unsigned int i=0; i<OutputDimension; i++)
126  {
127  // Conver Index coordinates to MeshSpace
128  point[i] = inputData.Value()[i];
129  }
130 
131  outputPoint.Value() = point;
132  outputData.Value() = inputPoint.Value();
133 
134  ++inputData;
135  ++inputPoint;
136  ++outputPoint;
137  ++outputData;
138  progress.CompletedPixel();
139  }
140 
141 }
142 
146 template <class TInputMesh, class TOutputMesh>
147 void
150 {
151  // No additional information needs to be copied
152 }
153 
154 
155 } // end namespace itk
156 
157 #endif

Generated at Sat Feb 2 2013 23:58:34 for Orfeo Toolbox with doxygen 1.8.1.1