00001 #ifndef __MomentMask_H__ 00002 #define __MomentMask_H__ 00003 00004 #include "Rasterizable.h" 00005 #include "Rectangle.h" 00006 00007 namespace EdgeDetection 00008 { 00009 // Represents a mask for calculating moments of discrete two-dimensional 00010 // functions defined on the unit circle. 00011 class MomentMask : public Rasterizable 00012 { 00013 private: int degreeX; 00014 private: int degreeY; 00015 00016 public: Rectangle GetRegion() { return Rectangle(-1, +1, -1, +1); } 00017 00018 public: MomentMask(int degreeX, int degreeY) 00019 { 00020 if (degreeX < 0) throw "The parameter 'degreeX' was out of range."; 00021 if (degreeY < 0) throw "The parameter 'degreeY' was out of range."; 00022 00023 this->degreeX = degreeX; 00024 this->degreeY = degreeY; 00025 } 00026 public: ~MomentMask() { } 00027 00028 public: double GetValue(Rectangle rectangle); 00029 public: bool CanCalculateIntegral(Rectangle rectangle); 00030 public: double CalculateIntegral(Rectangle rectangle); 00031 public: double EstimateIntegral(Rectangle rectangle); 00032 }; 00033 }; 00034 00035 #endif