//*************************************************************************** #ifndef IMAGE_H #define IMAGE_H //*************************************************************************** class GrayImage { private: char magicNumber[2]; int allocateFlag; int numBits; int mincount; int maxcount; int MaxHist[10]; int MinHist[10]; void allocateMem( ); void deAllocateMem( ); public: GrayImage( ); // Constructor GrayImage( int w, int h, int numLev ); // Constructor ~GrayImage( ); // Destructor void Init( ); void Init (int w, int h, int numLev ); int height; // Height of image int width; // Width of image int numLevels; int numpixels; // Total number of pixels (height x width) int numMaxHist; int numMinHist; int numComponents; // Number of connected components unsigned char **p; // Gray level value double **Phi; // Invariant moments int *hist; // Histogram data void allocatePhi (int num); int ReadFromFile (char *FileName); int WriteToFile (char *FileName); int Threshold (unsigned char T); int Threshold (unsigned char T1, unsigned char T2); int ThresholdBinary (unsigned char T); int ThresholdBinary (unsigned char T1, unsigned char T2); int reverseThreshold (unsigned char T); int reverseThreshold (unsigned char T1, unsigned char T2); int Histogram ( ); int smoothenHistogram ( ); int printHistogram (char *FileName); int calcHistogramPeaks ( ); int printHistogramPeaks (char *FileName); int getHistMinima ( ); int getHistMinima ( int i ); int getHistMaxima ( ); int getHistMaxima ( int i ); void setValue (unsigned char T); GrayImage &operator= (const GrayImage &); GrayImage &operator+ (GrayImage &I1); GrayImage &operator- (GrayImage &I1); int Perimeter (int F); double Elongation (int P); int LabelComponents ( ); int FindNeighbors (int i, int j); int Area (int P); void ConvertToBinary ( ); void ReverseBinary ( ); int WriteLabelsToFile (char *FileName); double Moment (int x, int y, int P); double CentralizedMoment (int x, int y, int P); double NormalizedCentralMoment (int x, int y, int P); void InvariantMoments (int P); double getInvariantMoment (int P, int i); void MinBoundRectangle (int P); // Image Filters void DilationNxN_Binary (int N, int num); void ErosionNxN_Binary (int N, int num); void OpeningNxN_Binary (int N, int num); void ClosingNxN_Binary (int N, int num); void OpeningNxN_Binary (int N); void ClosingNxN_Binary (int N); void DilationNxN_Binary (int N); void ErosionNxN_Binary (int N); void ErosionNxN (int N); void DilationNxN (int N); void OpeningNxN (int N); void ClosingNxN (int N); void Skeletonization ( ); void MeanFilterNxN (int N); void MedianFilterNxN (int N); void GaussianFilterNxN (int N); void kNearestNeighboringFilterNxN (int N, int k); void kNearestNeighboringFilterNxN (int N); // Image Filters void addSaltandPepperNoise (double percent); void addGaussianNoise (double mean, double variance); }; //*************************************************************************** double RMSerror(GrayImage *I1, GrayImage *I2); //*************************************************************************** #endif // IMAGE_H //***************************************************************************