图像卷积就是卷积核在图像上按行滑动遍历像素时不断的相乘求和的过程

步长就是卷积核在图像上移动的步幅. 上面例子中卷积核每次移动一个像素步长的结果, 如果将这个步长修改为2, 结果会如何?
| 为了充分扫描图片, 步长一般设为1. |

从上图例子中我们发现, 卷积之后图片的长宽会变小. 如果要保持图片大小不变, 我们需要在图片周围填充0. padding指的就是填充的0的圈数.


如果要保持卷积之后图片大小不变, 可以得出等式: ( N + 2 P − F + 1 ) = N (N + 2P - F + 1) = N (N+2P−F+1)=N 从而可以推导出 P = F − 1 2 P = \frac{F -1}{2} P=2F−1
图片卷积中, 卷积核一般为奇数, 比如 3 * 3, 5 * 5, 7 * 7.为什么一般是奇数呢, 出于以下两个方面的考虑:
# OpenCV图像卷积操作
import cv2
import numpy as np
#导入图片
img = cv2.imread('./dog.jpeg')
# 相当于原始图片中的每个点都被平均了一下, 所以图像变模糊了.
kernel = np.ones((5, 5), np.float32) / 25
# ddepth = -1 表示图片的数据类型不变
dst = cv2.filter2D(img, -1, kernel)
# 很明显卷积之后的图片模糊了.
cv2.imshow('img', np.hstack((img, dst)))
cv2.waitKey(0)
cv2.destroyAllWindows()
