OpenCV-Python图像添加(高斯/椒盐/泊松/斑点)噪声
简介图像添加(高斯/椒盐/泊松/斑点)噪声
            一、np.random.randint()、np.random.normal()
1.1、np.random.randint()函数:
numpy.random.randint(low, high=None, size=None, dtype='l')
low (inclusive) to high (exclusive)的随机整数。如果默认high=None,则取[0, low)
- low:从分布中提取的最小的整数
- high:分布中提取的最大值
- size::输出形态,例如(m,n,k),默认为None,表示给出单值
- dtype:获得的数据类型
返回值:int or ndarray of ints。size-shaped array
示例:
>>> import numpy as np
>>> np.random.randint(2,size=10) 
array([1, 1, 0, 0, 0, 0, 0, 0, 1, 0])
>>> np.random.randint(3,size=10) 
array([0, 1, 1, 1, 2, 2, 2, 0, 1, 0])
>>> np.random.randint(1,size=10)     
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
>>> np.random.randint(1,10,size=10)  
array([6, 7, 3, 9, 6, 2, 1, 3, 4, 3])
>>> np.random.randint(1,10,size=(2,4)) 
array([[1, 5, 8, 7],
       [6, 7, 9, 1]])
>>> np.random.randint(1,10,size=(3,4)) 
array([[8, 5, 4, 5],
       [4, 4, 8, 8],
       [6, 3, 1, 5]])
1.2、np.random.normal()
np.random.normal(loc,scale,size)
- loc:float 此概率分布的均值(对应着整个分布的中心),loc=0说明这一个以Y轴为对称轴的正态分布
- scale:float 此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)
- size:为一个二元元组,如(2,1), 为返回的矩阵的size
该函数用于生成一个指定形状的符合高斯分布的随机数,并将生成的结果通过值返回。第1个参数对应整个高斯分布的中心。第2个参数对应高斯分布的宽度。scale 值越大,分布越扁平;反之,分布越高耸。第3个参数为可选参数,可根据需求进行输出尺寸的设置,若未指定,则仅输出单个值。当参数loc设置为0,scale 设置为1时,即代表标准正态分布。
>>> np.random.normal(0,1,10) 
array([ 0.10776615,  0.81299827,  2.44066159, -1.81348872, -0.23403644,
        0.14650539,  1.68715879, -1.98638548,  0.28942458, -1.76158585])
>>> np.random.normal(0,10,10) 
array([  2.63533538,   9.18777582, -12.83312121, -14.07350625,
       -10.00886325,  -4.65037186,  -4.06965115,   8.36519733,
        13.62806091,  -2.51405138])
>>> np.random.normal(0,10,(2,3)) 
array([[-0.90608174,  2.86926449, 13.36532391],
       [-5.24681199, -6.45934608,  8.4775034 ]])
>>> np.random.normal(2,10,(2,3)) 
array([[-23.850593  ,   1.08538345,   4.57825469],
       [  0.02448953,  23.20805639,  -0.51318159]])
二、椒盐噪声
椒盐噪声又称脉冲噪声,噪点是非黑即白。椒指的是黑色的噪点(0,0,0),盐指的是白色的噪点(255,255,255)。噪点在图像上随机生成,可以通过控制噪声的比例,设置图像损坏的程度。下面是一个增加椒盐噪声的例子。
OpenCV中没有提供专门为图像添加椒盐噪声的函数,需要使用者根据自己需求编写生成椒盐噪声的程序。考虑到椒盐噪声会随机产生在图像中的任何一个位置,因此要生成椒盐噪声,我们需要用到随机数生成函数。由于NumPy在数据处理中的优异表现,对于随机数的生成,我们可以使用np.random.randint()函数。
import cv2
import numpy as np
def add_salt_pepper_noise(src, rate):
    src_copy = src.copy()
    height, width = src_copy.shape[0:2]
    print(height,width)
    noise_count = int(rate * height * width / 2)
    x = np.random.randint(width, size=noise_count)
    y = np.random.randint(height, size=noise_count)
    src_copy[y, x] = 255
    x = np.random.randint(width, size=noise_count)
    y = np.random.randint(height, size=noise_count)
    src_copy[y, x] = 0
    return src_copy
img = cv2.imread("1-1.jpg", cv2.IMREAD_UNCHANGED)
cv2.imshow("scr", img)
cv2.imshow("noise- 1%", add_salt_pepper_noise(img, 0.01))
cv2.imshow("noise- 5%", add_salt_pepper_noise(img, 0.05))
cv2.imshow("noise- 10%", add_salt_pepper_noise(img, 0.1))
cv2.waitKey(0)
cv2.destroyAllWindows()

图片分别含有1%,5%和10%椒盐噪声。明显可以看出噪声比例越高,图像越不清晰。
三、高斯噪声
高斯噪声就是噪声密度函数服从高斯分布的一类噪声,可以通过调节标准差(sigma), 来控制噪声的程度。NumPy中提供了可以产生符合高斯分布(正态分布)的随机数的 np.random.normal()函数。
下面是一个增加高斯噪声的例子。
import cv2
import numpy as np
def add_gauss_noise(src, sigma):
    mean = 0
    size = src.shape
    gauss = np.random.normal(mean, sigma, size)
    noisy_img = np.uint8(src + gauss)
    return noisy_img
img = cv2.imread("1-1.jpg", cv2.IMREAD_UNCHANGED)
cv2.imshow("scr", img)
cv2.imshow("noise- sigma=5", add_gauss_noise(img, 5))
cv2.imshow("noise- sigma=10", add_gauss_noise(img, 10))
cv2.imshow("noise- sigma=20", add_gauss_noise(img, 20))
cv2.waitKey(0)
cv2.destroyAllWindows()

 在使用Docker时,经常会犯一个错,误以为latest镜像会自己更像到最小版本,其实这样理解是有问题的,latest就是一个标签,没有自动更新到最新版本的功能,本文就是对latest标签进行介绍。
在使用Docker时,经常会犯一个错,误以为latest镜像会自己更像到最小版本,其实这样理解是有问题的,latest就是一个标签,没有自动更新到最新版本的功能,本文就是对latest标签进行介绍。 nodejs中使用npm和yarn,使用最新阿里云镜像 aliyun mirror,网上很多还是文章用的是下面这个地址~~yarn config set registry https://registry.npm.taobao.org~~
nodejs中使用npm和yarn,使用最新阿里云镜像 aliyun mirror,网上很多还是文章用的是下面这个地址~~yarn config set registry https://registry.npm.taobao.org~~ 《是妈妈是女儿》聚焦母女间未曾言明的爱意,以书信对话的形式呈现出各自的内心独白,表达彼此的牵挂。黄绮珊与希林娜依·高用跨越时空、打开心扉、深情对唱的形式,将天下母女爱的寄语化作心灵的倾诉。黄绮珊的每一句话,每一个字都演绎出了妈妈对女儿的爱,而希林依娜·高把女儿对妈妈的爱由不理解到理解再到感恩演绎得淋漓尽致。
《是妈妈是女儿》聚焦母女间未曾言明的爱意,以书信对话的形式呈现出各自的内心独白,表达彼此的牵挂。黄绮珊与希林娜依·高用跨越时空、打开心扉、深情对唱的形式,将天下母女爱的寄语化作心灵的倾诉。黄绮珊的每一句话,每一个字都演绎出了妈妈对女儿的爱,而希林依娜·高把女儿对妈妈的爱由不理解到理解再到感恩演绎得淋漓尽致。 Towxml 是一个让小程序(微信/QQ)可以解析Markdown、HTML的解析库。能够使小程序完美解析Markdown内容。
Towxml 是一个让小程序(微信/QQ)可以解析Markdown、HTML的解析库。能够使小程序完美解析Markdown内容。 Editor.md 是一个可嵌入的开源 Markdown 在线编辑器组件,你可以很方便用在浏览器、NW.js(Node-webkit)等地方,基于CodeMirror、jQuery 和 Marked 构建。
Editor.md 是一个可嵌入的开源 Markdown 在线编辑器组件,你可以很方便用在浏览器、NW.js(Node-webkit)等地方,基于CodeMirror、jQuery 和 Marked 构建。 快速生成表格
快速生成表格 Electron页面跳转、浏览器打开链接和打开新窗口
Electron页面跳转、浏览器打开链接和打开新窗口 Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题
Docker编译镜像出现:fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.12/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.2c4ac24e.tar.gz: No such file or directory问题 在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。
在Mac电脑中,如何对Git的用户名和密码进行修改呢?起初不懂Mac,所以整了很久,本文将记录如何对这个进行操作,以便后期使用。 在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。
在使用Git的过程中,不想每次都输入用户名和密码去拉取代码,所以就需要保存这些信息,那么既然有保存了,就必须有清除功能。