图像平滑处理

图像加高斯噪声并保存:

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])




src = cv2.imread('1.jpg',cv2.IMREAD_REDUCED_COLOR_2)


gaussian_noise(src)

cv2.imshow('noise',src)
cv2.imwrite('.//noise.png',src)
cv2.waitKey(0)

cv2.destroyAllWindows()



均值滤波

指用当前像素点周围N*N个像素值的均值来代替当前像素值。使用该方法遍历处理图像内的每一个像素点
函数:

dst = cv2.blur(src, ksize)

其中,ksize为滤波核大小
测试代码:

import cv2

img = cv2.imread('noise.png')
dst = cv2.blur(img, (5,5))
cv2.imshow('original', img)
cv2.imshow('result', dst)
cv2.waitKey()
cv2.destroyAllWindows()

测试结果:

在这里插入图片描述
在这里插入图片描述

高斯滤波

高斯滤波中,会将中心点的权重值加大,远离中心点的权重值减小,在此基础上机算领域内各个像素值不同权重。
使用函数:
dst = cv2.GaussianBlur(src, ksize, sigmaX, sigmaY, borderType)

sigmaX、sigmaY分别对应X、Y轴方向上卷积核的标准差。
测试代码:

import cv2

img = cv2.imread('noise.png')
dst = cv2.GaussianBlur(img, (5,5), 0, 0)
cv2.imshow('original', img)
cv2.imshow('result', dst)
cv2.waitKey()
cv2.destroyAllWindows()

测试结果:
在这里插入图片描述
在这里插入图片描述

中值滤波

中值滤波会取当前像素点及其周围临近像素点(一共奇数个像素点)的像素值,将这些像素值排序,然后将位于中间位置的像素值作为当前像素点的像素值。
函数如下:
dst = cv2.medianBlur(img, 3)

测试代码:

import cv2

img = cv2.imread('noise.png')
dst = cv2.medianBlur(img, 3)
cv2.imshow('original', img)
cv2.imshow('result', dst)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值