如何为彩色图像添加噪点 - Opencv

时间:2015-08-14 07:59:53

标签: opencv image-processing noise

我正在尝试为图像添加噪音然后去噪它来测试我的DeNoising算法!所以对于基准我是指这个Online Test samples。我正在尝试复制Noise模型。

参考这个帖子12我正在为这样的图片添加噪音!

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

double m_NoiseStdDev=10;

Mat mNoise_Bgr = mSource_Bgr.clone();
Mat mGaussian_noise = Mat(mSource_Bgr.size(),CV_8UC3);

randn(mGaussian_noise,0,m_NoiseStdDev);
mNoise_Bgr += mGaussian_noise;

normalize(mNoise_Bgr,mNoise_Bgr,0, 255, CV_MINMAX, CV_8UC3);

imshow("Output Window",mNoise_Bgr);
//imshow("Gaussian Noise",mGaussian_noise);

我的输入图像 enter image description here

带噪声的输出图像 enter image description here

问题:

为图像添加 会改变图像的整体亮度,从而改变我的最终结果PSNR!

我希望结果尽可能接近to this oneenter image description here

到目前为止我尝试了什么!

我试图仅在颜色通道中添加噪点。

  1. 将输入图像转换为YUV颜色空间
  2. 仅在UV颜色通道中添加噪点&保持Y频道不变。

    结果非常糟糕&图像的整体颜色正在改变!如果需要,将添加代码!

  3. 所以对此有任何建议非常感谢!可以给我一些为图像添加噪声的公式!

3 个答案:

答案 0 :(得分:2)

看起来您的噪声矩阵无法获得负值,因为它具有unsigned char元素类型。尝试使用实值矩阵进行操作,它应该会有所帮助。

答案 1 :(得分:0)

主要有两种方法可以在彩色图像中添加说出awgn噪声(平均值= 0,标准偏差= 30)。

首先:您可以分别向红色,绿色和蓝色通道(或任何其他颜色模型-HSI,YUV,Lab)中添加平均值= 0,标准偏差= 30的awgn噪声;然后结合噪声通道以形成彩色的噪声图像。

第二:使用内置功能直接向彩色图像添加噪点。例如。 Matlab中的imnoise()。

我尝试了这两种方法(无声和独立),得到了相同的结果。

答案 2 :(得分:0)

您提到“我试图仅在颜色通道中添加噪点。 将输入图像转换为YUV颜色空间 仅在“ UV颜色”通道中添加“噪波”,并保持“ Y”通道不变。”

如果您使用的是YUV颜色模型,建议您做相反的事情。保持U和V通道不变,并且仅向Y通道添加噪声。