Python Opencv实践 - 图像高斯滤波(高斯模糊)

复制代码
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt

img = cv.imread("../SampleImages/pomeranian.png", cv.IMREAD_COLOR)
rows,cols,channels = img.shape
print(rows,cols,channels)

#为图像添加高斯噪声
#使用np.random.normal(loc=0.0, scale=1.0, size=None)
# loc: 高斯分布中心点,分布的均值
# scale: 高斯分布的宽度,分布的标准差
# size:维度。如果给定维度是(m,n,k)则从分布中抽取m*n*k个样本
#参考资料:https://blog.csdn.net/wzy628810/article/details/103807829
#         https://blog.csdn.net/sinat_29957455/article/details/123977298
def AddGaussianNoise(image, mean=0, var=0.005):
    image = np.array(image/255, dtype=float)                    #将像素值归一
    noise = np.random.normal(mean, var ** 0.5, image.shape)     #产生高斯噪声
    out = image + noise                                         #直接将归一化的图片与噪声相加

    if out.min() < 0:
        low_clip = -1.
    else:
        low_clip = 0.

    out = np.clip(out, low_clip, 1.0)
    out = np.uint8(out*255)
    return out

img_gaussian_noise = img.copy()
gauss_mean = 0
gauss_sigma = 0.003
#增加高斯噪声到图像
img_gaussian_noise = AddGaussianNoise(img_gaussian_noise, gauss_mean, gauss_sigma)

#高斯滤波(高斯模糊)
#cv.GaussianBlur(src, ksize, sigmaX, sigmaY, borderType)
#src: 输入图像
#ksize: kernel大小,高斯卷积和大小。注意卷积核的宽度和高度可以不同,但必须为正数且为奇数,也可以为零。
#sigmaX/Y: X和Y方向上的高斯标准差
#参考资料:https://blog.csdn.net/weixin_52012241/article/details/122284713
img_gaussian_blur_origin = cv.GaussianBlur(img, (3,3), 0)
img_gaussian_blur_noise = cv.GaussianBlur(img_gaussian_noise, (13,13), 0.006)


#显示图像
fig,axes = plt.subplots(nrows=2, ncols=2, figsize=(10,10), dpi=100)
axes[0][0].imshow(img[:,:,::-1])
axes[0][0].set_title("Original")
axes[0][1].imshow(img_gaussian_blur_origin[:,:,::-1])
axes[0][1].set_title("Original Gaussian Blurred")
axes[1][0].imshow(img_gaussian_noise[:,:,::-1])
axes[1][0].set_title("Add Gaussian Noise")
axes[1][1].imshow(img_gaussian_blur_noise[:,:,::-1])
axes[1][1].set_title("Gaussian Noise Blurred")
相关推荐
春日见3 小时前
5分钟入门强化学习之动态规划算法与实现
大数据·人工智能·python·算法·机器学习·计算机视觉
bug和崩溃我都要3 小时前
Qt 封装 libmpv 全功能视频播放器开发指南
开发语言·qt·音视频
郝学胜-神的一滴3 小时前
Qt 高级开发 018:复刻经典登录界面布局与窗口美化全解析
开发语言·c++·qt·程序人生·用户界面
郝亚军4 小时前
IEEE 754 单精度浮点的SEM表示
开发语言·c++·算法
zhangjw344 小时前
第15篇:Java多线程零基础入门,进程线程、线程创建方式、线程生命周期、线程安全彻底吃透
java·开发语言·面试
蝈理塘(/_\)大怨种4 小时前
类和对象 (上)
java·开发语言
DeniuHe4 小时前
sklearn 中所有交叉验证数据集划分方式完整总结
人工智能·python·sklearn
DeniuHe4 小时前
sklearn中不同交叉验证方法的场景适配
人工智能·python·sklearn
小新1104 小时前
qt creator 将qInfo的输出日志写入日志文档,方便查看
开发语言·qt
yubo05094 小时前
计算机视觉第三课:在图像上画框、画文字、画圆点
opencv·计算机视觉·目标跟踪