for(int y=1; yheight-2; y++){ for(int x=1; xwidth-2; x++){ linear_interpolation(bayerImg, debayerImg,x,y); } } void linear_interpolation (IplImage* img, IplImage* dest, int x, int y) { CvScalar pixel, pixel_before, pixel_after, pixel_up, pixel_down; pixel = cvGetAt(img, y,x); pixel_before = cvGetAt(img, y,x-1); pixel_after = cvGetAt(img, y,x+1); pixel_up = cvGetAt(img, y+1,x); pixel_down = cvGetAt(img, y-1,x); for (int i = 0; i<=2;i++) { pixel.val[i] = 0.5*(pixel_before.val[i] + pixel_after.val[i] + pixel_up.val[i] + pixel_down.val[i]); } cvSetAt(dest, pixel, y, x); }