几种常见的数字图像噪声,及使用python添加噪声

参考文章:
https://blog.csdn.net/zhoufan900428/article/details/37695357

常见噪声:高斯噪声,椒盐噪声,泊松噪声,乘性噪声

高斯噪声

概率密度函数服从高斯分布的噪声。
产生原因:
1)图像传感器在拍摄时市场不够明亮、亮度不够均匀;
2)电路各元器件自身噪声和相互影响;
3)图像传感器长期工作,温度过高

泊松噪声

泊松噪声,就是符合泊松分布的噪声模型,泊松分布适合于描述单位时间内随机事件发生的次数的概率分布。如某一服务设施在一定时间内受到的服务请求的次数,电话交换机接到呼叫的次数、汽车站台的候客人数、机器出现的故障数、自然灾害发生的次数、DNA序列的变异数、放射性原子核的衰变数等等

乘性噪声

乘性噪声一般由信道不理想引起,它们与信号的关系是相乘,信号在它在,信号不在他也就不在。

椒盐噪声

椒盐噪声,椒盐噪声又称脉冲噪声,它随机改变一些像素值,是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。
椒盐噪声往往由图像切割引起。

瑞利噪声

瑞利噪声相比高斯噪声而言,其形状向右歪斜,这对于拟合某些歪斜直方图噪声很有用。
瑞利噪声的实现可以借由平均噪声来实现。其matlab实现如下:

a = -0.2;
b = 0.03;
n_rayleigh = a + (-b .* log(1 - rand(M,N))).^0.5;

伽马噪声

伽马噪声的分布,服从了伽马曲线的分布。伽马噪声的实现,需要使用b个服从指数分布的噪声叠加而来。指数分布的噪声,可以使用均匀分布来实现。(b=1时为指数噪声,b>1时通过若干个指数噪声叠加,得到伽马噪声)

a = 25;
b = 3;
n_Erlang = zeros(M,N); 
 
 for j=1:b
    n_Erlang = n_Erlang + (-1/a)*log(1 - rand(M,N));
end

均匀噪声

使用python的skimage.util.random_noise(image, mode=‘gaussian’, seed=None, clip=True, **kwargs)来添加噪声

1.先安装必要的依赖库:numpy , scipy , matpoltlib
2.安装scikit-image

pip install scikit-image

3.导入util库

import skimage
from skimage import util

4.函数介绍

def random_noise(image, mode='gaussian', seed=None, clip=True, **kwargs):
功能:为浮点型图片添加各种随机噪声
参数:
image:输入图片(将会被转换成浮点型),ndarray型
mode: 可选择,str型,表示要添加的噪声类型
	gaussian:高斯噪声
	localvar:高斯分布的加性噪声,在“图像”的每个点处具有指定的局部方差。
	poisson:泊松再生
	salt:盐噪声,随机将像素值变成1
	pepper:椒噪声,随机将像素值变成0-
  • 21
    点赞
  • 125
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
图像噪声是任何图像处理任务中的常见问题。为了消除这种噪声,图像处理实践中使用的一个广泛的方法是利用滤波器。滤波器可以应用于图像以去除噪声和增强细节。以下是如何使用Python和OpenCV来实现图像噪声消除。 首先,通过以下代码打开原始图像: ```python import cv2 import numpy as np #load image img = cv2.imread('noisy_image.jpg', 0) cv2.imshow('Original', img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这里,我们使用了OpenCV的“imread”函数来载图像。此函数具有两个参数,第一个是图像文件的名称或路径,第二个是指定载方式的标志。由于我们需要载灰度图像,因此标志被设置为0。 然后,我们可以尝试使用高斯滤波器进行图像去噪: ```python #apply gaussian blur blur = cv2.GaussianBlur(img, (5,5),0) cv2.imshow("Gaussian Blurred Image", blur) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这里,我们使用OpenCV的“GaussianBlur”函数来应用高斯模糊。这个函数有三个参数:输入图像,内核大小和模糊度标准差。内核大小指定模糊滤波器的大小,模糊程度取决于标准差的值。 接着,我们可以尝试使用中值滤波器: ```python #apply median blur median = cv2.medianBlur(img, 5) cv2.imshow("Median Blurred Image", median) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这里,我们使用OpenCV的“medianBlur”函数来应用中值模糊。这个函数有两个参数:输入图像和内核大小。内核大小指定模糊滤波器的大小。 最后,我们可以使用双边滤波器: ```python #apply bilateral filter bilateral = cv2.bilateralFilter(img, 5, 75, 75) cv2.imshow("Bilateral Blurred Image", bilateral) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在这里,我们使用OpenCV的“bilateralFilter”函数来应用双边滤波。这个函数有四个参数:输入图像、空间高斯函数标准差、灰度值相似性高斯函数标准差和过滤器大小。 总之,滤波器是图像处理中用于去除或减少噪声的可靠工具。在本文中,我们介绍了Python和OpenCV中几种滤波器的应用,例如高斯滤波器、中值滤波器和双边滤波器。可以根据图像噪声的本质和需求选择最佳滤波器。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值