当前位置:   article > 正文

均值滤波-----python_均值滤波python

均值滤波python

平滑线性滤波器的输出(响应)是包含在滤波器模板邻域内的像素简单平均值。这些滤波器有时也称为均值滤波器。它使用滤波器模板确定的邻域内像素的平均灰度值代替图像中每个像素的值,这种处理的结果降低了图像灰度的尖锐变化。由于典型的随机噪声由灰度级的急剧变化组成,因此,常见的平滑处理应用就是降低噪声。然而,由于图像边缘也是由图像灰度尖锐变化带来的特性,所以均值滤波处理还是存在着不希望有的边缘模糊的负面效应
代码实现:

import cv2 as cv
import numpy as np
import math
import copy
from skimage import io
import random

def spilt(a):
    if a / 2 == 0:
        x1 = x2 = a / 2
    else:
        x1 = math.floor(a / 2)
        x2 = a - x1
    return -x1,x2

def salt_and_pepper_noise(img, proportion=0.05):
    noise_img = img
    height, width = noise_img.shape[0], noise_img.shape[1]
    num = int(height * width * proportion)  # 多少个像素点添加椒盐噪声
    for i in range(num):
        w = random.randint(0, width - 1)
        h = random.randint(0, height - 1)
        if random.randint(0, 1) == 0:
            noise_img[h, w] = 0
        else:
            noise_img[h, w] = 255
    return noise_img

def original(i, j, k, a, b, img):
    x1, x2 = spilt(a)
    y1, y2 = spilt(b)
    temp = np.zeros(a * b)
    count = 0
    for m in range(x1, x2):
        for n in range(y1, y2):
            if i + m < 0 or i + m > img.shape[0] - 1 or j + n < 0 or j + n > img.shape[1] - 1:
                temp[count] = img[i, j, k]
            else:
                temp[count] = img[i + m, j + n, k]
            count += 1
    return temp

def average_function(a, b, img):
    img0 = copy.copy(img)
    for i in range(0, img.shape[0]):
        for j in range(2, img.shape[1]):
            for k in range(img.shape[2]):
                temp = original(i, j, k, a, b, img0)
                img[i, j, k] = int(np.mean(temp))
    return img


if __name__ == "__main__":

    img = io.imread(r"E:/pythontupian/5.jpg")
    cv.imshow("original", img)
    noise_img = salt_and_pepper_noise(img)
    cv.imshow("noise_img", noise_img)
    ave_img = average_function(3, 3, copy.copy( noise_img))  # (3,3)滤波器大小
    cv.imshow("ave_img", ave_img)
    cv.waitKey(0)
    cv.destroyAllWindows()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63

结果展示:
原图
在这里插入图片描述
加椒盐噪声后
在这里插入图片描述
均值滤波后
在这里插入图片描述
空间均值处理的一个重要应用是为了对感兴趣的物体得到一个粗略而模糊的一幅图像,这样,那些较小物体的灰度就与背景混合在一起了,较大的物体变的像“斑点”而易于检测。可以看出,均值滤波就是得到了一幅模糊的图像,在降低噪声方面效果不是很好。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/878232
推荐阅读
相关标签
  

闽ICP备14008679号