滤镜之高斯噪声GaussianNoise
来源:互联网 发布:淘宝达人管理中心登陆 编辑:程序博客网 时间:2024/06/09 16:53
首先看这两张效果图:
图像加上高斯噪声非常简单了,每个像素点叠加上高斯噪声即可。同理也可以叠加上其他的噪声。具体可以参考GIMP代码
算法原理:
1. 首先随机产生高斯噪声,可以是RGB同一个随机噪声,也可以是三通道不同的随机噪声。
2. 将随机噪声的值叠加到像素中,并判断是否越界。
该算法存在一个参数:
1. 噪声程度:越大则噪声越大,图像越脏
高斯噪声产生的代码是从The Science Of FractalImages一书中得来的,GIMP中也是采用类似代码:
/* * Return a Gaussian (aka normal) random variable. * * Adapted from ppmforge.c, which is part of PBMPLUS. * The algorithm comes from: * 'The Science Of Fractal Images'. Peitgen, H.-O., and Saupe, D. eds. * Springer Verlag, New York, 1988. */static intgauss(int scale){ double sum; sum = (RANDOM() & 0x7FFF) + (RANDOM() & 0x7FFF) +(RANDOM() & 0x7FFF) + (RANDOM() & 0x7FFF); return (int) (scale * (sum * 5.28596089837e-5 - 3.46410161514));}
算法代码:没有经过任何优化
int GenGauss(int nLevel){double d = (rand() + rand() + rand() + rand()) * 5.28596089837e-5 - 3.46410161514 ;return (int)(nLevel * d * 127.0 / 100.0) ;}void GuassianNoisyRGB(unsigned char* pInput,unsigned char* pOutput,int width,int height,int nStride,int nLevel){int bRandom = 0;int n1, n2, n3 ;int i,j;int temp,index;if(nLevel<0)nLevel = 0;if(nLevel > 100)nLevel = 100;if(pInput == NULL || pOutput == NULL)return;if(width <= 0 || height <= 0)return;srand ((unsigned int)time(0)) ;for (j=0;j<height;j++){for (i=0;i<width;i++){if (bRandom){n1=GenGauss(nLevel);n2=GenGauss(nLevel);n3=GenGauss(nLevel);}else{n1=n2=n3=GenGauss(nLevel) ;}index = j*nStride+i*3;temp = pInput[index] + n1;if(temp<0)temp = 0;if(temp>255)temp = 255; pOutput[index] = temp;temp = pInput[index+1] + n2;if(temp<0)temp = 0; if(temp>255)temp = 255; pOutput[index+1] = temp;temp = pInput[index+2] + n3;if(temp<0)temp = 0;if(temp>255)temp = 255; pOutput[index+2] = temp;}}}
- 滤镜之高斯噪声GaussianNoise
- 白噪声,高斯噪声,高斯白噪声
- 高斯噪声 高斯白噪声
- 高斯噪声
- 高斯噪声、高斯白噪声解析
- 高斯噪声和椒盐噪声
- 高斯噪声、高斯白噪声、SNR、噪声方差
- 关于白噪声、高斯噪声和椒盐噪声
- 白噪声\高斯噪声\高斯白噪声的区别
- 高斯噪声/白噪声/高斯白噪声的区别
- 高斯噪声、高斯白噪声、SNR、噪声方差
- 噪声添加(高斯噪声、椒盐噪声)
- 图像处理之添加高斯与泊松噪声
- 图像处理之添加高斯与泊松噪声
- matlab产生高斯噪声
- 模拟生成高斯噪声
- 计算机视觉-高斯噪声
- 图像添加高斯噪声、胡椒噪声、盐噪声和椒盐噪声
- 【Hbase】 hbase shell基础和常用命令详解
- 报表优化
- Centos 6 yum 安装 tomcat6
- make -C M=
- TFS NuGet程序包出现错误TF30063 没有权限
- 滤镜之高斯噪声GaussianNoise
- Current online Redo 和 Undo 损坏的处理方法
- Qt学习笔记(九)数据库
- Oracle 不同故障的恢复方案
- rqnoj-140-分配时间-分组背包问题
- Android切换前后置摄像头并录制视频
- Shopex换空间,搬家,迁移的优化详细操作步骤
- 祈祷
- windows 检测80端口