实现图像滤波的数学计算方法是卷积(Convolution),有关数学概念和计算方式,请参考《AI数学基础26-卷积(Convolution)》。了解了卷积的数学原理后,可以编写一个卷积计算的代码,加深理解,如下:
池化计算,只需要在上述代码中加入下面的池化代码:
经过(2,2)池化后,可以看到,图像数据从510x510压缩到了255x255,图像数据为原来的四分之一,但特征并没有丢失,而且还得到了增强,如下图所示:
这也是为什么在卷积神经网络中,每个卷积层后面总是要加入一个池化层的原因。在有些文献中,会把卷积和池化合并起来,称作a set of convolution pooling layer。若有三个连续续的卷积池化层,则称作 three sets of convolution pooling layers。卷积和池化计算输出结果的可视化,请参见《可视化CNN隐藏层输出》
不同的Kernel请参考文献《Image Filtering》