一、最大值(max)滤波器

在这里插入图片描述

二、最小值(min)滤波器

在这里插入图片描述

二、均值滤波器

在这里插入图片描述

二、代码实现、效果

最大值滤波器

import cv2
import numpy as np
import copy

image_data = cv2.imread('pepperNoiseImg.jpg')
# 使用3*3的矩形框取值
img0 = copy.copy(image_data)
for n in range(1,image_data.shape[0]-1):
    for m in range(1,image_data.shape[1]-1):
        for k in range(image_data.shape[2]):
            a = img0[n-1:n+2, m-1:m+2,k]
            image_data[n,m,k] = np.max(a)

cv2.namedWindow("img",0)
cv2.namedWindow('img', cv2.WINDOW_KEEPRATIO)
cv2.imshow('img',np.hstack([img0,image_data]))
cv2.waitKey(0)

在这里插入图片描述

最小值滤波器

import cv2
import numpy as np
import copy

image_data = cv2.imread('saltNoiseImg.jpg')
# 使用3*3的矩形框取值
img0 = copy.copy(image_data)
for n in range(1,image_data.shape[0]-2):
    for m in range(1,image_data.shape[1]-2):
        for k in range(image_data.shape[2]):
            a = img0[n-1:n+2, m-1:m+2,k]
            image_data[n,m,k] = np.min(a)
            # print(image_data[n,m,k],img0[n,m,k])

cv2.namedWindow("img",0)
cv2.namedWindow('img', cv2.WINDOW_KEEPRATIO)
cv2.imshow('img',np.hstack([img0,image_data]))
cv2.waitKey(0)

在这里插入图片描述

均值滤波

import cv2
import numpy as np
import copy

image_data = cv2.imread('gaussianNoiseImg.jpg')
# 使用3*3的矩形框取值
img0 = copy.copy(image_data)
for n in range(1,image_data.shape[0]-1):
    for m in range(1,image_data.shape[1]-1):
        for k in range(image_data.shape[2]):
            a = img0[n-1:n+2, m-1:m+2,k]
            max = np.max(a)
            min = np.min(a)
            image_data[n,m,k] = int(max/2) + int(min/2)#会出现灰度值超255的情况,需要先对其取整
            # print(image_data[n,m,k],img0[n,m,k])

cv2.namedWindow("img",0)
cv2.namedWindow('img', cv2.WINDOW_KEEPRATIO)
cv2.imshow('img',np.hstack([img0,image_data]))
cv2.waitKey(0)

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐