侧边栏壁纸
博主头像
LittleAO的学习小站 博主等级

在知识的沙漠寻找绿洲

  • 累计撰写 125 篇文章
  • 累计创建 27 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

学习数字图像处理(3)——空间域图像增强

LittleAO
2023-10-17 / 0 评论 / 0 点赞 / 103 阅读 / 0 字
温馨提示:
本文最后更新于2024-01-01,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

第三章 图像增强之灰度变换与空间滤波

3.1 图像增强引言

这里所称的图像增强,指的是通过对图像的处理,使图像比处理前更适合一个特定的应用。假象这样一个场景:我们用相机拍摄的图片对比度很低,或是充满了噪点。或者是图像在传输过程中增加了噪点。你想到的一种处理方法可能是使用Photoshop对图像进行处理,比如说人为将对比度增高,或是用涂抹工具一个一个把噪点消除。这一章的学习目标就是去探究这些操作背后的技术原理,用数学方法更合适的增强图像的质量。

图像增强的方法有以下几种:

  1. 灰度变换(修改对比度)、空间域滤波(去除噪点);
  2. 对图像的像素进行直接处理;
  3. 傅里叶变换后对图像在频域进行处理。
💡 注意:图像增强我们并没有增加新的信息,例如去除马赛克;而是突出一部分信息,压制另一部分信息。

图像增强在很多领域都有应用,例如特征提取、识别、显示、打印等。也可以为了人类视觉的需要,人为的畸变原始图像,以达到视觉增强的效果。

空间域增强方法

用数学公式来表达空间域处理:

g(x,y)=T[f(x,y)]
  • f(x,y)输入图像;
  • g(x,y)处理后的图像;
  • T是对f的一种操作,定义在(x,y)的领域。

对应的变换分为两种:点变换和邻域变换。

3.2 基于灰度变换的空间域增强

对比度是一个图像处理中的一个热词,我们可以单纯的记为图像中每个像素的灰度的标准差。用通俗的语言来讲,就是最低灰度和最高灰度差距大不大。我们人眼通常希望看到对比度高的图像,但当我们获取到了对比度低图像,怎么将它通过数学方法增大对比度呢,这就是这节课的主要内容。

我们把每个像素的灰度作为自变量,经过一种变换函数得出了新的灰度,这种变换函数有以下几种:

  • 线性变换(图像反转)
  • 对数变换
  • 幂次变换
  • 分段线性变换函数

线性变换

假设图像的灰度级范围为[0,L-1]。将图像进行反色的函数如下:

s=L-1-r

其中r为某像素变换前的灰度,s是经过图像增强后的灰度。

1704081974342.png

用途:增强嵌入图像暗区的白色或灰色细节。

对数变换

变换函数如下:

s=c\log(1+r)

用途:用来扩展图像中的暗像素,压缩亮像素。(整体变亮)

反对数变换

变换函数如下:

s=e^{cr}-1

用途:扩展亮像素,压缩暗像素。(整体变暗)

幂次变换

变换函数如下:

s=cr^\gamma
1704082021782.png

gamma=1,0.5,1.5

  • \gamma=1,s=t,不失真;
  • \gamma<1,输出亮化;
  • \gamma>1,输出暗化。

我们俗称的调整伽马值,调整的就是上面幂次变换的\gamma值。按照我们的知识,\gamma值越大,图像越亮,和我们的变换函数的性质一样。

通过幂次变换,我们既可以增亮图像,又可以增暗图像,只需要调整不同的\gamma值。

分段线性变换函数

根据题目也能才出来,我们的变换函数变成了分段函数,这能够满足不同的需要,例如我们想要提取特定灰度的像素,我们将像提取的像素灰度范围为s=r的线性函数,其余范围全部置零,就能提取我们想要的像素。

再例如,我们想要提高对比度,我们可以在低灰度和高灰度区域所用线性函数的斜率增大,中灰度的变换函数斜率减少,也能达成我们想要完成的效果。

在分段线性变换函数中,比较重要的应用有灰度分层,其目的是为了提高图像中特定灰度范围的亮度,从而增强图像的特征。其中有两种灰度切割方法:

  • 在我们想要关心的范围指定为一高值;
  • 在我们想要关心的范围为灰度保持不变。

位平面分解

将一幅8比特图像分解成8个1比特平面图像。高位比特平面包含了图像的整体轮廓信息,低位比特包含了图像的细节信息。

比特位从高到低表示的位平面

从图中可以看出,前四个比特位包含了视觉上的大多数数据,而低阶比特在图像中贡献了灰度细节。

使用某一位的平面进行重建,就用第n位平面的像素值乘常数2^{n-1}。下图是使用前四个位平面重新构建的图片:

左图:原图;右图:重建后的图像

我们不妨计算一下重建后有多少个灰度级,由于用4个比特重建的,那么应该有2^4个层级,在重建的图像中很容易发现。

通过位平面分解,我们也能创建一些风格化的图像。例如我们仅用位平面7-8进行重建,图像的只有4层级:

在低阶位平面,我们可以隐藏一些水印信息,这样对我们的图像视觉损失比较小。这是一种空间域的变换。

3.3 直方图处理

对图像的每个像素灰度进行统计,生成直方图。通过直方图我们能容易的观察到一幅图像的灰度级分布情况的统计表。

直方图中,横坐标为灰度阶,纵坐标为像素数。灰度级别在范围[0,L-1]的数字图像直方图是一个离散函数:

h(r_k)=n_k~~~k=0,1,2,...,L-1

r_k是第k级灰度级;n_k是图像中灰度级为r_k的像素个数。

归一化直方图

纵坐标为p(r_k)=\frac{n_k}{n}n是图像的像素总数。其中p(r_k)给出了灰度级为r_k发生的概率估计值。函数值的范围与像素的总数无关。

但是直方图和图像并不是11对应的关系,直方图并不能表示像素在图像中的空间位置信息。不相同的图像可以有着相同的直方图。

直方图均衡

直方图均衡是一种用于增强图像对比度的技术,它通过重新分配图像的像素值来均衡化图像的直方图。这项技术的目的是使图像中的像素值分布更加均匀,从而增强图像的细节和对比度。

在进行直方图均衡时,首先需要计算图像的直方图,即图像中每个像素值的频率分布。直方图显示了图像中每个像素值的数量,可以帮助我们了解图像的对比度和亮度分布情况。

直方图均衡化的步骤如下:

假设我们有一个灰度图像,其像素值范围在0到L-1之间(通常情况下,L为256,表示8位图像的灰度级别)。

  1. 计算直方图:图像的直方图可以表示为一个长度为L的数组,其中第i个元素表示像素值i在图像中出现的次数。假设直方图为h(i)

  2. 计算累积分布函数(CDF):累积分布函数可以表示为:

    CDF(i) = \sum_{j=0}^{i} \frac{h(j)}{MN}

    其中,MN分别表示图像的高度和宽度,MN为总像素数。

  3. 计算映射函数:映射函数可以表示为:

    H(i) = \text{round}((L-1) \times CDF(i))

    这里的round表示四舍五入,L-1是新的像素值范围。

  4. 应用映射函数:将映射函数应用到原始图像的每个像素上,得到均衡化后的图像。

通过这些公式,我们可以看到直方图均衡化的过程是通过计算累积分布函数,然后根据这个函数对原始图像的像素值进行映射,从而实现对图像对比度的增强。

直方图均衡化的结果是,原始图像中像素值分布不均匀的区域将会得到增强,从而使得图像的对比度提高,细节更加清晰。

直方图均衡化常用于数字图像处理中,特别是在增强图像对比度和细节方面。然而,需要注意的是,直方图均衡化可能会增加图像噪声的影响,因此在实际应用中需要谨慎使用。

直方图匹配

直方图匹配是一种图像处理技术,它通过将一幅图像的像素值映射到另一幅图像的像素值,从而使得它们的直方图在统计特性上更加相似。这项技术的目的是将一幅图像的灰度分布调整到另一幅图像的灰度分布,以实现它们的灰度特性相似化。

直方图匹配的步骤如下:

假设我们有一幅原始图像,其像素值范围在0到L-1之间(通常情况下,L为256,表示8位图像的灰度级别),以及一幅目标图像。

  1. 计算原始图像和目标图像的累积分布函数(CDF):分别对原始图像和目标图像计算累积分布函数。这些函数可以表示为:

    原始图像的CDF为 CDF_{\text{original}}(i) = \sum_{j=0}^{i} \frac{h_{\text{original}}(j)}{MN}

    目标图像的CDF为 CDF_{\text{target}}(i) = \sum_{j=0}^{i} \frac{h_{\text{target}}(j)}{MN}

    其中,h_{\text{original}}(j)h_{\text{target}}(j)分别表示原始图像和目标图像中像素值为j的像素数量,MN分别表示图像的高度和宽度,MN为总像素数。

  2. 建立映射函数:通过比较原始图像和目标图像的累积分布函数,建立一个映射函数。这个映射函数可以表示为:

    H(i) = \text{round}((L-1) \times CDF_{\text{target}}^{-1}(CDF_{\text{original}}(i)))

    其中,CDF_{\text{target}}^{-1}表示目标图像的累积分布函数的逆函数,round表示四舍五入,L-1是新的像素值范围。

  3. 应用映射函数:将映射函数应用到原始图像的每个像素上,得到匹配后的图像。

通过这些公式,我们可以看到直方图匹配的过程是通过比较两幅图像的累积分布函数,建立一个映射函数,然后将原始图像的像素值映射到目标图像的像素值,从而实现直方图匹配。

通过直方图匹配,我们可以将一幅图像的灰度分布调整到另一幅图像的灰度分布,从而使它们在视觉上更加相似。

直方图匹配在图像处理中有着广泛的应用,例如在图像增强、颜色校正和图像配准等方面。这项技术可以帮助我们使得不同图像之间的灰度特性更加一致,从而达到更好的视觉效果和分析结果。

3.4 空间滤波基础

如何进行空间滤波

空间滤波是数字图像处理中常用的一种技术,用于改变图像的灰度级别或增强图像的某些特征。空间滤波是通过在图像的空间域(即像素的空间位置)上进行像素值的操作来实现的。

空间滤波的基本思想是,对图像中的每个像素,根据其自身及其周围像素的灰度值来进行一定的运算,以达到图像平滑、边缘检测、锐化等目的。

空间滤波的过程如下:

  1. 定义滤波模板:选择一个滤波模板(也称为卷积核或掩模),通常是一个小的矩阵,它决定了滤波操作的性质,比如平滑、锐化、边缘检测等。

  2. 对每个像素应用滤波模板:将滤波模板放置在图像的每个像素位置上,然后对模板覆盖的像素进行一定的计算。这通常是将滤波模板与图像的局部区域进行卷积操作,即将滤波模板中的值与对应的图像像素值相乘并求和。

  3. 更新原始图像的像素值:根据滤波模板的计算结果,更新原始图像的像素值,得到滤波后的图像。

常见的空间滤波包括均值滤波、高斯滤波、中值滤波、Sobel边缘检测等。这些滤波方法可以用于图像平滑、去噪、边缘检测等不同的图像处理任务。

下面是卷积过程的动画演示:
output.gif

3.5 平滑空间滤波器

平滑线性滤波器

平滑线性滤波器是一类常见的空间滤波器,用于图像平滑处理,以减少图像中的噪声并模糊图像。这些滤波器基于一组权重,这些权重是滤波器的核心,用于计算图像中每个像素的新值。

最常见的平滑线性滤波器包括均值滤波器和高斯滤波器。

  1. 均值滤波器

    • 均值滤波器使用一个固定大小的卷积核(通常是3x3或5x5的矩阵),该核中的每个元素都具有相等的权重,通常是1/(核的大小)。滤波器将核放置在图像的每个像素上,计算覆盖区域内像素的平均值,并用该平均值来替换中心像素的值。
      其典型3x3模板为:
    \frac{1}{9} \times \begin{bmatrix} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{bmatrix}

    在这个3x3的模板中,每个元素的值都是1,然后将整个模板的值除以9,以确保滤波后的像素值是周围像素的平均值。

  2. 高斯滤波器

    • 高斯滤波器使用高斯函数来定义权重。在这种滤波器中,卷积核的权重是根据高斯分布来确定的,离中心像素越远的像素的权重越小。这意味着中心像素受到的影响最大,而远离中心的像素受到的影响逐渐减小。高斯滤波器可以更好地保留图像的细节,同时有效地减少噪声。

      高斯滤波器的模板依赖于所采用的高斯函数参数,但以下是一个常见的3x3高斯滤波器模板的示例:

    \frac{1}{16} \times \begin{bmatrix} 1 & 2 & 1 \\ 2 & 4 & 2 \\ 1 & 2 & 1 \end{bmatrix}

    这些平滑线性滤波器可以通过卷积操作来应用到图像上,并且在图像处理中被广泛使用。它们对于去除图像中的噪声、平滑图像以及为后续图像处理任务提供更好的输入非常有用。

统计排序(非线性)滤波器

统计排序滤波器是一类非线性滤波器,与线性滤波器不同,它们的输出值不是像素的加权平均,而是根据像素值的排序统计信息来计算的。

最常见的统计排序滤波器包括中值滤波器和最大/最小值滤波器。

  1. 中值滤波器

    • 中值滤波器使用一个滑动窗口(类似于线性滤波器),将窗口覆盖到图像的每个像素上。然后,它将窗口内的像素值进行排序,并将中间值(即中值)作为输出值来替换中心像素的值。中值滤波器对于去除图像中的椒盐噪声等离群值非常有效。
  2. 最大/最小值滤波器

    • 最大值滤波器和最小值滤波器分别使用窗口内的最大值和最小值来替换中心像素的值。最大值滤波器可用于图像中的腐蚀操作,而最小值滤波器可用于膨胀操作。

这些非线性滤波器对于去除图像中的噪声和保护图像的边缘信息非常有用。它们不像线性滤波器那样受到固定权重的限制,因此能够更好地处理各种类型的噪声。

3.6 锐化空间滤波器

拉普拉斯算子

拉普拉斯算子是一种常用的锐化空间滤波器,它可以突出图像中的细节和边缘。它的原理涉及对图像中像素值的二阶导数运算。

拉普拉斯算子通常用于增强图像的高频细节,使图像看起来更加清晰和锐利。其离散形式可以通过以下3x3的模板表示:

\begin{bmatrix} 0 & 1 & 0 \\ 1 & -4 & 1 \\ 0 & 1 & 0 \end{bmatrix}

这个模板是一种常见的离散拉普拉斯算子的近似表示,它通过对中心像素周围像素值的加权求和来计算出新的中心像素值。在这个模板中,中心像素的值被乘以-4,而周围像素的值被乘以1,然后将它们相加,最终得到的值就是新的中心像素值。

在应用拉普拉斯算子时,通常会将其与原始图像进行卷积操作,以突出图像的高频细节。然而,由于拉普拉斯算子对噪声敏感,因此在实际应用中,通常会将其用作增强边缘和细节的工具,而不是作为独立的滤波器来去除噪声。

非锐化掩蔽和高提升滤波

非锐化掩蔽(Unsharp Masking)和高提升滤波(High Boost Filtering)都是图像增强的技术,通常用于增强图像的边缘和细节。

  1. 非锐化掩蔽

    • 非锐化掩蔽是一种常见的图像增强技术,它的基本原理是通过对原始图像进行模糊处理,然后将模糊图像从原始图像中减去,得到的结果就是增强了边缘和细节的图像。具体步骤包括:
      • 对原始图像进行模糊处理,通常使用高斯滤波器或均值滤波器来实现。
      • 将模糊图像从原始图像中减去,得到的结果就是增强了边缘和细节的图像。
  2. 高提升滤波

    • 高提升滤波是非锐化掩蔽的一种扩展形式,它通过对原始图像进行锐化处理来增强图像的细节。具体步骤包括:
      • 对原始图像进行低通滤波(如均值滤波或高斯滤波),得到模糊图像。
      • 将模糊图像从原始图像中减去,得到一个边缘和细节较强的图像。这个过程类似于非锐化掩蔽,但在这里引入了一个额外的参数,称为增益因子(gain factor),用于控制增强的程度。

这两种技术都可以用于增强图像的细节和边缘,从而改善图像的视觉效果。它们在数字图像处理和计算机视觉中经常被用于提升图像的质量和清晰度。

一阶微分锐化——梯度

一阶微分锐化中的梯度是指图像中像素值变化最快的方向和变化率。在图像处理中,梯度通常用于检测图像中的边缘和轮廓。

梯度的计算可以通过一阶微分算子(如Sobel、Prewitt等)来实现。以Sobel算子为例,对于一幅灰度图像,可以分别计算水平方向和垂直方向的梯度。

水平方向的Sobel算子:

\begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix}

垂直方向的Sobel算子:

\begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{bmatrix}

对图像应用这两个算子,可以得到水平方向和垂直方向的梯度近似值。梯度的大小可以通过以下公式计算:

\text{Gradient} = \sqrt{{G_x}^2 + {G_y}^2}

其中,G_xG_y 分别是水平和垂直方向的梯度。

梯度的方向可以通过以下公式计算:

\text{Angle} = \arctan\left(\frac{G_y}{G_x}\right)

通过计算梯度的大小和方向,可以检测图像中的边缘和轮廓。较大的梯度值通常表示图像中的边缘或者纹理变化,而梯度的方向可以指示边缘的方向。

一阶微分锐化通过梯度的计算来实现图像的边缘检测和增强,这在许多图像处理任务中都是非常有用的。

3.7 混合空间增强法

混合空间增强法(Hybrid Domain Enhancement)是一种图像增强技术,结合了频域和空域的处理方法,旨在改善图像的质量、对比度和清晰度。这种方法通常包括以下步骤:

  1. 频域处理

    • 频域处理通常涉及对图像进行傅立叶变换或其它频域变换,以便在频率域进行增强。这可以包括滤波、频率域滤波、频域修复等操作。常见的频域滤波包括高通滤波和带阻滤波,用于增强图像的高频信息或者去除频域中的干扰。
  2. 空域处理

    • 空域处理主要涉及对图像的原始像素进行操作,例如直接调整像素值、应用空域滤波器等。这些操作可以用于增强图像的局部对比度、增强轮廓等。
  3. 混合处理

    • 在混合空间增强法中,频域处理和空域处理的结果被结合起来,通常是通过加权平均或者其他组合方式。这样可以充分利用频域处理的优势(如对噪声的鲁棒性、对大范围变化的适应能力)和空域处理的优势(如对局部细节的敏感性)。

混合空间增强法的优点在于它结合了频域和空域处理的优势,能够更全面地改善图像的质量。通过在频域和空域进行增强,可以同时处理图像中的全局和局部信息,从而产生更加自然和清晰的结果。

这种方法在数字图像处理中得到广泛应用,特别是在医学影像处理、卫星图像处理以及艺术图像增强等领域。然而,混合空间增强法需要谨慎设计,以确保频域和空域处理的结果能够有效地结合,从而产生理想的增强效果。

0

评论区