Python-OpenCV图像处理(三):高斯噪声与高斯模糊

高斯噪声

高斯噪声是指高绿密度函数服从高斯分布的一类噪声。特别的,假设一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称这个噪声为高斯白噪声。
Python-OpenCV图像处理(三):高斯噪声与高斯模糊_第1张图片

高斯模糊

原理:是把要模糊的像素色值统计,用数学上加权平均的计算方法(高斯函数)得到色值,对范围、半径等进行模糊。
应用:一些美颜软件、美颜相机上的磨皮和毛玻璃特效基本上都是用的高斯模糊,并且大部分图像处理软件中都有高斯模糊的操作,除此之外,高斯模糊还具有减少图像层次和深度的功能

Python-OpenCV图像处理(三):高斯噪声与高斯模糊_第2张图片

Python代码

import cv2
import numpy as np

def clamp(pv):
    if pv > 255:
        return 255
    elif pv < 0:
        return 0
    else:
        return pv

#给图片增加高斯噪声,计算花费很长时间
def gaussian_noise(src):
    image = src
    h, w, c = image.shape
    for row in range(h):
        for col in range(w):
            #获取三个高斯随机数
            #第一个参数:概率分布的均值,对应着整个分布的中心
            #第二个参数:概率分布的标准差,对应于分布的宽度
            #第三个参数:生成高斯随机数数量
            s = np.random.normal(0, 20, 3)
            #获取每个像素点的bgr值
            b = image[row, col, 0]  #blue
            g = image[row, col, 1]  #green
            r = image[row, col, 2]  #red\
            #给每个像素值设置新的bgr值
            image[row, col, 0] = clamp(b + s[0])
            image[row, col, 1] = clamp(g + s[1])
            image[row, col, 2] = clamp(r + s[2])

    cv2.namedWindow('Gaussian_noise', 0)
    cv2.resizeWindow('Gaussian_noise', 600, 600)
    cv2.imshow('Gaussian_noise', image)

def gaussian_blur(src):
    image = src
    dst = cv2.GaussianBlur(image, (0, 0), 15)

    cv2.namedWindow('Gaussian_blur', 0)
    cv2.resizeWindow('Gaussian_blur', 600, 600)
    cv2.imshow('Gaussian_blur', dst)

src = cv2.imread('C:/Users/207/Anaconda3/envs/demo/project/hhface.png')
cv2.namedWindow('input image', 0)
cv2.resizeWindow('input image', 600, 600)
cv2.imshow('input image', src)

#gaussian_noise(src)
gaussian_blur(src)

cv2.waitKey(0)

cv2.destroyAllWindows()

参考: link.https://www.cnblogs.com/lytwajue/p/7381202.html
link.https://blog.csdn.net/gangzhucoll/article/details/78682492

你可能感兴趣的:(py-opencv,Python-Opencv)