【图像处理lec3、4】空间域的图像增强

目录

[1. 空间域图像增强的背景与目标](#1. 空间域图像增强的背景与目标)

[2. 空间域处理的数学描述](#2. 空间域处理的数学描述)

[3. 灰度级变换](#3. 灰度级变换)

[4. 幂律变换(Power-Law Transformation)](#4. 幂律变换(Power-Law Transformation))

[5、 分段线性变换](#5、 分段线性变换)

[Case 1: 对比度拉伸](#Case 1: 对比度拉伸)

[Case 2: 灰度切片](#Case 2: 灰度切片)

[Case 3: 按位切片](#Case 3: 按位切片)

[6、对数变换(Logarithmic Transformation)](#6、对数变换(Logarithmic Transformation))

[7、对比度拉伸(Contrast-Stretching Transformation)](#7、对比度拉伸(Contrast-Stretching Transformation))

8、直方图均衡

(1)直方图的定义

(2)直方图归一化

(3)直方图生成与显示

(4)直方图的对比分析

(5)代码示例

(6)直方图均衡化

i、目标:

[ii、概率密度函数 (PDF) 和累计分布函数 (CDF)](#ii、概率密度函数 (PDF) 和累计分布函数 (CDF))

iii、直方图均衡的变换函数

iv、离散版本的直方图均衡

9、直方图匹配

(1)原理概述

(2)直方图匹配的步骤

[Step 1: 计算输入图像的累积分布函数 (CDF)](#Step 1: 计算输入图像的累积分布函数 (CDF))

[Step 2: 计算目标图像的累积分布函数 (CDF)](#Step 2: 计算目标图像的累积分布函数 (CDF))

[Step 3: 建立映射关系](#Step 3: 建立映射关系)

[Step 4: 应用映射](#Step 4: 应用映射)

(3)示例

10、线性空间滤波

11、图像锐化

(1)锐化空间滤波的基本概念

(2)拉普拉斯滤波

[(3)高提升滤波(High-Boost Filtering)](#(3)高提升滤波(High-Boost Filtering))

(4)图像梯度的计算与Sobel算子

12、非线性空间滤波

(1)定义与特点

(2)MATLAB工具箱中的非线性滤波

(3)具体实现与矩阵操作

13、非线性空间滤波去噪(去除椒盐噪声)

[(1)非线性空间滤波工具 ordfilt2](#(1)非线性空间滤波工具 ordfilt2)

[(2)中值滤波器 medfilt2](#(2)中值滤波器 medfilt2)

(3)中值滤波的去噪效果对比


1. 空间域图像增强的背景与目标

  • 图像增强的目标:通过处理图像使其对特定应用更适合。这里强调"特定应用"是问题导向的,因此增强方法没有统一的理论标准。
  • 分类
    • 空间域方法:直接操作图像的像素。
    • 频域方法:基于傅里叶变换的操作。
  • 图像处理的评价
    • 对于视觉感知,评价取决于人类观察效果。
    • 对于机器感知,如字符识别,评价通过任务完成度衡量。

2. 空间域处理的数学描述

  • 数学表达式:,其中 是一个操作符,可作用于像素的某个邻域。
  • 邻域选择:通常使用方形或矩形邻域,因其易于实现。
  • 最简单形式为强度变换,表示为 ,即像素值的变换。

3. 灰度级变换

  • 作用:调整图像像素值以实现增强效果。
  • 示例中展示了不同的变换函数(例如S型和阶梯型),对应灰度范围从暗到亮的不同映射。
  • 效果:调整对比度或强调特定灰度范围。

4. 幂律变换(Power-Law Transformation)

  • 数学公式:,通过调节 控制对比度。
  • 典型应用
    • Gamma校正:用于显示器的线性响应矫正。
    • 对比度增强 :通过不同 值调整图像的细节和亮度。
  • 下图展示了在医疗图像和航空图像中,通过不同的 值实现对比增强效果。

5、 分段线性变换

Case 1: 对比度拉伸
  • 内容:图像的对比度拉伸通过增强低对比度区域来提高图像的视觉质量。
  • 方法
    • 输入灰度值 与输出灰度值 之间建立分段线性关系。
    • 拉伸低对比度部分(通过设定阈值 )。
    • 示例:在原始低对比度图像上应用对比度拉伸,明显提高了对比度,增强了视觉效果。
**Case 2:**灰度切片
  • 内容:通过灰度切片方法突出特定灰度范围的特性。
  • 方法
    • 两种形式:将感兴趣的灰度范围值保留,其他灰度值置为常数;或保留所有灰度值,但突出特定范围。
    • 应用:医学影像中,突出特定组织或结构。
**Case 3:**按位切片
  • 内容:按位切片以分离图像的不同比特平面。
  • 方法
    • 图像由 8 个位平面组成,从最不重要位 (LSB) 到最重要位 (MSB)。
    • 应用:观察 MSB 可以捕获主要图像结构,LSB 常用于存储隐藏数据(如水印)。

6、图像处理工具箱中的函数 imadjust

  • 功能imadjust 是 MATLAB 的图像处理工具箱中用于调整图像强度值分布的函数。
  • 语法g = imadjust(f, [low_in high_in], [low_out high_out], gamma)
    • 参数解释
      • low_in, high_in:输入强度值的范围。
      • low_out, high_out:映射到的输出强度值范围。
      • gamma:控制曲线的非线性程度。
  • 特点
    • gamma < 1:增强较暗区域的亮度。
    • gamma > 1:增强较亮区域的亮度。
    • 默认情况下,gamma = 1 表示线性映射。
  • 示例
    • 通过不同的参数组合调整乳腺图像对比度,以更清晰地观察病变区域。

图1 图2

图1左侧是从一个乳腺影像文件(Fig0303(a)(breast).tif)读取的,使用 imshow(I) 显示该图像,显示的是原始未处理的乳腺 X 光片。

图1右侧使用 G = imadjust(I, [0 1], [1 0]) 对原始图像进行处理,这种调整会产生一个负片效果,即原本亮的区域变暗,暗的区域变亮,显示负片的目的是强调图像中原本不明显的结构特征,方便分析。

图2左侧:对部分强度范围增强

  • 使用 G = imadjust(I, [0.5 0.75], [0 1])
  • 参数 [0.5 0.75] 选择了图像输入强度值的中间部分进行增强(从 0.5 到 0.75 的灰度范围)。
  • 输出 [0 1] 将这些强度范围映射到全新的灰度范围,增强了这一范围的对比度。
  • 结果是更强烈的对比,突出原图中特定强度范围的细节。

图2右侧:伽马变换增强

  • 使用 G = imadjust(I, [], [], 2)
  • 参数 [] 表示默认的输入强度范围 [0 1] 和输出强度范围 [0 1]2 是伽马值。
  • 伽马值为 2 表示对暗部区域的灰度值进行放大(权重偏向暗部区域),使得暗部区域的细节更加清晰。
  • 用于强调图像中的低灰度特征。

6、对数变换(Logarithmic Transformation)

  • 目的 :压缩动态范围。对数变换常用于处理动态范围较大的图像数据,例如傅里叶频谱图。
  • 公式,其中 是常数。
  • 用途
    • 压缩高动态范围数据,例如从 压缩到较小范围。
    • 通过 MATLAB 中的命令实现,例如 g = im2uint8(mat2gray(log(1 + double(f))))
  • 例子:傅里叶频谱图

7、对比度拉伸(Contrast-Stretching Transformation)

  • 公式,其中 为强度阈值, 控制函数的斜率。
  • 作用
    • 将较低或较高的输入灰度值压缩到更窄的范围。
    • 提高图像对比度,尤其适合灰度值分布范围有限的图像。
  • MATLAB 实现 :通过对应的公式,使用 double 数据类型进行计算。

8、直方图均衡

(1)直方图的定义

  • 图像的直方图是强度值的分布统计,是增强、压缩、分割和描述等图像处理操作的基础。
  • ,其中:
    • :第 个强度值;
    • :强度值为 的像素数量。

(2)直方图归一化

  • 通过归一化直方图,可以将像素数量转化为概率分布: 这里 是总像素数。直方图归一化可以表示为灰度值强度的概率估计。

(3)直方图生成与显示

  • 使用 MATLAB 函数 imhistbar 绘制直方图:
    • imhist(f, b):计算直方图, 是灰度级分箱的数量。
    • bar(horz, h1, width):绘制条形图,其中 horz 为横轴刻度,h1 为直方图数据。

(4)直方图的对比分析

  • 直方图可以帮助可视化图像的亮度分布。例如:
    • 暗图像的直方图主要集中在灰度较低的部分;
    • 亮图像的直方图主要集中在灰度较高的部分。

(5)代码示例

生成直方图:

f = imread('Fig3_8_a.tif');
h = imhist(f);
bar(h);

绘制条形直方图:

s = imread('Fig0303(a).tif');
h1 = imhist(s, 16);
horz = 1:16;
bar(horz, h1, 0.8);

(6)直方图均衡化

i、目标:
  • 增强图像的对比度。
  • 将图像的灰度分布调整为近似均匀分布。
ii、概率密度函数 (PDF) 和累计分布函数 (CDF)
  • PDF(概率密度函数):

    • 图像中每个灰度级的出现概率。
    • 定义为: 其中:
      • 是灰度级,
      • 是灰度级 的像素个数,
      • N 是总像素数。
  • CDF(累计分布函数):

    • 累计分布函数是 PDF 的积分,用来表示灰度值从最小到当前灰度值的累计概率: 或连续形式: 累计分布函数的值范围是 [0,1]。
iii、直方图均衡的变换函数

直方图均衡的变换函数恰好就是累计分布函数:

变换函数被定义为原始灰度级概率密度函数的累积分布函数

其中 是积分的中间变量,代表从 0 到 的所有灰度级, 是变换后的灰度值,是近似均匀分布的。

本质: 将原图像的灰度级 ​ 按上述累积分布函数映射为新的灰度级 ​。这个过程实现了原始灰度分布到均匀分布的调整,最终得到对比度均衡化的图像。

定性理解:原灰度值比较集中的区域,概率密度比较大,概率密度的累计函数增长比较快,从而使得较短的就灰度值区域转换为较长的新的灰度值区域,即让原灰度值集中的区域分散;而原灰度值比较分散的区域,概率密度比较小,概率密度的累计函数增长缓慢,使得较长的原灰度值区域被转换为角度的新灰度值区域,即让原灰度值分散的区域集中。

证明新的灰度值分布 s 服从均匀分布:

推导新的概率密度函数

  • 的定义为:
  • 根据变换 的定义(),求导得:
  • 代入 的表达式:
  • 结论: 经过变换后,新的灰度级概率密度函数 是均匀分布,满足直方图均衡化目标。
iv、离散版本的直方图均衡
  • 在实际实现中,图像是离散的,其灰度级的概率密度可以表示为:

    其中 ​ 是灰度级 ​ 的像素数量, 是图像总像素数。

  • 累积分布函数的离散形式为:

    这意味着每个像素的新的灰度级 ​ 由其对应的累积概率决定。

9、直方图匹配

直方图匹配(Histogram Matching 或 Histogram Specification)是一种图像处理技术,其目标是将输入图像的直方图调整为目标图像或目标直方图的分布。相比于直方图均衡化,直方图匹配允许更灵活地调整图像的灰度分布,以适应特定需求。

(1)原理概述

直方图匹配的核心是将输入图像 的灰度级分布调整为与目标图像 的灰度级分布相同。

  • 输入图像直方图: ,表示输入图像中灰度级 的概率分布。
  • 目标直方图: ,表示目标图像中灰度级 的概率分布。

通过设计一个映射函数 ,使得调整后的灰度分布 匹配目标直方图。

(2)直方图匹配的步骤

Step 1: 计算输入图像的累积分布函数 (CDF)

输入图像灰度级 的累积分布函数定义为:

​​​​​​​

或者在离散情况下:

​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​

其中:

  • 是灰度级 的像素数量。
  • 是图像总像素数。

是原始概率密度到均匀分布的映射。

Step 2: 计算目标图像的累积分布函数 (CDF)

目标图像灰度级 的累积分布函数定义为:

​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​

或者在离散情况下:

​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​

其中:

  • 是目标直方图中灰度级 的像素数量。
  • 是目标图像的总像素数(或者是目标直方图的总和)。

是目标图像灰度值概率密度到均匀分布的映射;是均匀分布到目标图像灰度值概率密度的映射。而这里的均匀分布如果采用映射的输出,那么就实现了原图灰度值概率密度到目标图概率密度的转换。

Step 3: 建立映射关系

输入图像中每个灰度值 ​ 的对应映射 满足:

,这两个映射的结果都是均匀分布,所以相等。

通过求解 ​,找到 ​ 到 ​ 的映射关系。

  • 在离散情况下,通过最近邻法或插值找到 的对应关系:
Step 4: 应用映射

对输入图像的每个像素值 ​,通过上述映射关系 替换其值,最终获得直方图匹配后的图像。

(3)示例

直方图均衡:

  • 输入图像(左侧的图)是 Mars 月亮 Phobos 的图片。
  • 使用默认的 256-bin 直方图进行均衡,发现输出结果(右侧的图)不理想。
  • 其原因是原始图像的像素值主要集中在低灰度区,导致均衡后产生大量离散化的高灰度值。

改进:直方图匹配:

  • 为了解决上述问题,可以引入**双峰高斯模型(Bimodal Gaussian Model)**作为目标直方图,使其更符合原始图像的分布特性:

    • :两个高斯分布的均值。
    • :标准差。
    • :两个分布的权重。
  • 通过指定该模型,生成一个平滑的目标直方图,应用到图像后得到更好的视觉效果。

最终结果:

通过调整目标直方图的形状,输出图像的灰度分布变得更加均匀,细节对比度增强。

10、线性空间滤波

定义与概念: 线性滤波使用固定大小的核(如3x3或5x5)滑动整个图像,对每个像素点应用线性运算。

  • 公式: 其中, 是权值矩阵, 是输入图像。
  • 滤波模式:
    • 平滑滤波器(如平均滤波、加权平均滤波)。
    • 卷积与相关的差别:卷积需要将核旋转180度。
  • 使用函数: MATLAB函数imfilter允许使用边界处理选项(replicatesymmetriccircular),支持对边界问题灵活处理。

均值滤波器

  • 如Box滤波器(简单平均)和加权平均滤波器,常用于图像去噪或模糊化。
  • 示例中,均值滤波器的掩模可以是:

锐化滤波

下面右有详细的分析。

11、图像锐化

(1)锐化空间滤波的基本概念

锐化的目标是突出图像中的细节 或增强被模糊的特征,这通过空间微分(spatial differentiation)实现。

一阶导数的要求

一阶导数反映图像的边缘灰度变化情况,满足以下条件:

  1. 在平坦区域(常量灰度区域)为零。
  2. 在灰度跳变的起始处非零。
  3. 在渐变区域非零。

数学表达:

二阶导数的要求

二阶导数有助于更精确地定位边缘和变化点,满足以下条件:

  1. 在平坦区域为零。
  2. 在灰度跳变的起始和结束处非零。
  3. 在渐变区域(常量斜坡)为零。

数学表达:

(2)拉普拉斯滤波

拉普拉斯滤波是一种二阶导数滤波器,通过计算图像中每个像素周围灰度变化的加权和来突出边缘

拉普拉斯函数

二维拉普拉斯算子定义为:

离散实现为:

Laplacian 3×3 滤波模板

  • 常用的拉普拉斯模板具有中心系数为负值、周围为正值的结构:

    • 弱锐化模板:中心 −4,周围(上下左右)为 +1 ,四角(左上、右上、左下、右下)为0。
    • 强锐化模板:中心 −8,周围(上下左右、左上、右上、左下、右下)为 +1 。
    • 弱锐化滤波和强锐化滤波示例如下图:
  • 在图中示例中,使用拉普拉斯滤波器对月球图像进行锐化,效果如下:

    • 左上图:原始图像。
    • 右上图:拉普拉斯滤波响应图(包含边缘信息)。
    • 左下图:拉普拉斯滤波后的结果。
    • 右下图:通过将拉普拉斯图像从原始图像中减去,实现锐化增强。

图像增强表达式

其中 是锐化后的图像, 是输入图像。

第一步是通过滤波器提取边缘信息,第二步是将边缘信息与原图像融合。这两步可以合在一起:

两步融合之后的滤波器核为:

(3)高提升滤波(High-Boost Filtering)

高提升滤波是一种基于非锐化掩模 (Unsharp Masking)的扩展方法。它通过放大原始图像与模糊图像之间的差异实现锐化。

数学表达

  • 非锐化掩模:

​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​

其中 是模糊后的图像, 是锐化后的图像。

  • 高提升滤波:

​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​

进一步展开为:

​​​​​​​ ​​​​​​​ ​​​​​​​ ​​​​​​​

时,退化为普通的非锐化掩模。

结合拉普拉斯的高提升滤波

如果拉普拉斯算子用于计算锐化掩模,则高提升滤波的公式变为:

​​​​​​​ ​​​​​​​ ​​​​​​​

​​​​​​​ ​​​​​​​ ​​​​​​​

图像示例分析

  • 使用不同 值进行高提升滤波, 产生基本锐化效果, 提供更强烈的锐化。这里其实就是原图与锐化细节融合时减少了原图的权重,使得锐化更加凸显;但这样使得变化后的图像色度减弱了,如果不想色度减弱,就保持原图的权重为1,增大锐化细节的分量。
  • 对比图展示了不同 值下的效果,高 值更突出边缘和细节。

(4)图像梯度的计算与Sobel算子

  • 图像梯度的基本原理

    • 通过计算图像的一阶导数(梯度)来突出灰度值的变化,用于边缘检测和图像锐化。
    • 梯度运算使用微分算子 ,包括Sobel算子Prewitt算子 ,其系数矩阵如图1所示:
      • 这些算子通过卷积操作提取图像边缘信息。
      • Sobel算子(图2右图)增强了边缘对比度,有效检测边缘。

图1 图2

  • 梯度增强效果

    • 左图(光学镜片)表现为平滑图像,右图为通过Sobel梯度算子计算得到的增强图像,显示了边缘和缺陷(4点和5点钟方向)。
    • Sobel算子能够有效地检测图像中的轮廓信息,并放大边缘细节。

12、非线性空间滤波

(1)定义与特点

  • 通常基于像素的局部邻域,但不像线性滤波那样应用固定的线性权值运算,而是使用其他数学操作(如取最大值、最小值、中值等)。
  • 主要特点:
    • 输出像素值由局部邻域的非线性操作确定(例如,局部最大值操作)。
    • 与线性滤波不同,非线性滤波中"滤波核(mask)"的概念并不是必须的。
    • 非线性滤波更加灵活,能更好地保留边缘等细节特性。

(2)MATLAB工具箱中的非线性滤波

片子中提到了两种主要函数:nlfiltercolfilt

  • nlfilter(非线性空间滤波器)
    • 在二维图像上直接执行非线性操作。
    • 用户可通过打开nlfilter查看其源码。
    • 缺点:计算效率相对较低。
  • colfilt(列过滤器)
    • 将数据以列的形式组织成矩阵,然后在每一列上执行操作。
    • 内存占用较高,但执行速度快于nlfilter
    • 数据结构组织后,结果更高效,但需要为大规模处理分配更多内存。

片子中的非线性空间滤波主要内容及分析如下:

(3)具体实现与矩阵操作

colfilt 函数原理

  • 输入
    • 图像 的大小为
    • 滤波窗口的大小为
  • 输出
    • 将图像滑动窗口生成一个矩阵 ,大小为 ,每一列表示图像中邻域窗口的像素。
  • 特点
    • 每一列包含一个邻域窗口的像素数据,方便应用非线性函数对每一列进行单独操作。

colfilt 的函数语法

  • 参数说明:

    • :滑动窗口的大小。
    • 'sliding':滑动方式。
    • @fun:要应用的函数。
    • parameters:传递给函数的参数。
  • 工作流程

    • 函数 fun 将作用于矩阵 的每一列,输出为一个行向量
    • 滤波结果 的第 个元素是 的第 列应用 fun 操作的结果。

13、非线性空间滤波去噪(去除椒盐噪声)

(1)非线性空间滤波工具 ordfilt2
  • 功能
    • ordfilt2 是用于生成顺序统计(或称为秩)滤波器的函数。
    • 它通过对邻域中的像素值进行排序,提取指定次序(秩)上的像素值,构成输出图像。
  • 语法
    • g = ordfilt2(f, order, domain)
      • f:输入图像。
      • order:提取排序后的第 order 个元素。
      • domain:定义邻域范围。
    • 例如:
      • 最小值滤波器(Min Filter):ordfilt2(f, 1, ones(m, n))
      • 中值滤波器:ordfilt2(f, median(1:m*n), ones(m, n))
  • 应用
    • 这类滤波器主要用于消除特定噪声,例如椒盐噪声。
(2)中值滤波器 medfilt2
  • 功能
    • 中值滤波器是一种特殊的秩滤波器,是非线性空间滤波中最重要的工具之一。
    • 它通过计算邻域内像素值的中值替换中心像素,达到平滑图像的目的。
  • 语法
    • g = medfilt2(f, [m n], padopt)
      • m, n:邻域窗口大小。
      • padopt:边界填充选项(如 zerossymmetricindexed)。
    • 默认边界处理为 zeros 填充。
  • 实验证明
    • 中值滤波对椒盐噪声有显著的去噪效果,同时保留边缘细节。
(3)中值滤波的去噪效果对比
  • 原理与操作
    • 首先加载一幅受椒盐噪声污染的电路板图像(左图)。
    • 对其进行不同模式的中值滤波处理:
      • 默认 zeros 填充方式(中图)。
      • symmetric 填充方式(右图)。

  • 结果分析
    • 噪声图像(左图)经过中值滤波处理后:
      • 使用默认边界模式(中图):边界处可能存在异常伪影。
      • 使用 symmetric 填充(右图):边界伪影显著减少,处理效果更平滑。
    • 结果证明:
      • 中值滤波对于椒盐噪声有显著的去除效果,尤其在 symmetric 模式下表现更优。
相关推荐
木市门1 小时前
【GAMES101笔记速查——Lecture 22 Animation Cont】
图像处理·笔记·图形渲染
GWY_uu4 小时前
Open CV图像处理基础函数详解
图像处理·人工智能·计算机视觉
liuming19924 小时前
Halcon中background_seg(Operator)算子原理及应用详解
图像处理·人工智能·算法·计算机视觉·目标跟踪·视觉检测
qwe3526334 小时前
OpenCV常用图像处理函数解析
图像处理·人工智能·opencv
GOTXX5 小时前
基于OpenCV的道路损伤识别
图像处理·人工智能·python·opencv·目标检测·机器学习·计算机视觉
GOTXX8 小时前
基于MATLAB的图像增强
开发语言·图像处理·人工智能·计算机视觉·matlab·音视频·超分辨率重建
加德霍克8 小时前
Opencv之图像梯度处理和绘制图像轮廓
图像处理·人工智能·opencv·学习·计算机视觉
一念之坤9 小时前
10篇--图像噪点消除
图像处理·python·opencv·计算机视觉
一念之坤9 小时前
09篇--图片的水印添加(掩膜的运用)
图像处理·python·opencv·计算机视觉