任意一点的像素值,都是周围N*N个像素值的均值
函数blur:处理结果 = cv2.blur(原始图像, 核大小)
cv2.blur(image, (5,5))
函数boxFilter:处理结果 = cv2.boxFilter(原始图像, 目标图像深度, 核大小, normalize属性)
目标图像深度:int类型的目标图像深度。通常使用“-1”表示与原始图像一致
normalize属性:是否对目标图像进行归一化处理
- normalize = true时,与均值滤波相同
- normalize = false时,很容易发生溢出
d s t ( x , y ) = 1 α s r c ( x , y ) dst(x,y)=\frac{1}{α}src(x,y) dst(x,y)=α1src(x,y)
α = { 1 w i d t h ∗ h e i g h t n o r m a l i z e = t r u e 1 n o r m a l i z e = f a l s e α=\begin{cases} \frac{1}{width*height} \quad normalize=true \\ \quad \quad 1 \quad \quad \quad normalize=false \end{cases} α={width∗height1normalize=true1normalize=false
cv2.boxFilter(image, -1, (5,5)) # 默认normalize=1
让临近的像素具有更高的重要度,对周围像素计算加权平均值,较近的像素具有较大的权重值
GaussianBlur函数:dst = cv2.GaussianBlur(src, ksize, sigmaX)
- ksize:核大小,必须是奇数
- sigmaX:X方向方差,控制权重
- sigmaX=0时:sigma = 0.3 * ((ksize - 1) * 0.5 - 1) + 0.8
cv2.GaussianBlur(image, (3, 3), 0)
让临近的像素按照大小排列,取排序像素集中位于中间位置的值作为中值滤波后的像素值
medianBlur函数:dst = cv2.medianBlur(src, ksize)
- ksize:核大小,必须是比1大的奇数
cv.medianBlur(image, 3)
"""
均值滤波
"""
import cv2
color = cv2.imread('image/color.jpg')
cv2.imshow('color', color)
dst = cv2.blur(color, (3, 3))
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
"""
方框滤波
"""
import cv2
color = cv2.imread('image/color.jpg')
cv2.imshow('color', color)
dst = cv2.boxFilter(color, -1, (2, 2), normalize=0)
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
"""
高斯滤波
"""
import cv2
color = cv2.imread('image/color.jpg')
cv2.imshow('color', color)
dst = cv2.GaussianBlur(color, (3, 3), 0)
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
"""
中值滤波
"""
import cv2
color = cv2.imread('image/color.jpg')
cv2.imshow('color', color)
dst = cv2.medianBlur(color, 3)
cv2.imshow('dst', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()