目录
1. 卷积核的概念
在数字图像处理中,一个滤波器核(kernel)是一个小(微)矩阵,又称卷积矩阵(convolution matrix),卷积核,或掩模(mask)(注:掩盖在其上再对覆盖部分进行计算)。常用于模糊(blurring)、锐化(sharpening)、浮雕(embossing)、边缘检测(edge detection)、降噪(reducing noise)等,这些应用是通过在核和图像之间进行卷积来实现的(在空间域)。或者更简单地说,当输出图像中的每一个像素都是输入图像中其邻近像素(包括其自身)的函数时,核就是该函数。有人喜欢称其为核,大概是因为它的性质唯一确定了输出图像的处理效果。在许多常见的图像处理操作中,输出像素是输入像素邻域内像素灰度值的加权组合,因此称为局部邻域运算。邻域的大小和像素权重决定了算子(operator)(算符)的操作。
在本质上,这个微小的内核位于大图像的顶部,从左到右、从上到下滑动,对原始图像中的每一个 (x, y) 坐标进行数学运算。核或卷积矩阵作为一个微小矩阵,是相对于源“大矩阵”图像而言的。如图:
核函数是一个小矩阵,它在较大的图像中从左到右、从上到下滑动。对于输入图像中的每一个像素,以图像在该像素的邻域(含中心像素本身)与核函数进行卷积,并将输出存储起来。
我们将这个核沿着源图像从左到右、从上到下滑动。在源图像的每一个 ( x, y ) 坐标处,我们停下来检查位于图像核中心的图像像素邻域。
我们可以取这个邻域像素(含中心像素本身),将它们与核进行卷积,得到一个输出值。然后,该输出值存储在输出图像中与核中心相同的 (x, y) 坐标处。
核可以是任意大小的 M × N 像素,只要 M 和 N 都是奇数,即可始终确保核中心有一个有效的 (x, y) 坐标。
2. 滤波表达式
常用滤波的卷积表达式为
,
其中,g(x ,y) 是滤波后的输出图像,f (x ,y) 是源图像,ω 是滤波核。滤波器中的每一个元素都由 -a ≤ i ≤ a 和 -b ≤ j ≤ b 确定。
3. 理解卷积核
二维核或滤波器只是一个 n × n 的矩阵,它覆盖图像的每一个块。每一个块只是图像中以某一个像素为中心的一个 n × n 的小区域。
您可以在下面看到围绕像素值为 47 的 3 × 3 矩阵块(这是该矩阵块的原点或中心像素)。
图像可以包含低频信息或高频信息:
低频信息:如果图像平滑且纹理较少,则包含低频信息。
高频信息:如果图像包含大量纹理(例如角点、边缘等),则包含高频信息。
根据我们想要实现的目标,我们可以执行两种类型的滤波。
低通滤波:图像模糊/平滑属于此类。如果对图像进行模糊处理,实际上是在平滑纹理。顾名思义,低通滤波允许低频信息通过,并阻止高频信息通过。
高通滤波:图像锐化和边缘增强等属于此类。顾名思义,低频信息被阻止,高频信息通过。
我们可以在整个图像周围添加零填充(视为边界恒定),以便在不丢失信息的情况下计算图像的核卷积。如下图所示:
你可以在下方看到一个动画,它展示了应用锐化卷积或高通滤波器时发生的情况。您可以看到核如何与图像的整个块(在本例中为 3×3)相乘,然后取平均值,并将结果放回到新的输出图像的原点。
注意:对于彩色图像,上述卷积运算在每个通道上分别执行。
现在一般有两种类型的过滤器:
(1) 线性滤波器:目前大多数滤波器都是线性滤波器,它们对图像块的中心和周围像素进行线性组合。这种组合可以简单到将它们全部相加,也可以采用某种乘法。例如:
y = ax + c 。
(2) 非线性滤波器:这些滤波器使用滤波器和矩阵块执行非线性数学运算。一些非线性方程如下:
。
4. 卷积操作
在图像处理中,卷积需要 3 个组件:
(1) 输入图像。
(2) 我们将应用于输入图像的核矩阵。
(3) 输出图像,用于存储输入图像与核进行卷积后的输出。
卷积只是核与核覆盖的输入图像部分的邻域之间的元素矩阵乘法的总和:
(1) 从源图像中选择一个 ( x, y ) 坐标。
(2) 将核的中心置于此 ( x, y ) 坐标上。
(3) 将每一个核值乘以相应的输入图像像素值,然后对所有乘法运算求和。(更简单地说,我们对输入图像区域和核进行元素级乘法,然后将所有这些乘法运算的值相加为一个值。这些乘法的和称为核输出。)
(4) 使用与步骤 (1) 相同的 (x, y) 坐标,将核输出存储在输出图像的 (x, y) 位置。
与简单的算术函数不同的是,它们需要推断(extrapolate)一些不存在像素的值。例如,如果要使用Gauss滤波器平滑图像,那么在处理每行最左侧的像素时,需要它们左侧(即图像外部)的像素。你可以让这些像素与最左侧的图像像素相同(“复制边界”推断法),或者假设所有不存在的像素都为零(“恒定边界”推断法),等等。
5. 基本卷积核
5.1 恒等核
恒等核是最简单的卷积核类型。它本质上保持输入图像不变,作为确保卷积运算正确运行的基准。
,
将此核应用于图像时,其输出图像保持不变,因为每一次计算时中心像素以外的像素全为0,输出图像在本位置处的像素不变。
5.2 边缘检测核
边缘检测核用于突出显示图像中的边缘。这些核会强调强度变化较大的区域,这些区域对应于边缘。边缘检测核有多种变体,但最常见的是水平和垂直边缘检测核。
(1) 水平边缘检测核
该核通过突出显示垂直方向上强度发生显著变化的区域来检测水平边缘。
。
(2) 垂直边缘检测核
该核通过强调水平方向强度发生显著变化的区域来检测垂直边缘。
。
5.3 锐化核
锐化内核旨在增强图像的边缘和细节,使图像看起来更清晰,轮廓更分明。它的工作原理是放大像素强度的差异。
。
将此内核应用于图像会增加边缘周围的对比度,使其更加明显。
5.4 箱式模糊核(Box Blur Kernel)
箱式模糊核(也称为平均滤波器)用于模糊图像。它通过平均核区域内的像素值来实现模糊,从而平滑图像并降低噪点。
。
该核为核窗口中的每一个像素分配相同的权重,从而产生均匀的模糊效果。
6. 高级卷积核
高级卷积核专为更复杂的图像处理任务而设计。这些核有助于降噪、精确边缘检测和纹理分析等功能。它们在增强和提取图像中的复杂细节方面发挥着至关重要的作用。
6.1 Gauss模糊核
Gauss模糊核用于通过加权Gauss分布对像素值进行平均来减少图像噪点和细节。该核有助于创建平滑的模糊效果,从而最大限度地减少图像中的高频噪声。
。
该内核为中心像素分配更高的权重,并逐渐降低周围像素的权重,从而产生更自然的模糊。
6.2 Sobel核
Sobel 核通过强调梯度来检测图像的边缘。它们计算图像强度在水平和垂直方向上的一阶导数,因此非常适合边缘检测。
(1) Sobel 核(水平)
该核通过强调水平梯度来检测水平边缘。
。
(2) Sobel 核(垂直)
该核通过强调垂直梯度来检测垂直边缘。
。
6.3 Prewitt核
Prewitt 核与 Sobel 核类似,用于边缘检测。它们计算水平和垂直方向的梯度,从而提供一种简单的图像边缘检测方法。
(1) Prewitt核(水平)
该核通过强调水平梯度来检测水平边缘。
。
(2) Prewitt核(垂直)
该核通过强调垂直梯度来检测垂直边缘。
。
6.4 Laplace核
Laplace核是用于边缘检测的二阶导数算子。它突出显示强度快速变化的区域,尤其适用于在噪声图像中查找边缘。
。
该内核计算图像的二阶导数,通过突出显示强度快速变化的区域来提供一种精确的边缘检测方法。
7. 专用卷积核
专用卷积核专为图像处理和计算机视觉中的特定任务和应用而设计。这些卷积核超越了基本和高级运算,能够提供更集中、更复杂的特征提取、纹理分析和边缘检测功能。
7.1 Gabor核
Gabor 核用于纹理分析和特征提取。它们在边缘检测和纹理识别方面尤其有效。Gabor 核结合了Gauss函数和正弦波,使其能够同时捕捉空间和频率信息。
Gabor核由以下公式定义:
。
其中:
•
•
• λ 表示正弦波因子的波长
• θ 是 Gabor 函数平行条纹的垂线方向。
• ψ 是相位偏移量(即初始位置)
• σ 是Gauss包络(envelope)的标准差
• γ 是空间纵横比(spatial aspect ratio)
7.2 Scharr核
Scharr 核与 Sobel 核和 Prewitt 核类似,但具有更好的旋转对称性和更精确的边缘检测能力。它们用于以更高的精度检测边缘,因此适用于需要详细边缘信息的应用。
(1) Scharr核(水平)
该内核更精确地强调强度的水平变化。
。
(2) Scharr核(垂直)
该内核更精确地强调了强度的垂直变化。
8. 卷积核的应用
卷积核应用于各个领域,包括:
• 图像处理:增强图像、检测边缘和消除噪点。
• 计算机视觉:物体检测、面部识别和场景理解。
• 医学成像:分析医学图像以进行疾病检测和诊断。
• 机器人技术:使机器人能够感知和理解其周围环境。