Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在图像OpenCV和C+中添加高斯噪声+;然后去噪?_C++_Image_Opencv_Gaussian - Fatal编程技术网

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

C++ 在图像OpenCV和C+中添加高斯噪声+;然后去噪?,c++,image,opencv,gaussian,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,

我试图在图像中加入噪声,然后去噪,看看我的目标检测算法有什么不同。因此,我开发了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提供了该技术的四种变体。

cv2.FastNLMeansDeoising()-适用于单个灰度图像

cv2.FastNLMeansDeoisingColor()-用于彩色图像

cv2.fastNlMeansDenoisingMulti()-适用于捕获的图像序列 短时间内(灰度图像)

cv2.fastNlMeansDenoisingColoredMulti()-同上,但适用于颜色 图像

常见参数有:

h:决定过滤器强度的参数。较高的h值可消除噪声 更好,但也会删除图像的细节。(10个就可以了)

hForColorComponents:与h相同,但仅适用于彩色图像。(通常 同h)

TemplateWindowsSize:应该是奇数。(建议7)

SearchWindowsSize:应该是奇数。(建议21)

若要向图像添加高斯噪声,此线程可能会有所帮助:


OpenCV附带了一个照片包,您可以在其中找到非局部均值去噪算法的实现。文档可在此处找到:

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

除了randn,我不知道OpenCV中还有其他噪声模型。但是,添加一个自定义函数来实现这一点应该不是问题。在Python中有一些很好的例子(当OpenCV API保持大致相同时,您不应该将它重写到C++)


还有一件事我不明白:如果你能产生噪音,如果你已经有了没有噪音的原始图像,为什么还要用一些算法去噪呢?

嗯,我在做飞机门检测。由于该算法应适用于所有天气条件,我假设将有雨或太阳反射或不同光照条件(太阳、黑暗…)的图像。所以,首先我尝试添加一些随机噪声,看看我的检测率是如何下降的。然后我必须应用一些算法去噪图像(意味着去噪来自雨、太阳反射、dak或任何可能出现的噪声)。希望是明确的,现在我不能添加opencv_photo249.lib.Im使用opencv 2.4。我把LIMPOPENVAXIP2413添加到MIWW C++库中。但仍然存在错误..\main.cpp:141:73:error:“FastNLMeansDenoisingColor”未在此范围内声明只是一个小提示:在C++17中,
float m=(10,12,34)计算m到34。