卷积操作示例
我们在图像处理中遇到的数字图像通常分为两种:
单色(灰度)图像:每个像素的亮度用一个数值来表示,取值范围0-255,0表示黑、255表示白,其他值表示处于黑白之间的灰度
彩色图像:用红、绿、蓝三组数据来表示。每一组的每个数值也是在0-255之间,0表示相应的基色在该像素中没有,而255表示相应的基色在该像素中取得最大值。
以简单的灰度图像为例,每一张图像都可以看作是由像素值构成的二维矩阵。我们平时熟悉的平移、虚化、锐化等操作在这一层面上是如何实现的,其实,都离不开一个操作:卷积。
我们首先通过卷积来理解一些对图像的简单操作:
平移
对图像的平移,在微观层面就是,把每一个像素都往同一个方向移动同样的距离。卷积是如何实现这一操作的呢?如图所示:
原来的图像与中间的卷积核进行卷积操作之后便得到了向左平移一个像素之后的照片。卷积操作使得某一位置的像素值等于原来在它右边位置的像素值,如此便完成了向左的平移。
虚化(平滑)
某一位置的像素值,在经过卷积操作之后,变成原本周围9个像素值的平均值,如此便达到了平滑的效果。
锐化
锐化的操作比较复杂,我们慢慢来看。锐化操作可以分为两步,首先,将原本的图像“减去”平滑后的图像,得到的就是一些边缘的信息,把这些边缘的信息叠加到原本的图像当中,就使得边缘更加明显,从而达到了锐化的效果,如图所示:
以上,我们可以看出,通过设计不同的卷积核(包括卷积核的大小还有各个元素的值),与图像进行卷积之后,可以得到多样的效果。
去噪
高斯滤波
其实上文提到的平滑操作就是一个简单的去噪,卷积之后“平滑”掉了一些过大、过小的值,这一去噪方式(对卷积核覆盖区域取均值)会产生一种名叫“振铃”的效应,使得去噪结果不是很好。在实际当中,我们使用更多的是“高斯去噪”——即卷积核的元素值符合高斯分布。
提到高斯分布,我们首先想到的是这两个参数——均值和方差。对于均值的设定,我们需要从另一个角度进行考虑:卷积核内所有权值之和应该保证为1,因为如果大于1或小于1,在进行卷积操作之后(本质上是加权求和的计算),就会改变图像整体的亮度,也就是像素值会进行了整体的偏移,所以卷积核的权值之和应该保证为1,从而均值也就跟着确定了。
在图像卷积中更重要的是另一个参数——方差,对于方差,我们知道,方差越小,数据越稳定,也就是数据分布更集中一些,方差越大,数据分布也就越分散,如图所示:
从中我们可以看到,在卷积核大小一样时,方差越大,卷积核给边缘值的权重也会越大,因此,从卷积效果上来说,对图像平滑的也就更厉害。因此,需要根据现实中对平滑效果的需求来选择卷积核方差的大小。
除了卷积核权值分布符合高斯分布之外,卷积核的大小也是一个重要的参数,在实际中,通常依据 3 − σ 3-\sigma 3−σ准则将卷积核大小设置为 ( 2 × 3 σ + 1 ) × ( 2 × 3 σ + 1 ) (2\times3\sigma+1)\times(2\times3\sigma+1)