参考博客:https://www.cnblogs.com/FHC1994/p/9097231.html
https://blog.csdn.net/wsp_1138886114/article/details/82872838#11__7
https://blog.csdn.net/wangleixian/article/details/78237597
https://www.zhihu.com/question/54918332/answer/142137732
一.图像的滤波处理
**过滤 :**是信号和图像处理中基本的任务。其目的是根据应用环境的不同,选择性的提取图像中某些认为是重要的信息。过滤可以移除图像中的噪音、提取感兴趣的可视特征、允许图像重采样等等。
**频域分析 :**将图像分成从低频到高频的不同部分。低频对应图像强度变化小的区域,而高频是图像强度变化非常大的区域。在频率分析领域的框架中,滤波器是一个用来增强图像中某个波段或频率并阻塞(或降低)其他频率波段的操作。低通滤波器是消除图像中高频部分,但保留低频部分。高通滤波器消除低频部分。
- 滤波(高通、低通、带通、带阻) 、模糊、去噪、平滑等。
1、均值模糊(低通滤波)、中值模糊(中值滤波)、用户自定义模糊
import cv2
import numpy as np
def blur_demo(image):
"""
均值模糊 : 去随机噪声有很好的去噪效果
(1, 15)是垂直方向模糊,(15, 1)是水平方向模糊
"""
dst = cv2.blur(image, (1, 15))
cv2.imshow("avg_blur_demo", dst)
def median_blur_demo(image): # 中值模糊 对椒盐噪声有很好的去燥效果
dst = cv2.medianBlur(image, 5)
cv2.imshow("median_blur_demo", dst)
def custom_blur_demo(image):
"""
用户自定义模糊
下面除以25是防止数值溢出
"""
kernel = np.ones([5, 5], np.float32)/25
dst = cv2.filter2D(image, -1, kernel)
cv2.imshow("custom_blur_demo", dst)
src = cv2.imread("C:\\Users\\Tony.Hsu\\Desktop\\cat.jpg")
img = cv2.resize(src, None, fx=0.8, fy=0.8, interpolation=cv2.INTER_CUBIC)
cv2.imshow('input_image', img)
blur_demo(img)
median_blur_demo(img)
custom_blur_demo(img)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果如下:
注意:
- 均值滤波是典型的线性滤波算法,它是指在图像上对目标像素给一个模板,该模板包括了其周围的临近像素(以目标像素为中心的周围8个像素,构成一个滤波模板,即去掉目标像素本身),再用模板中的全体像素的平均值来代替原来像素值。