最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

雾看OpenCV(6)——椒盐噪声与高斯噪声

互联网 admin 2浏览 0评论

雾看OpenCV(6)——椒盐噪声与高斯噪声

目录

  • 前言
  • 正文
    • 介绍
    • 代码
  • 参考

前言

这篇文章是为了后面那篇模糊处理做准备的,我们自己弄一些噪声加在图片上,然后用模糊来观测去除的效果。

正文

介绍

(1) 椒盐噪声
椒盐噪声也称脉冲噪声,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。
图像模拟添加椒盐噪声是通过:随机获取像素点,并设置为高亮度点和低亮度点来实现的。

(2) 高斯噪声
高斯噪声是指概率密度函数服从高斯分布的一类噪声。
特别的,如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度服从均匀分布,则称这个噪声为高斯白噪声。
高斯白噪声 功率谱密度频谱图 和 噪声幅值分布图的图片如下:

代码

效果图

code

import cv2 as cv
import numpy as np# 将rgb颜色通道的图像转为灰色
def rgb2gray(img):h=img.shape[0]w=img.shape[1]img1=np.zeros((h,w),np.uint8)for i in range(h):for j in range(w):# 变成灰色的公式img1[i,j]=0.144*img[i,j,0]+0.587*img[i,j,1]+0.299*img[i,j,2]return img1# 添加噪声
def sp_noise(img,snr):h=img.shape[0]w=img.shape[1]img1=img.copy()sp=h*w   # 计算图像像素点个数NP=int(sp*(1-snr))   # 计算图像椒盐噪声点个数for i in range (NP):randx=np.random.randint(1,h-1)   # 生成一个 1 至 h-1 之间的随机整数randy=np.random.randint(1,w-1)   # 生成一个 1 至 w-1 之间的随机整数if np.random.random()<=0.5:   # np.random.random()生成一个 0 至 1 之间的浮点数img1[randx,randy]=0else:img1[randx,randy]=255return img1# 添加高斯噪声
def gasuss_noise(image, mean=0, var=0.001):'''添加高斯噪声mean : 均值var : 方差'''image = np.array(image/255, dtype=float)noise = np.random.normal(mean, var ** 0.5, image.shape)out = image + noiseif out.min() < 0:low_clip = -1.else:low_clip = 0.out = np.clip(out, low_clip, 1.0)out = np.uint8(out*255)#cv.imshow("gasuss", out)return outimage=cv.imread("../../images/lena.jpg")
grayimage=rgb2gray(image)
sp_noiseimage=sp_noise(grayimage,0.98)   # 将信噪比设定为0.98
# cv2.GaussianBlur(grayimage, ksize=(9, 9), sigmaX=0, sigmaY=0) 这段代码也是可以添加高斯噪声的,更方便,但是不符合实验的初衷
gasuss_noiseimage=gasuss_noise(grayimage,0,0.02)   # 将信噪比设定为0.98,就是将噪声的比例设置为0.02
cv.imshow("image",image)
cv.imshow("grayimage",grayimage)
cv.imshow("sp_noiseimage",sp_noiseimage)
cv.imshow("gasuss_noiseimage",gasuss_noiseimage)
cv.imwrite('grayimage.jpg',grayimage)
cv.imwrite('sp_noiseimage.jpg',sp_noiseimage)
cv.imwrite('gasuss_noiseimage.jpg',gasuss_noiseimage)
cv.waitKey(0)
cv.destroyAllWindows()

在这里面,我也用imwrite写入文件夹之中了。让图片后续可用。

参考

  1. 给图像添加各种噪声

雾看OpenCV(6)——椒盐噪声与高斯噪声

目录

  • 前言
  • 正文
    • 介绍
    • 代码
  • 参考

前言

这篇文章是为了后面那篇模糊处理做准备的,我们自己弄一些噪声加在图片上,然后用模糊来观测去除的效果。

正文

介绍

(1) 椒盐噪声
椒盐噪声也称脉冲噪声,它是一种随机出现的白点或者黑点,可能是亮的区域有黑色像素或是在暗的区域有白色像素(或是两者皆有)。
图像模拟添加椒盐噪声是通过:随机获取像素点,并设置为高亮度点和低亮度点来实现的。

(2) 高斯噪声
高斯噪声是指概率密度函数服从高斯分布的一类噪声。
特别的,如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度服从均匀分布,则称这个噪声为高斯白噪声。
高斯白噪声 功率谱密度频谱图 和 噪声幅值分布图的图片如下:

代码

效果图

code

import cv2 as cv
import numpy as np# 将rgb颜色通道的图像转为灰色
def rgb2gray(img):h=img.shape[0]w=img.shape[1]img1=np.zeros((h,w),np.uint8)for i in range(h):for j in range(w):# 变成灰色的公式img1[i,j]=0.144*img[i,j,0]+0.587*img[i,j,1]+0.299*img[i,j,2]return img1# 添加噪声
def sp_noise(img,snr):h=img.shape[0]w=img.shape[1]img1=img.copy()sp=h*w   # 计算图像像素点个数NP=int(sp*(1-snr))   # 计算图像椒盐噪声点个数for i in range (NP):randx=np.random.randint(1,h-1)   # 生成一个 1 至 h-1 之间的随机整数randy=np.random.randint(1,w-1)   # 生成一个 1 至 w-1 之间的随机整数if np.random.random()<=0.5:   # np.random.random()生成一个 0 至 1 之间的浮点数img1[randx,randy]=0else:img1[randx,randy]=255return img1# 添加高斯噪声
def gasuss_noise(image, mean=0, var=0.001):'''添加高斯噪声mean : 均值var : 方差'''image = np.array(image/255, dtype=float)noise = np.random.normal(mean, var ** 0.5, image.shape)out = image + noiseif out.min() < 0:low_clip = -1.else:low_clip = 0.out = np.clip(out, low_clip, 1.0)out = np.uint8(out*255)#cv.imshow("gasuss", out)return outimage=cv.imread("../../images/lena.jpg")
grayimage=rgb2gray(image)
sp_noiseimage=sp_noise(grayimage,0.98)   # 将信噪比设定为0.98
# cv2.GaussianBlur(grayimage, ksize=(9, 9), sigmaX=0, sigmaY=0) 这段代码也是可以添加高斯噪声的,更方便,但是不符合实验的初衷
gasuss_noiseimage=gasuss_noise(grayimage,0,0.02)   # 将信噪比设定为0.98,就是将噪声的比例设置为0.02
cv.imshow("image",image)
cv.imshow("grayimage",grayimage)
cv.imshow("sp_noiseimage",sp_noiseimage)
cv.imshow("gasuss_noiseimage",gasuss_noiseimage)
cv.imwrite('grayimage.jpg',grayimage)
cv.imwrite('sp_noiseimage.jpg',sp_noiseimage)
cv.imwrite('gasuss_noiseimage.jpg',gasuss_noiseimage)
cv.waitKey(0)
cv.destroyAllWindows()

在这里面,我也用imwrite写入文件夹之中了。让图片后续可用。

参考

  1. 给图像添加各种噪声
发布评论

评论列表 (0)

  1. 暂无评论