自写函数__高斯滤波算法

自写函数–高斯滤波算法

高斯噪声

高斯噪声是指它的概率密度函数服从高斯(即正态分布)分布在这里插入图片描述

  • 一维高斯函数在这里插入图片描述在这里插入图片描述

  • 二维高斯函数
    在这里插入图片描述
    在这里插入图片描述

  • 高斯滤波作用
    高斯滤波器对于抑制服从正态分布的噪声非常有效

  • 什么是高斯滤波器
    高斯滤波器是一种线性滤波器,能够有效抑制噪声

算法步骤

第一步:根据高斯函数计算模板每个点的权重设定σ的值,假定σ=1.5,模版大小为3*3
在这里插入图片描述

  • 计算最终的权重矩阵(归一化)
    在这里插入图片描述

第二步:每个点乘以模版的权重值
在这里插入图片描述
第三步:求和
在这里插入图片描述

import cv2 as cv
import math
import numpy as np
img_g = np.array([[ 14,15,16],
                  [24,25,26],
                  [34,35,36]])
img_g

# 计算高斯卷积核
def gausskernel(size):
    sigma=1.5
    gausskernel=np.zeros((size,size),np.float32)
    for i in range (size):
        for j in range (size):
            norm = math.pow(i-1,2)+pow(j-1,2)
            coe = 1/(2*math.pi*math.pow(sigma,2))
            gausskernel[i,j]=coe*math.exp(-norm/(2*math.pow(sigma,2)))   # 
    print(gausskernel)        
    sum_= np.sum(gausskernel)   
    print(sum_)
    kernel=gausskernel/sum_   
    return kernel
# 高斯滤波
def gauss(img):
    h=img.shape[0]
    w=img.shape[1]
    img1=np.zeros((h,w),np.float16)
    kernel=gausskernel(3)   # 计算高斯卷积核
    for i in range (1,h-1):
        for j in range (1,w-1):
            sum_=0
            for k in range(-1,2):
                for l in range(-1,2):
                    ret = img[i+k,j+l]*kernel[k+1,l+1]
                    sum_+=img[i+k,j+l]*kernel[k+1,l+1]   # 高斯滤波
                    print(ret)
            img1[i,j]=sum_
    return img1
#
gau = gauss(img_g)
gau

结果在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值