#include"Image.h" /**************** Image Class Functions ***************/ Image:: Image( ) { MEMFLAG = 0 ; } void Image :: assignInputFile (char * filename ) { if (!filename) { cout<< "\nGive Input Image file : " ; cin >> InFileName ; } else strcpy ( InFileName , filename ) ; } void Image :: assignOutputFile (char * filename ) { if (!filename) { cout <<"\nGive Output Image file : "; cin >> OutFileName; } else strcpy ( OutFileName , filename ) ; } void Image :: LoadImage (char * filename) { if(!MEMFLAG) { cerr <<"\nImage :: Memory Allocation Not Done.\n"; exit(1); } assignInputFile(filename); ifstream inImage; inImage.open( InFileName ) ; if (!inImage){ perror (InFileName) ; exit ( 1 ); } Img buffer = new unsigned char * [XSize]; for (int i=0 ; i> height ; cout << "\nGive width of the image : " ; cin >> width ; memAlloc(height,width); } int Image :: Height () { return XSize ; } int Image :: Width () { return YSize ; } void Image :: memAlloc(int xsize, int ysize) { if(this->MEMFLAG) { for ( int i = 0; i< xsize; i++ ) delete(image[i]); delete(image); } XSize = xsize; YSize = ysize; image = new double * [ xsize ]; for ( int i = 0; i < xsize; i++) image[i]=new double[ ysize ]; MEMFLAG = 1; } Image & Image :: operator = (Image & pic) { memAlloc (pic.XSize, pic.YSize); for ( int i = 0; i < XSize; i++) for ( int j = 0; j < YSize; j++) image[i][j]=pic.image[i][j]; return *this ; } Imgstr Image :: GetImage() { Imgstr ret ; int i; ret.xs = XSize ; ret.ys = YSize ; ret.ima = new double * [ret.xs]; for ( i = 0; i < ret.xs; i++) ret.ima[i]=new double [ret.ys]; for ( i = 0; i < ret.xs; i++) for ( int j = 0; j < ret.ys; j++) ret.ima[i][j]=image[i][j]; return ret; } Image Image :: ScaleRange() { double min ; double max ; Image ret ; FindMinMax(min,max); if (max == min ) max = min+1 ; if ((max > MAXGRAY)||(minbig) big = image[i][j]; } min = small; max = big ; } Imgstr Image :: Threshold (double x) { Imgstr gir ; gir.xs=XSize ; gir.ys=YSize ; gir.ima=new double * [gir.xs]; for (int i = 0; i < XSize; i++) { gir.ima[i]=new double [gir.ys]; for (int j = 0; j < YSize; j++) { if (image[i][j] > x) gir.ima[i][j]=255 ; else gir.ima[i][j] = 0 ; } } return gir ; } double Image :: GetPixel(int x, int y) { if(!MEMFLAG) { cerr <<"\nImage :: Memory Allocation Not Done.\n"; exit(1); } return (image[x][y]); } void Image :: PutPixel(int x, int y, double val) { if(!MEMFLAG) { cerr <<"\nImage :: Memory Allocation Not Done.\n"; exit(1); } image[x][y]=val ; } void Image :: Initialize(double initval) { if(!MEMFLAG) { cerr <<"\nImage :: Memory Allocation Not Done.\n"; exit(1); } for(int i=0;iimg2.image[i][j])? img1.image[i][j]:img2.image[i][j]; return(temp); } Image operator & (Image & img1, Image & img2) // Min Operator. { if((img1.XSize != img2.XSize) || (img1.YSize != img2.YSize)){ cerr << "\nUnequal images cannot be Mined..\n" ; exit(1); } Image temp ; int i,j; temp.SetSize(img1.XSize,img1.YSize); for(i=0;i