首先是简单的一维离散卷积
Input设置为 X,Kernel为W

假设第一行为X,第二行为W就有
空余...2
(X1W1+X2W2+X3W3)/3=2
(X2W1+X3W2+X4W3)/3=3
(X3W1+X4W2+X5W3)/3=5
.
.
.
(Xn-2W1+Xn-1W2+XnW3)/3=5
空余...1
二维离散卷积

均值滤波的计算就是:先把目标像素对应的 3×3 邻域内的所有元素相加,然后再乘以 1/9(本质上就是 "邻域和 ÷ 9"),得到的结果就是滤波后该位置的像素值。
延申:
dst=cv.blur(image,(2,2))
cv.blur() 是 OpenCV 封装好的专用均值滤波函数,它的设计就是 "求邻域平均值",所以核的规则是硬编码的:
- 第一步:先创建一个
h×w大小的核(h=2,w=2 时就是 2×2); - 第二步:核里的每一个元素都被自动赋值为 1/(h×w)(2×2 时每个元素都是 1/4,3×3 时都是 1/9);
- 第三步:你无法通过 cv.blur () 修改核的元素值,它只能做 "均值滤波" 这一件事。