For the grayscale image, I take each pixel and get the average of blue, green and red values. I then assign that value to blue, green, red values of the new image.
For the flipped image, I process the image row by row and assign the pixel value to the opposite position in the row.
For the blurred image, I assign to each pixel the average the values of itself and 8 adjacent pixels (might need to zoom in to see the effects).