滤镜之高斯噪声GaussianNoise

首先看这两张效果图:



 

图像加上高斯噪声非常简单了,每个像素点叠加上高斯噪声即可。同理也可以叠加上其他的噪声。具体可以参考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 int
gauss(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;
		}
	}
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FFmpeg是一种功能强大的多媒体处理工具,它具有多种滤镜的功能,可以用于视频剪辑、转码以及图像处理等。下面是FFmpeg中常用的滤镜大全: 1. 视频滤镜: - 缩放滤镜(scale):用于调整视频的大小,可以改变宽高比例。 - 旋转滤镜(rotate):用于将视频旋转指定的角度。 - 增加边框滤镜(pad):在视频周围添加一个边框。 - 裁剪滤镜(crop):用于截取视频的一部分。 - 亮度对比度滤镜(eq):用于调整视频的亮度和对比度。 - 锐化滤镜(unsharp):增强视频的清晰度。 - 模糊滤镜(blur):使视频变得模糊。 2. 音频滤镜: - 音量调节滤镜(volume):用于调整音频的音量。 - 混音滤镜(amix):将多个音频混合成一个音频。 - 去噪滤镜(anlmdn):去除音频中的噪音。 - 音频平衡滤镜(pan):调整音频的平衡。 - 音频延迟滤镜(adelay):给音频添加延迟效果。 3. 图像处理滤镜: - 亮度对比度滤镜(eq):用于调整图像的亮度和对比度。 - 图像模糊滤镜(boxblur):使图像变得模糊。 - 图像锐化滤镜(unsharp):增强图像的清晰度。 - 图像旋转滤镜(rotate):用于将图像旋转指定的角度。 以上仅是FFmpeg中的一些常用滤镜,实际上还有更多丰富的滤镜可供选择和使用。可以通过FFmpeg的文档或者官方网站了解更多滤镜的具体用法和参数设置。滤镜的使用需要考虑到影像的特点和要达到的效果,因此合理选择和组合滤镜是很重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值