// ------------------------------------------------------------------------- // @author Leonardo Florez-Valencia (florez-l@javeriana.edu.co) // ------------------------------------------------------------------------- #ifndef __CPEXTENSIONS__ALGORITHMS__PARALLELIMAGEMEAN__H__ #define __CPEXTENSIONS__ALGORITHMS__PARALLELIMAGEMEAN__H__ #include #include #include #include namespace cpExtensions { namespace Algorithms { /** */ template< class I > class ParallelImageMean : public itk::DomainThreader< itk::ThreadedImageRegionPartitioner< I::ImageDimension >, I > { public: // Standard ITK typedefs. typedef itk::DomainThreader< itk::ThreadedImageRegionPartitioner< I::ImageDimension >, I > Superclass; typedef ParallelImageMean Self; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; typedef typename Superclass::DomainType DomainType; typedef itk::Array< double > TMean; protected: typedef itk::NumericTraits< typename I::PixelType > _TPixelTraits; public: itkNewMacro( Self ); itkTypeMacro( ParallelImageMean, itkDomainThreader ); itkGetConstMacro( Mean, TMean ); protected: ParallelImageMean( ); virtual ~ParallelImageMean( ); private: virtual void BeforeThreadedExecution( ); virtual void ThreadedExecution( const DomainType& region, const itk::ThreadIdType id ); virtual void AfterThreadedExecution( ); protected: itk::Array< double > m_Mean; unsigned long m_N; }; } // ecapseman } // ecapseman #ifndef ITK_MANUAL_INSTANTIATION #include #endif // ITK_MANUAL_INSTANTIATION #endif // __CPEXTENSIONS__ALGORITHMS__PARALLELIMAGEMEAN__H__ // eof - $RCSfile$