21 #ifndef __otbFunctionWithNeighborhoodToImageFilter_txx
22 #define __otbFunctionWithNeighborhoodToImageFilter_txx
33 template<
class TInputImage,
class TOutputImage,
class TFunction>
38 this->SetNumberOfRequiredInputs(1);
41 m_FunctionList.clear();
42 m_Function = FunctionType::New();
46 template <
class TInputImage,
class TOutputImage,
class TFunction>
51 Superclass::BeforeThreadedGenerateData();
54 if (inputPtr.IsNull())
56 itkExceptionMacro(<<
"At least one input is missing."
57 <<
" Input is missing :" << inputPtr.GetPointer(); )
60 m_Function->SetInputImage(inputPtr);
61 for (
unsigned int i = 0; i < static_cast<unsigned int>(this->GetNumberOfThreads()); ++i)
64 m_FunctionList.push_back(func);
68 template <
class TInputImage,
class TOutputImage,
class TFunction>
74 Superclass::GenerateInputRequestedRegion();
80 if (!inputPtr || !outputPtr)
90 maxRad[0] = m_Radius[0] + vcl_abs(m_Offset[0]);
91 maxRad[1] = m_Radius[0] + vcl_abs(m_Offset[1]);
92 inputRequestedRegion.PadByRadius(maxRad);
95 if (inputRequestedRegion.Crop(inputPtr->GetLargestPossibleRegion()))
97 inputPtr->SetRequestedRegion(inputRequestedRegion);
106 inputPtr->SetRequestedRegion(inputRequestedRegion);
110 std::ostringstream msg;
111 msg << this->GetNameOfClass()
112 <<
"::GenerateInputRequestedRegion()";
114 e.
SetDescription(
"Requested region is (at least partially) outside the largest possible region.");
123 template<
class TInputImage,
class TOutputImage,
class TFunction>
144 outputIt.
Set(static_cast<OutputImagePixelType>(m_FunctionList[threadId]->EvaluateAtIndex(inputIt.
GetIndex())));
148 progress.CompletedPixel();