目录:
1.滤波的相关概念
2.卷积操作
3.平滑操作(低通滤波)
均值滤波
中值滤波
高斯滤波
双边滤波
4.锐化操作(高通滤波)
自定义锐化核
USM锐化(UnsharpMask)
5.梯度操作(高通滤波)
Sobel算子
Scharr算子
Laplacian算子
一、滤波的概念
滤波是将信号中特定波段频率滤除的操作,是抑制和防止干扰的一项重要措施。
图像滤波是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性。图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制。图像滤波的目的:
1.消除图像中混入的噪声;
2.为图像识别抽取出图像特征。
滤波可分为 低通滤波、高通滤波、中通滤波、阻带滤波。
低通滤波/平滑滤波:减弱或阻隔高频信号,保留低频信号。可使图像变模糊,主要用于去噪。
高通滤波:减弱或阻隔低频信号,保留高频信号。一般用于获取图像边缘、轮廓或梯度。
中通滤波:获取已知频率范围内的信号。
阻带滤波:去掉已知频率范围内的信号。
二、卷积操作
图像的滤波操作一般用卷积操作来实现,卷积核一般称为滤波器。
卷积操作:图像卷积可以看成是一个滑动的窗口(卷积核)在一个比它大的图像上有规则(从左向右,从上往下)地滑动,对每一次窗口覆盖到的图像子区域都会进行点乘操作,并将得到的值作为原图中被窗口覆盖区域的中心像素点的新值。
与CNN里的卷积不同,经典的卷积算子(即卷积核)往往是人们根据研究和经验事先设定好的特征提取算子,而CNN里的卷积核是通过训练不断调整最终得到合适的权值参数。
函数:
1.卷积操作
filter2D(src, ddepth, kernel, dst=None, anchor=None, delta=None, borderType=None)
参数:
ddepth:图像深度。ddepth=-1表示目标图像与原始图像使用相同的图像深度
示例:
import cv2
import numpy
img = cv2.imread("image/1.jpg")
# 1.定义一个卷积核
kernel = numpy.float32([[1, 1, 0], [1, 0, -1], [0, -1, -1]])
# 2.卷积操作
dst = cv2.filter2D(img, -1, kernel)
cv2.imshow("iamge", img)
cv2.imshow("dst"