// ------------------------------------------------------------------------- // @author Leonardo Florez-Valencia (florez-l@javeriana.edu.co) // ------------------------------------------------------------------------- #ifndef __CPEXTENSIONS__ALGORITHMS__RGBIMAGETOOTHERCHANNELSFILTER__H__ #define __CPEXTENSIONS__ALGORITHMS__RGBIMAGETOOTHERCHANNELSFILTER__H__ #include namespace cpExtensions { namespace Algorithms { /** */ template< class I, class O, class C > class RGBImageToOtherChannelsFilter : public itk::ImageToImageFilter< I, O > { public: typedef RGBImageToOtherChannelsFilter Self; typedef itk::ImageToImageFilter< I, O > Superclass; typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; typedef I TInputImage; typedef O TOutputImage; typedef C TConverter; typedef typename I::PixelType TInputPixel; typedef typename O::PixelType TOutputPixel; public: itkNewMacro( Self ); itkTypeMacro( RGBImageToOtherChannelsFilter, itkImageToImageFilter ); public: O* GetChannel1( ); O* GetChannel2( ); O* GetChannel3( ); const O* GetChannel1( ) const; const O* GetChannel2( ) const; const O* GetChannel3( ) const; void GraftChannel1( O* c1 ); void GraftChannel2( O* c2 ); void GraftChannel3( O* c3 ); protected: RGBImageToOtherChannelsFilter( ); virtual ~RGBImageToOtherChannelsFilter( ); virtual void BeforeThreadedGenerateData( ); virtual void AfterThreadedGenerateData( ); virtual void ThreadedGenerateData( const typename Superclass::OutputImageRegionType& region, itk::ThreadIdType threadId ); private: // Purposely not implemented RGBImageToOtherChannelsFilter( const Self& other ); void operator=( const Self& other ); private: TConverter Converter; }; } // ecapseman } // ecapseman #include #endif // __CPEXTENSIONS__ALGORITHMS__RGBIMAGETOOTHERCHANNELSFILTER__H__ // eof - $RCSfile$