17 #ifndef __itkUnaryFunctorImageFilter_txx
18 #define __itkUnaryFunctorImageFilter_txx
31 template <
class TInputImage,
class TOutputImage,
class TFunction >
35 this->SetNumberOfRequiredInputs( 1 );
48 template <
class TInputImage,
class TOutputImage,
class TFunction>
60 if ( !outputPtr || !inputPtr)
67 outputPtr->CopyInformation(inputPtr);
72 this->CallCopyInputRegionToOutputRegion(outputLargestPossibleRegion,
73 inputPtr->GetLargestPossibleRegion());
74 outputPtr->SetLargestPossibleRegion( outputLargestPossibleRegion );
88 const typename InputImageType::SpacingType&
90 const typename InputImageType::PointType&
91 inputOrigin = inputPtr->GetOrigin();
92 const typename InputImageType::DirectionType&
93 inputDirection = inputPtr->GetDirection();
95 typename OutputImageType::SpacingType outputSpacing;
96 typename OutputImageType::PointType outputOrigin;
97 typename OutputImageType::DirectionType outputDirection;
101 for (i=0; i < Superclass::InputImageDimension; ++i)
103 outputSpacing[i] = inputSpacing[i];
104 outputOrigin[i] = inputOrigin[i];
105 for (j=0; j < Superclass::OutputImageDimension; j++)
107 if (j < Superclass::InputImageDimension)
109 outputDirection[j][i] = inputDirection[j][i];
113 outputDirection[j][i] = 0.0;
117 for (; i < Superclass::OutputImageDimension; ++i)
119 outputSpacing[i] = 1.0;
120 outputOrigin[i] = 0.0;
121 for (j=0; j < Superclass::OutputImageDimension; j++)
125 outputDirection[j][i] = 1.0;
129 outputDirection[j][i] = 0.0;
135 outputPtr->SetSpacing( outputSpacing );
136 outputPtr->SetOrigin( outputOrigin );
137 outputPtr->SetDirection( outputDirection );
138 outputPtr->SetNumberOfComponentsPerPixel(
139 inputPtr->GetNumberOfComponentsPerPixel());
144 itkExceptionMacro(<<
"itk::UnaryFunctorImageFilter::GenerateOutputInformation "
145 <<
"cannot cast input to "
154 template <
class TInputImage,
class TOutputImage,
class TFunction >
167 this->CallCopyOutputRegionToInputRegion(inputRegionForThread, outputRegionForThread);
173 ProgressReporter progress(
this, threadId, outputRegionForThread.GetNumberOfPixels());
180 outputIt.
Set( m_Functor( inputIt.
Get() ) );
183 progress.CompletedPixel();