#ifndef IMAGEANALYSIS_IMAGE1DSMOOTHER_H #define IMAGEANALYSIS_IMAGE1DSMOOTHER_H #include <imageanalysis/ImageAnalysis/ImageTask.h> #include <imageanalysis/ImageAnalysis/ImageDecimatorData.h> #include <casacore/casa/namespace.h> namespace casa { template <class T> class Image1DSmoother : public ImageTask<T> { // <summary> // Top level interface for 1-D smoothing of images. // </summary> // <reviewed reviewer="" date="" tests="" demos=""> // </reviewed> // <prerequisite> // </prerequisite> // <etymology> // Smooths an image in one dimension. // </etymology> // <synopsis> // Top level interface for removing image planes. // </synopsis> public: Image1DSmoother() = delete; // destructor virtual ~Image1DSmoother() {} SPIIT smooth() const; virtual casacore::String getClass() const { const static casacore::String s = "Image1DSmoother"; return s; } // Keep only every nth plane void setDecimate(casacore::Bool b) {_decimate = b; } // Set the pixel axis number along which the smoothing will occur void setAxis(casacore::uInt n); // Set the decimation function. inline void setDecimationFunction(ImageDecimatorData::Function f) { _decimationFunction = f; } protected: Image1DSmoother( const SPCIIT image, const casacore::Record *const region, const casacore::String& maskInp, const casacore::String& outname, casacore::Bool overwrite ); virtual SPIIT _smooth(const casacore::ImageInterface<T>& image) const = 0; inline CasacRegionManager::StokesControl _getStokesControl() const { return CasacRegionManager::USE_ALL_STOKES; } inline std::vector<casacore::Coordinate::Type> _getNecessaryCoordinates() const { return std::vector<casacore::Coordinate::Type>(); } inline casacore::Bool _supportsMultipleBeams() const {return false;} inline casacore::Bool _getDecimate() const { return _decimate; } inline ImageDecimatorData::Function _getDecimationFunction() const { return _decimationFunction; } inline casacore::uInt _getAxis() const { return _axis; } inline void _setNMinPixels(casacore::uInt n) { _nMinPixels = n; } private: casacore::uInt _axis, _nMinPixels; casacore::Bool _decimate; ImageDecimatorData::Function _decimationFunction; }; } #ifndef AIPS_NO_TEMPLATE_SRC #include <imageanalysis/ImageAnalysis/Image1DSmoother.tcc> #endif #endif