本次实验的目标主要是为了学会使用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)