图像处理中的卷积

卷积是积分变换的方法,其在许多方面有广泛应用。卷积通过两个函数 f 和 g 生成第三个函数,可以看作是两个变量在某范围内相乘后求和的结果,设 f (x),g(x)是两个可积函数,作积分:

图像处理中的卷积

可以证明上述积分的存在性,随着x取值的不同,这个积分就定义了一个新的函数 h(x),称其为函数 f 与g的卷积,记为h(x) = (f *g)*(x)。式(2-1)中所示的是卷积在函数层面的表述定义,如果卷积的变量为离散的序列,则其结果为:

图像处理中的卷积

卷积在图像处理中经常被用于平滑、模糊、锐化、去噪、边缘????取等工作中。图像处理中的卷积操作,其实就是利用卷积核(模板)在目标图像上滑动,将图像上的像素点依次对应到卷积核的中间像素处,每个像素点对齐后将图像上的像素灰度值与卷积核对应位置上的数值相乘,然后将相乘后的所有值相加,相加的结果作为当前像素的灰度值,并最终滑动完所有图像像素点的过程。图 2-5 所示为图像卷积的一简单示例,图示中展示了原始图像像素点(1,1)对应的计算过程,其周围像素点值与卷积核对应位置值相乘再相加后的值即为卷积结果中位置(1,1)处的结果,卷积的整个过程需要将卷积核在原始图像上逐步滑动,每次滑动都作一次同样的相乘后相加的工作,滑动完成就可以得到最后的输出结果。

图 2-5 所示的卷积过程中,原始图像尺寸为 8*8,卷积核大小为 3*3,图中处理的第一个像素坐标为(1,1),如果只是按图中所示情况滑动卷积核的话,无法处理类似(0,0) 等处于原图像边缘的像素点,因为将这些边缘点对齐到卷积核中心后,卷积核的部分位置在原始图像中没有与其对应的位置,例如在原图像(0,0)与卷积核中心对齐后,卷积核的(0,0)位置需要对应到原始图像(-1,-1),这显然是不对的。图 2-5 中,去除无法处理的边缘点后,最后得到的卷积结果是 6*6 的图像,这与原图像尺寸不符。为了解决这个问题,在图像卷积中需要对边界进行扩展,使原始图像的所有位置均能够参与计算,图 2-5 所示的情况就需要将原始图像扩展至 10*10 大小,此时就可以得到与原始图像同样尺寸的卷积结果。

图像处理中的卷积

边界扩展的常用方法有:常量法、复制法和对称法等,图 2-6 展示了上述三种边界扩展的方法,原始图像的尺寸为 3*3,图示中将原始图像扩展至 7*7,也就是对边界扩展两个像素。常量法对扩展的边界值直接用常量填充,如图(a)中将常量 2 填充至需要扩展的边缘处;复制法对最边缘的像素复制填充至扩展边界,如图(b);对称法以最边缘像素为轴,对称填充扩展边界,如图(c),OpenCV中的图像卷积默认使用对称法扩展边界。

图像处理中的卷积

在图像处理中,不同的卷积核对图像有不同的作用,通过将图像与对应的卷积核做卷积,能够完成各类的图像处理问题,图 2-7 展示了几种常见的卷积核,其具体的使用不再做概述。

图像处理中的卷积