数字图像处理与深度学习-实验3(python)

一、实验目的和要求

  1. 理解邻域运算的实现原理。
  2. 理解图像平滑滤波的用途与实现方法。
  3. 理解图像锐化滤波的用途与实现方法。

二、实验内容和步骤

1. 图像加噪声函数列举如下,选择调用相关函数,编写Python程序完成下列图像处理要求:

(1)train1.jpg图像加入高斯噪声,然后分别采用3╳3滤波核和7╳7滤波核进行均值滤波,将原图像、添加噪声的图像、不同滤波核滤波后的图像放置在同一绘图区域并保存。

(2)train1.jpg图像加入高斯噪声,分别采用5╳5滤波核的高斯滤波和均值滤波,将原图像、添加噪声的图像、不同滤波算法滤波后的图像放置在同一绘图区域并保存。

(3)lena.jpg图像添加椒盐噪声,变换阈值邻域平滑滤波的阈值参数,比较均值滤波和阈值邻域平滑滤波的效果,结果显示在同一绘图区域。

(4)为train1.jpg图像加入椒盐噪声,分别采用5╳5滤波核的中值滤波和均值滤波,将原图像、添加噪声的图像、不同滤波算法滤波后的图像放置在同一绘图区域并保存。


定义高斯噪声函数

def addGaussianNoise(src,mu,sigma):
    NoiseImg=src.copy()
    NoiseImg=NoiseImg/NoiseImg.max()
    rows,cols=NoiseImg.shape[:2]
    for i in range(rows):
        for j in range(cols):
            #python里使用random.gauss函数加高斯噪声
            NoiseImg[i,j]=NoiseImg[i,j]+random.gauss(mu,sigma) 
            if NoiseImg[i,j]< 0:
               NoiseImg[i,j]=0
            elif NoiseImg[i,j]>1:
               NoiseImg[i,j]=1
    NoiseImg=np.uint8(NoiseImg*255)
    return NoiseImg
  • src.copy() :在图像处理中,src.copy() 通常用于创建一个原始图像 src 的副本,并将其存储在另一个变量中,以便在不改变原始图像的情况下对其进行修改或添加噪声。
  • NoiseImg = NoiseImg / NoiseImg.max() 在图像处理中,对图像进行归一化处理是一种常见的预处理步骤。NoiseImg = NoiseImg / NoiseImg.max() 这行代码就是对图像 NoiseImg 进行归一化,将图像的像素值缩放到 0 到 1 的范围内。具体来说,NoiseImg.max() 计算了图像中所有像素值的最大值。然后,通过将每个像素值除以这个最大值,你确保了图像中所有像素的新值都在 0 到 1 之间。
  • rows, cols = NoiseImg.shape[:2] NoiseImg.shape[:2] 是一个切片操作,它获取 NoiseImg.shape 元组的前两个元素,即 rows 和 cols。这样,rows 和 cols 分别被赋值为图像的行数和列数。
  • NoiseImg[i, j] = NoiseImg[i, j] + random.gauss(mu, sigma)将一个符合高斯分布的随机数加到 NoiseImg 图像在坐标 (i, j) 处的像素值上。
  •       if NoiseImg[i,j]< 0:

                 NoiseImg[i,j]=0

           elif NoiseI

你可能感兴趣的:(数字图像处理与深度学习,计算机视觉,图像处理,人工智能,python)