在图像OpenCV和C ++中添加高斯噪声然后去噪?

时间:2017-05-12 07:23:12

标签: c++ image opencv gaussian

我正在尝试为图像添加噪音然后去噪,看看我的物体检测算法的差异。所以我用C ++开发了OpenCV代码来检测图像中的一些对象。我想测试代码的健壮性,所以试图添加一些噪音。以这种方式想要检查在向图像添加噪声时对象检测率如何改变。所以,首先添加一些像这样的随机高斯噪声

cv::Mat noise(src.size(),src.type());
 float m = (10,12,34);
 float sigma = (1,5,50);
 cv::randn(noise, m, sigma); //mean and variance
 src += noise;

我得到了这张图片:

原文:enter image description here 吵闹的enter image description here

那么有没有更好的噪音模型?那么如何去噪呢。有没有DeNoising算法?

1 个答案:

答案 0 :(得分:1)

OpenCV附带Photo包,您可以在其中找到非局部均值去噪算法的实现。文档可以在这里找到: http://docs.opencv.org/3.0-beta/modules/photo/doc/denoising.html

据我所知,它是OpenCV 2.4和OpenCV 3.x中唯一合适的去噪算法

我不知道OpenCV中的任何其他噪音模型比randn。但是,添加自定义函数可能不是问题。 python中有一些很好的例子(你应该没有问题将它重写为C ++,因为OpenCV API大致相同)How to add noise (Gaussian/salt and pepper etc) to image in Python with OpenCV

还有一件事我不明白:如果你能产生噪音,如果你已经有原始图像没有噪音,你为什么要使用某种算法对图像进行去噪?