void streakVertical( image img ) { int r, c, pixA, pixB, pixC, pixD, max, avg ; for ( r = 0; r<img.nrows-3; r++ ) for ( c = 0; c<img.ncols; c++ ) { pixA = getPixel( img, r, c ); pixB = getPixel( img, r+1, c ); pixC = getPixel( img, r+2, c ); pixD = getPixel( img, r+3, c ); avg = (pixA + pixB + pixC + pixD)/4; setPixel( img, r, c, (unsigned char)avg ); } }
Comments: Notice how the loops avoid going out of bounds.