数字图像处理python实现-图像去噪之空间域平滑线性滤波

本文介绍了图像去噪中的空间域线性滤波方法,包括均值滤波、谐波均值滤波和有选择保边缘平滑滤波。详细讨论了算术均值滤波在高斯噪声处理中的应用,以及如何通过特殊方法在保边缘的同时去除椒盐噪声。代码示例展示了滤波效果。
摘要由CSDN通过智能技术生成

平滑线性滤波器

图像去噪这一块内容庞杂,我本来打算和形态学处理一样用一篇博客介绍完整,但是当所有目录列出来后,还是打算分4篇博客进行介绍分别为空间域3篇和频率域1篇

这篇博客主要是空间域线性滤波

噪声类型为:

  1. 高斯噪声,
  2. 白噪声,
  3. 胡椒噪声,

效果方面为:

  1. 不(或者是非刻意)保边缘
  2. 保边缘

均值滤波

善于高斯噪声,其中分为两类均值滤波分别为:算术均值几何均值

算术均值:即求模板内的像素值平均值,理解:

  1. 假如当前点为平滑区域的点,那么与周围像素一起算均值后,其值必定保持不变
  2. 假如当前点为噪声点,那么与周围像素一起算均值后,其值必定减小,达到去噪效果
  3. 如果当前点为边缘区域的点,那么与周围像素一起算均值后,其值必定减小,则使得边缘变得模糊

几何均值:算是一个鸡肋滤波,基本无法使用,虽然可以有保边缘的作用,但是效果并不突出,在博客后面我补充了一个新的保边缘滤波故这里不做介绍

故算术均值滤波去高斯噪声不保边缘
代码如下: 其中不包含

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


def show(f, s, a, b, c):
    plt.subplot(a, b, c)
    plt.imshow(f, "gray")
    plt.axis('on')
    plt.title(s)


# 高斯噪声函数单行
def wgn(x, snr):
    snr = 10 ** (snr / 10.0)
    xpower = np.sum(x ** 2) / len(x)
    npower = xpower / snr
    return np.random.randn(len(x)) * np.sqrt(npower)


def main():
    original = plt.imread("lena.tiff", 0)
    rows, cols = original.shape
    original_noise = original.copy().astype(np.float64)

    # 生成噪声图像,信噪比为10
    for i in range(cols):
        original_noise[:, i] += wgn(original_noise[:, i], 10)

    mask = np.ones(9).reshape(3, 3)
    ImageDenoise = np.zeros(original.shape)
    for i in range(1, rows - 1):
        for j in range(1, cols - 1):
            ImageDenoise[i, j] = np.mean(original[i - 1:i + 
  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值