#include
#include
void main()
{
int row , col ;
int ci = 0.1; //contrast enhance intensity
double sum,average ;
char name[] = "test.jpg";
IplImage * imgcolor = cvLoadImage(name);
IplImage * img = cvCreateImage(cvSize(500,500),IPL_DEPTH_8U,1);
cvCvtColor(imgcolor,img,CV_RGB2GRAY);
IplImage *img_out8 = cvCreateImage(cvSize(500,500),IPL_DEPTH_8U,1);
IplImage *img_out64 = cvCreateImage(cvSize(500,500),IPL_DEPTH_64F,1);
uchar *ptr1,*ptr2,*ptr3;
double *out;
for (row=0;rowheight;row++)
{
out = ( double*)(img_out64->imageData+row*img_out64->widthStep);
for (col=0;colwidth;col++)
out[col] = 0;
}
for (row=1;rowheight-1;row++)
{
ptr1 = ( uchar*)(img->imageData+row*img->widthStep);
ptr2 = ( uchar*)(img->imageData+(row-1)*img->widthStep);
ptr3 = ( uchar*)(img->imageData+(row+1)*img->widthStep);
out = ( double*)(img_out64->imageData+row*img_out64->widthStep);
for (col=1;colwidth-1;col++)
{
sum = ptr2[col-1]+ptr2[col]+ptr2[col+1]+ptr3[col-1]+ptr3[col]+ptr3[col+1]+ptr1[col-1]+ptr1[col+1];
average = sum/8;
out[col] = ci*ptr1[col] +(1-ci)*average;
}
}
cvConvertScale(img_out64,img_out8 );
cvNamedWindow("img_in",CV_WINDOW_AUTOSIZE);
cvShowImage("img_in",img);
cvNamedWindow("img_out",CV_WINDOW_AUTOSIZE);
cvShowImage("img_out",img_out8);
cvWaitKey(0);
}