Zero mean noise in images According to the literature, zero mean noises are those whose expected value is zero. But what does this mean in the context of images. Let us consider grayscale for now. The intensity values ranging from 0 to 255. The noise will also have values between 0 and 255. How can then the mean be zero?
To get a nice visualisation lets consider a colour image with zero mean noise &amp; standard deviation 20! Which means the values of each RGB component can randomly vary from +20 to -20. So pixels will be added with this noise. 

Here is the code for generating noise to an Image using opencv c++

Mat mSource_Bgr,mNoise_Bgr;
mSource_Bgr= imread(FileName_S,1);

// We need to work with signed images (as noise can be
// negative as well as positive). We use 16 bit signed
// images as otherwise we would lose precision.
Mat mGaussNoise_Bgr(mSource_Bgr.size(), CV_16SC3);

double StdDev=10;
randn(mGaussNoise_Bgr, Scalar::all(0), Scalar::all(StdDev));
Mat mTemp;
mSource_Bgr.convertTo(mTemp,CV_16SC3);
addWeighted(mTemp, 1.0, mGaussNoise_Bgr, 1.0, 0.0, mTemp);
mTemp.convertTo(mNoise_Bgr,mSource_Bgr.type());

mGaussNoise_Bgr.convertTo(mGaussNoise_Bgr,CV_8UC3);
imshow("Noise Image",mGaussNoise_Bgr);
imshow("Original Image",mSource_Bgr);
imshow("Original Image + Noise",mNoise_Bgr);


Here is the Original Image


Noise Image with Mean : 0 &amp; Std Deviation : 20


Original Image + Noise


Same Image with Noise Mean:0 Std Deviation:10