void FieldmapGeneratorFilter< OutputImageType >::ThreadedGenerateData( const OutputImageRegionType &outputRegionForThread, ThreadIdType threadId) { typename OutputImageType::Pointer outImage = static_cast< OutputImageType * >(this->ProcessObject::GetOutput(0)); ImageRegionIterator< OutputImageType > oit(outImage, outputRegionForThread); while( !oit.IsAtEnd() ) { double value = 0; IndexType idx = oit.GetIndex(); for (int i=0; i<3; i++) value += idx[i]*m_Gradient[i] + m_Offset[i]; for (int i=0; i<m_WorldPositions.size(); i++) { mitk::Point3D c = m_WorldPositions.at(i); itk::Point<double, 3> vertex; outImage->TransformIndexToPhysicalPoint(idx, vertex); double dist = c.EuclideanDistanceTo(vertex); value += m_Heights.at(i)*exp(-dist*dist/(2*m_Variances.at(i))); } oit.Set(value); ++oit; } MITK_INFO << "Thread " << threadId << "finished processing"; }