高通滤波可以找到图像的边缘。低通滤波可以去除噪音,模糊图像。

- import cv2
- import numpy as np
- from matplotlib import pyplot as plt
-
- img = cv2.imread('img1.png')
- img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
- kernel = np.ones((5, 5), np.float32) / 25
- dst = cv2.filter2D(img, -1, kernel)
-
- plt.subplot(121), plt.imshow(img), plt.title('Original')
- plt.xticks([]), plt.yticks([])
- plt.subplot(122), plt.imshow(dst), plt.title('Averaging')
- plt.xticks([]), plt.yticks([])
-
- plt.show()

使用低通滤波器可以达到图像模糊的目的(就是去除图像中的高频成分(比如:噪音,边界))

- import cv2
- from matplotlib import pyplot as plt
-
- img = cv2.imread('img1.png')
- blur = cv2.blur(img, (5, 5))
- img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
- blur=cv2.cvtColor(blur,cv2.COLOR_BGR2RGB)
-
- plt.subplot(121), plt.imshow(img), plt.title('Original')
- plt.xticks([]), plt.yticks([])
- plt.subplot(122), plt.imshow(blur), plt.title('Blurred')
- plt.xticks([]), plt.yticks([])
- plt.show()

高斯核可以有效去除高斯噪音

- import cv2
- from matplotlib import pyplot as plt
-
- img = cv2.imread('img1.png')
- # 0 是指根据窗口大小 (5,5) 来计算高斯函数标准差
- blur = cv2.GaussianBlur(img, (5, 5), 0) # 高斯模糊
- img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
- blur=cv2.cvtColor(blur,cv2.COLOR_BGR2RGB)
-
- plt.subplot(121), plt.imshow(img), plt.title('Original')
- plt.xticks([]), plt.yticks([])
- plt.subplot(122), plt.imshow(blur), plt.title('Blurred')
- plt.xticks([]), plt.yticks([])
- plt.show()

使用像素的中值替代像素的值。这个可以去除椒盐噪声。
- import cv2
- from matplotlib import pyplot as plt
-
- img = cv2.imread('img1.png')
- blur = cv2.medianBlur(img, 5) # 中值模糊
- img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
- blur=cv2.cvtColor(blur,cv2.COLOR_BGR2RGB)
-
- plt.subplot(121), plt.imshow(img), plt.title('Original')
- plt.xticks([]), plt.yticks([])
- plt.subplot(122), plt.imshow(blur), plt.title('Blurred')
- plt.xticks([]), plt.yticks([])
- plt.show()
