OpenCV-python 实现图像的高斯平均平滑滤波

高斯平均是加权平均的一种特例,它根据高斯分布来确定各个模板的系数。
高斯平均模板的分解,因为高斯平均常使用较大的模板,所以会需要很大的计算量,所以,可将一个 2-D 的高斯平均模板分解为两个顺序使用的 1-D高斯平均模板来达到减少计算量的目的。例如:

      替换之后的计算量从O(n^2)变为O(2n),模板越大,效果越明显。

代码:

import cv2
import numpy as np
import matplotlib.pyplot as plt

#加椒盐噪声的函数
def saltPepper(image, salt, pepper):
    height = image.shape[0]
    width = image.shape[1]
    pertotal = salt + pepper    #总噪声占比
    noiseImage = image.copy()
    noiseNum = int(pertotal * height * width)
    for i in range(noiseNum):
        rows = np.random.randint(0, height-1)
        cols = np.random.randint(0,width-1)
        if(np.random.randint(0,100)<salt*100):
            noiseImage[rows,cols] = 255
        else:
            noiseImage[rows,cols] = 0
    return noiseImage


#显示函数
def showImages(images):
    for i in range(len(images)):
        img = images[i]
        title = "("+str(i+1)+")"
        #行,列,索引
        plt.subplot(2, 3, i+1)
        plt.imshow(img, cmap="gray")
        plt.title(title,fontsize=10)
        plt.xticks([])
        plt.yticks([])
    plt.show()

#主函数
if __name__ == "__main__":
    image = cv2.imread("image.jpg")
    imageNoise = saltPepper(image, 0.15, 0.15)
    gauImage = cv2.GaussianBlur(imageNoise, (11,11),0)
    images = [image, imageNoise, gauImage]
    showImages(images)

说明:

  • cv2.GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]])

src——输入图像

ksize——高斯模板大小

sigmaX——在X方向上的高斯模板标准偏移

borderType——像素外推方法

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值