数字图像处理课程实习——图像的平滑与锐化

本文介绍了使用Python进行图像处理的实验,包括添加高斯和椒盐噪声,然后应用均值滤波、中值滤波以及拉普拉斯算子进行图像平滑和锐化。实验表明,均值滤波对高斯噪声效果好,中值滤波对椒盐噪声效果佳。滤波窗口大小与去噪效果成正比,但可能导致图像模糊。通过对不同滤波器的比较,展示了它们在处理不同类型噪声时的优劣。
摘要由CSDN通过智能技术生成

        本次实验的目标主要是为了学会使用Python对图像作滤波处理,掌握相关滤波算法。对于给定图像添加噪声,能用平均滤波器、中值滤波器对不同强度的高斯噪声和椒盐噪声进行滤波处理。同时学会使用相关算子对图像作锐化处理,掌握相关锐化算法。

        本次实验主要完成了对原始图像添加指定强度的高斯噪声和椒盐噪声,使用拉普拉斯算子对图像进行锐化处理,使用中值滤波和均值滤波两种方式进行图像平滑处理并比较其对于高斯和椒盐两类噪声的平滑处理效果,使用不同掩膜大小的中值滤波和均值滤波对带有高斯噪声的图像进行平滑处理并比较不同掩膜大小对于图像平滑的效果影响。

以下为代码:

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


# 定义求卷积运算的函数
def convolution(img_old, kernel):
    #参数为输入图像和卷积模板
    img_new = np.zeros(img_old.shape, dtype=int)
    #生成与原图像等大的元素均为0的矩阵
    for i in range(1, img_new.shape[0] - 1):
        # 第一列和最后一列不用处理
        for j in range(1, img_new.shape[1] - 1):
            tmp = 0  # 初始化为0,用来求和
            for k in range(-1, 2):
                for l in range(-1, 2):
                    tmp += img_old[i + k][j + l] * kernel[k + 1][l + 1]
            img_new[i][j] = abs(tmp)
    return img_new #返回卷积运算后的图像

#定义高斯噪声的生成函数
def add_gaussian_noise(img, mean=0, sigma=25):
    #参数为输入图像,高斯噪声的均值与标准差
    gauss = np.random.normal(mean, sigma, img.shape)
    # 根据均值和标准差生成符合高斯分布的噪声
    image_gaussian = img + gauss
    # 给图片添加高斯噪声
    image_gaussian = np.clip(image_gaussian, a_min=0, a_max=255)
  
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值