目录

定义

类别

高斯噪声

案例

效果 

问题

原因

纠错

瑞利噪声

案例

效果

 ​编辑

伽马噪声

案例

效果

 ​编辑

指数噪声

案例

效果 

均匀噪声

案例

效果 

椒盐噪声

案例

效果 


定义

图片中的多余的干扰信息

简单来说就是图片中的一点点 让图片变得模糊

类别

这一篇其实应该是来自于图像处理的基本知识,根据直方图来分类噪声的类别。

这次只讲效果 不谈论公式及分布均值和方差

高斯噪声

直方图符合于高斯分布的噪声

案例

图片依旧采用之前的原图

import cv2
import numpy as np

starSky = cv2.imread('StarSky.jpg')
#设定均值和方差
mean = 0
#设定标准差 标准差越大 损坏图像就越大
sigma = 25

gauss = np.random.normal(mean,sigma,starSky.shape)
gaussImg = gauss + starSky
gaussImg = np.clip(gaussImg,a_min=0,a_max=255)
res = np.hstack((starSky, gaussImg))
cv2.imshow(('origin,gauss'),res)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果 

问题

我们发现原图区域都出现了曝光度过高的问题

原因

主要是cv2.imshow所需要的参数是uint8

纠错

我们需要将修改后的图像添加astype来更改到uint8

#设定均值和方差
mean = 0
#设定标准差 标准差越大 损坏图像就越大
sigma = 25
gauss = np.random.normal(mean,sigma,starSky.shape)
gaussImg = gauss + starSky
gaussImg = np.clip(gaussImg,a_min=0,a_max=255)
gaussImg = gaussImg.astype(np.uint8)
res = np.hstack((starSky, gaussImg))
cv2.imshow(('origin,gauss'),res)
cv2.waitKey(0)
cv2.destroyAllWindows()

 此时就恢复了正常

瑞利噪声

观察直方图是否符合瑞利分布

案例

scale = 30
rayleigh = np.random.rayleigh(scale,starSky.shape)
rayleigh_noise = rayleigh + starSky
rayleigh_noise = np.clip(rayleigh_noise,a_min=0,a_max=255)
rayleigh_noise = rayleigh_noise.astype(np.uint8)
res = np.hstack((starSky, rayleigh_noise))
cv2.imshow(('origin,rayleigh'),res)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果

 

伽马噪声

案例

#设置伽马分布的形状参数和尺度参数
shape, scale = 2., 24.
gamma = np.random.gamma(shape,scale,starSky.shape)
gamma_noise = gamma + starSky
gamma_noise = np.clip(gamma_noise, a_min=0, a_max=255)
gamma_noise = gamma_noise.astype(np.uint8)
res = np.hstack((starSky, gamma_noise))
cv2.imshow(('origin,gamma'),res)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果

 

指数噪声

案例

scale = 24
exponemtial = np.random.exponential(scale,starSky.shape)
exponemtial_noise = exponemtial + starSky
exponemtial_noise = np.clip(exponemtial_noise, a_min=0, a_max=255)
exponemtial_noise = exponemtial_noise.astype(np.uint8)
res = np.hstack((starSky, exponemtial_noise))
cv2.imshow(('origin,exponemtial'),res)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果 

均匀噪声

案例

uniform1 = np.random.uniform(0,56,starSky.shape)
uniform_noise = uniform1 + starSky
uniform_noise = np.clip(uniform_noise, a_min=0, a_max=255)
uniform_noise = uniform_noise.astype(np.uint8)
res = np.hstack((starSky, uniform_noise))
cv2.imshow(('origin,uniform'),res)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果 

 

椒盐噪声

案例

#椒盐噪声
s_vs_p =  0.4
amount = 0.004
noisy_img = np.copy(starSky)
#添加salt噪声
num_salt = np.ceil(amount * starSky.size * s_vs_p)
coords = [np.random.randint(0, i, int(num_salt)) for i in starSky.shape]
noisy_img[coords[0],coords[1],:] = 1
#添加pepper噪声
num_pepper = np.ceil(amount * starSky.size * (1. - s_vs_p))
coords = [np.random.randint(0, i, int(num_pepper)) for i in starSky.shape]
noisy_img[coords[0],coords[1],:] = 0
res = np.hstack((starSky, noisy_img))
cv2.imshow(('origin,salt and pepper'),res)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果 

详细

图像处理视频可参考:Image and Video Processing: From Mars to Hollywood with a Stop at the Hospital | Coursera

噪声一类的文章可参考:

(18条消息) 图像处理(12)--图像各种噪声及消除方法_信号背景和噪声去除_ShaneHolmes的博客-CSDN博客

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐