当前位置: 首页 > news >正文

数字图像处理——滤波器核(kernel)

目录

1.  卷积核的概念

2.  滤波表达式

3.  理解卷积核

4.  卷积操作

5.  基本卷积核

5.1  恒等核

5.2  边缘检测核

5.3  锐化核

5.4  箱式模糊核(Box Blur Kernel)

6.  高级卷积核

6.1  Gauss模糊核

6.2  Sobel核

6.3  Prewitt核

6.4  Laplace核

7.  专用卷积核

7.1  Gabor核

7.2  Scharr核

8.  卷积核的应用


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.  滤波表达式

    常用滤波的卷积表达式为

\displaystyle g_{x,y} = \omega * f_(x,y) = \sum_{i=-a}^{a}\sum_{i=-b}^{b}\omega_{i,j} f_{x-i,y-i}  ,

其中,g(x ,y) 是滤波后的输出图像,f (x ,y) 是源图像,ω 是滤波核。滤波器中的每一个元素都由 -a ia  和 -b jb 确定。

3.  理解卷积核

    二维核或滤波器只是一个 n × n 的矩阵,它覆盖图像的每一个块。每一个块只是图像中以某一个像素为中心的一个 n × n 的小区域。

    您可以在下面看到围绕像素值为 47 的 3 × 3 矩阵块(这是该矩阵块的原点或中心像素)。

图像可以包含低频信息或高频信息:

低频信息:如果图像平滑且纹理较少,则包含低频信息。

高频信息:如果图像包含大量纹理(例如角点、边缘等),则包含高频信息。

    根据我们想要实现的目标,我们可以执行两种类型的滤波。

低通滤波:图像模糊/平滑属于此类如果对图像进行模糊处理,实际上是在平滑纹理。顾名思义,低通滤波允许低频信息通过,并阻止高频信息通过。

高通滤波:图像锐化和边缘增强等属于此类。顾名思义,低频信息被阻止,高频信息通过。

我们可以在整个图像周围添加零填充(视为边界恒定),以便在不丢失信息的情况下计算图像的核卷积。如下图所示:

你可以在下方看到一个动画,它展示了应用锐化卷积或高通滤波器时发生的情况。您可以看到核如何与图像的整个块(在本例中为 3×3)相乘,然后取平均值,并将结果放回到新的输出图像的原点。

 

注意:对于彩色图像,上述卷积运算在每个通道上分别执行。

现在一般有两种类型的过滤器:

(1) 线性滤波器:目前大多数滤波器都是线性滤波器,它们对图像块的中心和周围像素进行线性组合。这种组合可以简单到将它们全部相加,也可以采用某种乘法。例如:

y = ax  + c

(2) 非线性滤波器:这些滤波器使用滤波器和矩阵块执行非线性数学运算。一些非线性方程如下:

 z = ax^{2} + by^{2}  。

4.  卷积操作

    在图像处理中,卷积需要 3 个组件:

(1) 输入图像。

(2) 我们将应用于输入图像的核矩阵。

(3) 输出图像,用于存储输入图像与核进行卷积后的输出。

卷积只是核与核覆盖的输入图像部分的邻域之间的元素矩阵乘法的总和

(1) 从源图像中选择一个 ( x, y ) 坐标。

(2) 将核的中心置于此 ( x, y )  坐标上。

(3) 将每一个核值乘以相应的输入图像像素值,然后对所有乘法运算求和。(更简单地说,我们对输入图像区域和核进行元素级乘法,然后将所有这些乘法运算的值相加为一个值。这些乘法的和称为核输出。)

(4) 使用与步骤 (1) 相同的 (x, y) 坐标,将核输出存储在输出图像的 (x, y) 位置。

与简单的算术函数不同的是,它们需要推断(extrapolate)一些不存在像素的值。例如,如果要使用Gauss滤波器平滑图像,那么在处理每行最左侧的像素时,需要它们左侧(即图像外部)的像素。你可以让这些像素与最左侧的图像像素相同(“复制边界”推断法),或者假设所有不存在的像素都为零(“恒定边界”推断法),等等。

5.  基本卷积核

5.1  恒等核

    恒等核是最简单的卷积核类型。它本质上保持输入图像不变,作为确保卷积运算正确运行的基准。

\text{IK(Identify Kernel)} =\begin{bmatrix} 0&0&0\\0&1&0 \\0&0&0 \end{bmatrix}  ,

将此核应用于图像时,其输出图像保持不变,因为每一次计算时中心像素以外的像素全为0,输出图像在本位置处的像素不变。

5.2  边缘检测核

    边缘检测核用于突出显示图像中的边缘这些核会强调强度变化较大的区域,这些区域对应于边缘。边缘检测核有多种变体,但最常见的是水平和垂直边缘检测核。

(1) 水平边缘检测核

    该核通过突出显示垂直方向上强度发生显著变化的区域来检测水平边缘。

\text{HEDK(Horizontal Edge Detection Kernel)} =\begin{bmatrix} -1&-1&-1\\0&0&0 \\1&1&1 \end{bmatrix}   。

(2) 垂直边缘检测核

该核通过强调水平方向强度发生显著变化的区域来检测垂直边缘。

\text{VEDK(Vertical Edge Detection Kernel)} =\begin{bmatrix} -1&0&1\\-1&0&1 \\-1&0&1 \end{bmatrix}  。

5.3  锐化核

    锐化内核旨在增强图像的边缘和细节,使图像看起来更清晰,轮廓更分明。它的工作原理是放大像素强度的差异

\text{SH(Sharpening Kernel)} =\begin{bmatrix} 0&-1&0\\-1&5&-1 \\0&-1&0 \end{bmatrix}  。

将此内核应用于图像会增加边缘周围的对比度,使其更加明显。

5.4  箱式模糊核(Box Blur Kernel)

         箱式模糊核(也称为平均滤波器)用于模糊图像。它通过平均核区域内的像素值来实现模糊,从而平滑图像并降低噪点。

\text{BBK(Box blur Kernel)} =\begin{bmatrix} \frac{1}{9}& \frac{1}{9}& \frac{1}{9}\\\\ \frac{1}{9}& \frac{1}{9}& \frac{1}{9} \\ \\ \frac{1}{9}& \frac{1}{9}& \frac{1}{9} \end{bmatrix}  。

该核为核窗口中的每一个像素分配相同的权重,从而产生均匀的模糊效果。

6.  高级卷积核

         高级卷积核专为更复杂的图像处理任务而设计。这些核有助于降噪、精确边缘检测和纹理分析等功能。它们在增强和提取图像中的复杂细节方面发挥着至关重要的作用。

6.1  Gauss模糊核

         Gauss模糊核用于通过加权Gauss分布对像素值进行平均来减少图像噪点和细节。该核有助于创建平滑的模糊效果,从而最大限度地减少图像中的高频噪声。

\text{GBK(Gaussian blur Kernel)} =\frac{1}{16}\begin{bmatrix} 1&2&1\\2&4&2 \\1&2&1 \end{bmatrix}  。

该内核为中心像素分配更高的权重,并逐渐降低周围像素的权重,从而产生更自然的模糊。

6.2  Sobel

       Sobel 核通过强调梯度来检测图像的边缘它们计算图像强度在水平和垂直方向上的一阶导数,因此非常适合边缘检测。

(1) Sobel (水平)

该核通过强调水平梯度来检测水平边缘。

\text{Sobel Kernel(Horizontal)} =\begin{bmatrix} -1&0&1\\-2&0&2 \\-1&0&1 \end{bmatrix}  。

(2) Sobel (垂直)

该核通过强调垂直梯度来检测垂直边缘。

\text{Sobel Kernel(Vertical)} =\begin{bmatrix} -1&-2&-1\\0&0&0 \\1&2&1 \end{bmatrix}  。

6.3  Prewitt

Prewitt 核与 Sobel 核类似,用于边缘检测。它们计算水平和垂直方向的梯度,从而提供一种简单的图像边缘检测方法。

(1) Prewitt(水平)

该核通过强调水平梯度来检测水平边缘。

 \text{Prewitt Kernel(Horizontal)} =\begin{bmatrix} -1&0&-1\\-1&0&1 \\-1&0&1 \end{bmatrix}  。

(2) Prewitt(垂直)

该核通过强调垂直梯度来检测垂直边缘。

\text{Prewitt Kernel(Vertical)} =\begin{bmatrix} -1&-1&-1\\0&0&0 \\1&1&1 \end{bmatrix}   。

6.4  Laplace

         Laplace核是用于边缘检测的二阶导数算子。它突出显示强度快速变化的区域,尤其适用于在噪声图像中查找边缘。

\text{Laplacian Kernel} =\begin{bmatrix} 0&-1&0\\-1&4&-1 \\0&-1&0 \end{bmatrix}   。

该内核计算图像的二阶导数,通过突出显示强度快速变化的区域来提供一种精确的边缘检测方法。

7.  专用卷积核

         专用卷积核专为图像处理和计算机视觉中的特定任务和应用而设计。这些卷积核超越了基本和高级运算,能够提供更集中、更复杂的特征提取、纹理分析和边缘检测功能。

7.1  Gabor

         Gabor 核用于纹理分析和特征提取。它们在边缘检测和纹理识别方面尤其有效。Gabor 核结合了Gauss函数和正弦波,使其能够同时捕捉空间频率信息。

         Gabor核由以下公式定义:

\displaystyle G( x, y; \lambda , \theta, \phi, \sigma, \gamma ) = \exp\left (-\frac{​{x^{'}}^{2}+ \gamma^{2}{y^{'}}^{2}}{2\sigma^{2}}\right )\cos \left (\frac{2{\pi}x^{'}}{\lambda} + \phi \right )  。

其中:

•     x^{' }= x\cos(\theta) + y\sin(\theta)  

•    y^{' }= -x\sin(\theta) + y\cos(\theta) 

•  λ   表示正弦波因子的波长

•  θ  是 Gabor 函数平行条纹的垂线方向。

•  ψ 是相位偏移量(即初始位置)

•  σ  是Gauss包络(envelope)的标准差

•  γ  是空间纵横比(spatial aspect ratio)

7.2  Scharr

         Scharr 核与 Sobel 核和 Prewitt 核类似,但具有更好的旋转对称性和更精确的边缘检测能力。它们用于以更高的精度检测边缘,因此适用于需要详细边缘信息的应用。

(1) Scharr(水平)

该内核更精确地强调强度的水平变化。

\text{Prewitt Kernel(Horizontal)} =\begin{bmatrix} 3&0&-3\\10&0&-10 \\3&0&-3 \end{bmatrix}  。

(2) Scharr(垂直)

该内核更精确地强调了强度的垂直变化。

\text{Prewitt Kernel(Vertical)} =\begin{bmatrix} 3&10&3\\0&0&0 \\-3&-10&-3 \end{bmatrix}

8.  卷积核的应用

         卷积核应用于各个领域,包括:

• 图像处理:增强图像、检测边缘和消除噪点。

• 计算机视觉:物体检测、面部识别和场景理解。

• 医学成像:分析医学图像以进行疾病检测和诊断。

• 机器人技术:使机器人能够感知和理解其周围环境。

相关文章:

  • 怎么做网站宣传百度快照是干嘛的
  • 网站开发工具和平台2023全民核酸又开始了
  • 苏州新区网站建设广州新闻播报
  • 中国那个公司的网站做的最好看独立站建站需要多少钱
  • 做网站大概需要多少钱郑州seo培训
  • 郑州网站建设 郑州网站制作网络营销方法有哪些?
  • Jetson家族横向对比:如何选择你的边缘计算设备
  • Rust 项目实战:多线程 Web 服务器
  • 前端后端文件下载防抖实现方案
  • 基于大模型预测的化脓性阑尾炎诊疗方案研究报告
  • 【微信小程序】9、用户拒绝授权地理位置后再次请求授权
  • 【数据结构与算法】数据结构初阶:详解顺序表和链表(二)
  • 高并发系统架构设计
  • 数据结构day2
  • 【你拍一E1】L1-七巧板之结构练习-复习课
  • 深入理解 MySQL 8.0 慢日志:原理、使用与案例分析
  • 精准把脉 MySQL 性能!xk6-sql 离线并发测试深度指南
  • 深入剖析 LGM—— 开启高分辨率 3D 内容创作新时代
  • OpenCV CUDA模块设备层-----创建一个“常量指针访问器” 的工具函数constantPtr()
  • 开篇:4周的时间设计并开发一个个性化具备专业知识的东方命理师AI agent!
  • Jenkins 全面解析:作用、功能、优势与对比
  • 猿人学js逆向比赛第一届第十三题
  • Web Worker 通信封装与实战应用详解
  • C语言专题——关键字详解
  • Kafka的消费消息是如何传递的?
  • 关于Makefile