一、最大值(max)滤波器
二、最小值(min)滤波器
二、均值滤波器
二、代码实现、效果
最大值滤波器
import cv2
import numpy as np
import copy
image_data = cv2.imread('pepperNoiseImg.jpg')
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')
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)
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')
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)
cv2.namedWindow("img",0)
cv2.namedWindow('img', cv2.WINDOW_KEEPRATIO)
cv2.imshow('img',np.hstack([img0,image_data]))
cv2.waitKey(0)