利用图像加法消除高斯噪声.docx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
利用图像加法消除高斯噪声

图像处理-图像加法应用图像加法的应用图像的加法可用于平均以减少和去除图像采集中混入的噪声,在采集中实际图像的时候,由于各种不同的原因,常会有一些干扰或噪声混入到最后采集的图像中。从这个意义上来说,实际采集到的图像可看做是由原始场景图像和噪声图像叠加而成的,即算法思想如果在图像个点的噪声是互不相关的,且噪声具有零均值的统计特性,则可以通过一系列的采集图像{g(x,y)}相加来消除噪声。设M个图像相加再求平均值得到的一幅新图像,即那么可以证明新的图像的期望值为E如果考虑新图像和噪声图像各自的均方差的关系,则可见随着平均图像数量M的增加,噪声在每个像素的位置(x,y)的影响越来越小实验高斯噪声U1和U2是来自(0,1)的等概率的样本Z1和Z2即是均值为0高斯噪声的函数C++函数实现#include cstdlib#include cmath#include limitsdouble generateGaussianNoise(double mu, double sigma){const double epsilon = std::numeric_limitsdouble::min();const double two_pi = 2.0*3.14159265358979323846;static double z0, z1;static bool generate;generate = !generate;if (!generate) return z1 * sigma + mu;double u1, u2;do { u1 = rand() * (1.0 / RAND_MAX); u2 = rand() * (1.0 / RAND_MAX); }while ( u1 = epsilon );z0 = sqrt(-2.0 * log(u1)) * cos(two_pi * u2);z1 = sqrt(-2.0 * log(u1)) * sin(two_pi * u2);return z0 * sigma + mu;}注:以上均来及维基百科/wiki/Box%E2%80%93Muller_transform/wiki/Box%E2%80%93Muller_transform代码实现环境:visual studio 2013,OpenCV3.0,Windows7原理及步骤:通过高斯噪声函数得到噪声值通过计算的噪声值利用OpenCV库对图像进行加噪处理保存加噪图片读取获得的噪声图片模拟采样图片根据不同的图片数量叠加取平均值获得结果源代码见附录或者查看/Ds-Hale/ImageNoiseGithub实验结果原始图片原始图片通过程序进行高斯加噪声-1噪声图片-1噪声图片-2噪声图片-3输入命令进行加噪和降噪程序命令截图实验结果截图实验结果分析通过设置不同的图片值的大小得到的结果M=5明显可以看出与实际图像差距还是很大,M=10比起M=5时有明显的改善,但不是很理想M=30能明显的看出图片的噪点有明显下降M=50,M=100从上述结果可以看出,图像的加法能够消除噪声,随着M(样本总数)的增大减噪效果越来越明显。但是发现降噪过后的图片明显呈现较原图更暗的颜色,分析代码发现,可能是加噪的密度过高,修改代码后加噪图片,密度比刚刚的要小一些还原后的图片还原后的图片与原图可以明显看出还原的更高了,所以还可以得出结论,噪点的密度可能会影响图片与原图的亮度比。实验总结通过这次图像算术运算的应用试验,掌握了基本的实验环境搭建。深刻理解了图像加法用来消除噪声的原理,以及编码的实现。虽然没有对减乘除等算法进行编码实验,但也能对其中的算法有理解和领悟。通过次的实验能不仅收获更多的知识,而且还体会到了算法的精妙和算法的实际应用。附录:// ImageNoise.cpp : 定义控制台应用程序的入口点。//#include stdafx.h#include opencv2/core/core.hpp #includeopencv2/highgui/highgui.hpp #include opencv2/OpenCV.hpp#include iostream#include sstream#include utility#include vector#include math.h using namespace cv;using namespace std;/*产生高斯噪声的函数,引自维基百科*/#define TWO_PI 6.2831853071795864769252866double generateGaussianNoise(){static bool hasSpare = false;static double rand1, rand2;if (hasSpar

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档