我正在尝试向图像添加噪声,然后进行降噪以查看我的对象检测算法的差异。所以我用 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;
我得到了这些图片:
那么有没有更好的噪声模型呢?然后如何对其进行降噪。有没有去噪算法?
最佳答案
OpenCV 带有 Photo 包,您可以在其中找到非局部均值去噪算法的实现。文档可以在这里找到: http://docs.opencv.org/3.0-beta/modules/photo/doc/denoising.html
据我所知,它是唯一适用于 OpenCV 2.4 和 OpenCV 3.x 的去噪算法
除了 randn,我不知道 OpenCV 中还有其他噪声模型。但是,添加执行此操作的自定义函数应该不是问题。 python 中有一些不错的示例(将其重写为 C++ 应该没有问题,因为 OpenCV API 大致相同)How to add noise (Gaussian/salt and pepper etc) to image in Python with OpenCV
还有一件事我不明白:如果你可以产生噪声,如果你已经有了没有噪声的原始图像,为什么还要使用某种算法对图像进行降噪?
关于c++ - 在image-OpenCV和C++中添加高斯噪声然后去噪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43931749/