17 #ifndef __itkGradientMagnitudeImageFilter_txx
18 #define __itkGradientMagnitudeImageFilter_txx
33 template <
typename TInputImage,
typename TOutputImage>
38 Superclass::PrintSelf(os,indent);
39 os << indent <<
"UseImageSpacing = " << m_UseImageSpacing << std::endl;
42 template <
typename TInputImage,
typename TOutputImage>
48 Superclass::GenerateInputRequestedRegion();
55 if ( !inputPtr || !outputPtr )
65 unsigned long radius = oper.
GetRadius()[0];
69 typename TInputImage::RegionType inputRequestedRegion;
70 inputRequestedRegion = inputPtr->GetRequestedRegion();
73 inputRequestedRegion.PadByRadius( radius );
76 if ( inputRequestedRegion.Crop(inputPtr->GetLargestPossibleRegion()) )
78 inputPtr->SetRequestedRegion( inputRequestedRegion );
87 inputPtr->SetRequestedRegion( inputRequestedRegion );
90 InvalidRequestedRegionError e(__FILE__, __LINE__);
92 e.
SetDescription(
"Requested region is (at least partially) outside the largest possible region.");
99 template<
typename TInputImage,
typename TOutputImage >
116 typename OutputImageType::Pointer output = this->GetOutput();
117 typename InputImageType::ConstPointer input = this->GetInput();
122 for (i = 0; i< ImageDimension; i++)
128 if (m_UseImageSpacing ==
true)
130 if ( this->GetInput()->GetSpacing()[i] == 0.0 )
132 itkExceptionMacro(<<
"Image spacing cannot be zero.");
143 for (i = 0; i < ImageDimension; ++i)
150 FaceListType faceList;
152 faceList = bC(input, outputRegionForThread, radius);
155 FaceListType::iterator fit;
156 fit = faceList.begin();
159 ProgressReporter progress(
this, threadId, outputRegionForThread.GetNumberOfPixels());
164 std::slice x_slice[ImageDimension];
165 const unsigned long center = nit.
Size() / 2;
166 for (i = 0; i < ImageDimension; ++i)
168 x_slice[i] = std::slice( center - nit.GetStride(i) * radius[i],
169 op[i].
GetSize()[0], nit.GetStride(i));
175 for (fit=faceList.begin(); fit != faceList.end(); ++fit)
185 RealType a = NumericTraits<RealType>::Zero;
186 for (i = 0; i < ImageDimension; ++i)
188 const RealType g = SIP(x_slice[i], bit, op[i]);
194 progress.CompletedPixel();