我的前面的一片博客有提到,如何用imnoise函数添加特定高斯半径的噪声。
然而,在实际应用中,我们更希望得到特定分贝的高斯噪声。这样可以简便得到结果。
实际上,我们的这个方法,仅适用于同一批图片,即同一个相机在同一天的相似大气环境下拍摄的照片。
如果有人有更好的方法,欢迎随时提出,不尽感谢。
下面是如何添加。
首先,按照上篇博客的http://blog.youkuaiyun.com/serious_tanx/article/details/53228367的方法,例如加入半径为10的高斯噪声。
此时需要测定加完高斯噪声后的图像的噪声。
有两种方法,一种是认为原来图像是“纯净”的,这时可以直接用两幅图像相减的PSNR方法,测定图像的信噪比。
第二种是认为原来图像本身带一定噪声,则直接用PSNR会有一定的误差,需要用单幅图像测定信噪比的方法来测定图像的信噪比。
第二种方法主要推荐傅鹏的《一种遥感图像信噪比评估和度量准则》这篇文章里面介绍的内容。(太久了,找了半天没找到,不过记得挺容易实现的)
下面是峰值信噪比的C++算法,所用为MFC,opencv2.4.9
//两幅图像所在位置
IplImage* img = cvLoadImage("C:\\Users\\Desktop\\000.tif");
IplImage* imgNoise = cvLoadImage("C:\\Users\\Desktop\\000_