#include #include #include #include #include using namespace Magick; class CImage { public: int maxX; int maxY; int cRes; int **intensity; int loadImage(char*); int saveImage(char*); void saveHistogram(char*); void negative(); void contrastStretch(double r1, double r2, double s1, double s2); void averaging(int mask); void median(int mask); void localHistEq(int mask); void histSpecification(char*); void highPassFilter(); void highBoost(int mask,float A, bool average); void globalHistEq(); void print(); void showHistogram(); void showImage(); void MEqualize(char* file); void MMedianFilter(char* file, int mask); CImage() { maxX = maxY = 0; intensity = NULL; cRes = 255; } CImage(int maxx, int maxy) { maxX = maxx; maxY = maxy; intensity = new int*[maxY]; for(int i=0;i=0)&&(j1>=0)&&(i1=0)&&(j1>=0)&&(i1 *((int*)b)); } void CImage::median(int mask) { int** newIntensity = new int*[maxY]; for(int i=0;i=0)&&(j1>=0)&&(i1=0)&&(j1>=0)&&(i1=0)&&(j2>=0)&&(i1=0)&&(j2>=0)&&(i1>option; switch(option) { case 1 : cout<<"\n\nEnter name of image file (JPEG file) : "; cin>>fname; i.loadImage(fname); cout<<"\n\nImage is loaded.\nSize is : "<>fname; i.saveImage(fname); cout<<"\n\nImage is saved.\n"; break; case 4 : i.showHistogram(); break; case 5 : cout<<"\n\nEnter name of image file (GIF file) : "; cin>>fname; i.saveHistogram(fname); cout<<"\n\nImage is saved.\n"; break; case 6 : i.negative(); cout<<"Negation is done"; break; case 7 : cout<<"Enter r1 : "; cin>> r1; cout<<"Enter r2 : "; cin>> r2; cout<<"Enter s1 : "; cin>> s1; cout<<"Enter s2 : "; cin>> s2; i.contrastStretch(r1,r2,s1,s2); cout<<"Contrast Steaching is done"; break; case 8 : gettimeofday(&tv1,&tz1); i.globalHistEq(); gettimeofday(&tv2,&tz2); timegap = (tv2.tv_sec - tv1.tv_sec) * 1000000 + tv2.tv_usec - tv1.tv_usec; cout<<"Time taken : "<>mask; gettimeofday(&tv1,&tz1); i.localHistEq(mask); gettimeofday(&tv2,&tz2); timegap = (tv2.tv_sec - tv1.tv_sec) * 1000000 + tv2.tv_usec - tv1.tv_usec; cout<<"Time taken : "<>fname; i.histSpecification(fname); break; case 11 : cout<<"\n\n Enter mask : "; cin>>mask; i.averaging(mask); cout<<"Averaging is done"; break; case 12 : cout<<"\n\n Enter mask : "; cin>>mask; gettimeofday(&tv1,&tz1); i.median(mask); gettimeofday(&tv2,&tz2); timegap = (tv2.tv_sec - tv1.tv_sec) * 1000000 + tv2.tv_usec - tv1.tv_usec; cout<<"Time taken : "<>mask; cout<<"Enter A : "; cin>>A; i.highBoost(mask,A); cout<<"Sharpening is done"; break; case 14 : cout<<"\n\nEnter name of image file (JPEG file) : "; cin>>fname; i.MEqualize(fname); cout<<"\n\nImage is Equalized\n"; break; case 15 : cout<<"\n\nEnter name of image file (JPEG file) : "; cin>>fname; cout<<"\n\n Enter mask : "; cin>>mask; i.MMedianFilter(fname,mask); cout<<"\n\nImage is Smoothened\n"; break; case 0 : cout<<"\n\n\nProgram made by : \n Ashish Gupta (98130) & \n Ashish Gupta (98131) \n\n\n"; break; default: cout<<"\n\nWrong Option."; } } }