@@ -187,6 +187,16 @@ GradientMagnitudeRecursiveGaussianImageFilter<TInputImage, TOutputImage>::Genera
187
187
188
188
typename TOutputImage::Pointer outputImage (this ->GetOutput ());
189
189
190
+ // Reset progress of internal filters to zero,
191
+ // otherwise progress starts from non-zero value the second time the filter is invoked.
192
+ m_DerivativeFilter->UpdateProgress (0.0 );
193
+ for (unsigned int k = 0 ; k < ImageDimension - 1 ; ++k)
194
+ {
195
+ m_SmoothingFilters[k]->UpdateProgress (0.0 );
196
+ }
197
+ m_SqrSpacingFilter->UpdateProgress (0.0 );
198
+ m_SqrtFilter->UpdateProgress (0.0 );
199
+
190
200
// Create a process accumulator for tracking the progress of this minipipeline
191
201
auto progress = ProgressAccumulator::New ();
192
202
progress->SetMiniPipelineFilter (this );
@@ -208,13 +218,14 @@ GradientMagnitudeRecursiveGaussianImageFilter<TInputImage, TOutputImage>::Genera
208
218
209
219
m_DerivativeFilter->SetInput (inputImage);
210
220
211
- const unsigned int numberOfFilterRuns = ImageDimension * ImageDimension;
221
+ const unsigned int numberOfFilterRuns = 1 + ImageDimension * ( ImageDimension + 1 ) ;
212
222
progress->RegisterInternalFilter (m_DerivativeFilter, 1 .0f / numberOfFilterRuns);
213
-
214
223
for (unsigned int k = 0 ; k < ImageDimension - 1 ; ++k)
215
224
{
216
225
progress->RegisterInternalFilter (m_SmoothingFilters[k], 1 .0f / numberOfFilterRuns);
217
226
}
227
+ progress->RegisterInternalFilter (m_SqrSpacingFilter, 1 .0f / numberOfFilterRuns);
228
+ progress->RegisterInternalFilter (m_SqrtFilter, 1 .0f / numberOfFilterRuns);
218
229
219
230
for (unsigned int dim = 0 ; dim < ImageDimension; ++dim)
220
231
{
0 commit comments