Administrator
发布于 2026-09-09 / 0 阅读
0
0

高级图像处理 TP:图像采集与辐射度学

3.1 直方图

Part 1: 图像与直方图的显示

实验目的

加载一幅灰度图像,并可视化其直方图,从而直观理解图像的灰度分布特性。

实验步骤

首先使用 skio.imread 读取图像文件,得到一个二维数组,其中每个元素对应一个像素的灰度值。为了便于后续的数学运算,将图像数据类型转换为32位浮点数。然后使用 plt.hist 函数绘制直方图,该函数需要一维数组作为输入,因此需要用 reshape((-1,)) 将二维图像展平。参数 bins=255 表示将灰度范围划分为255个区间。

结果分析

image-20260122141408245

可以观察到 Lena 图像的灰度分布较为分散,这意味着图像具有较好的对比度。灰度值较低的部分对应头发和阴影区域,而灰度值较高的部分对应帽子的高光和背景区域。

Part 2: 累积直方图

实验目的

在直方图的基础上,进一步引入归一化直方图和累积直方图的概念。设图像共有 N 个像素,归一化直方图定义为

h(k) = \frac{n_k}{N}

其中 n_k 是灰度值为 k 的像素个数。归一化后的直方图可以视为灰度级的概率分布,满足 \sum_k h(k) = 1

累积直方图(也称累积分布函数 CDF)定义为

H(k) = \sum_{i=0}^{k} h(i)

即从灰度级0到 k 的概率之和。

实验步骤

使用 np.histogram 计算直方图,然后除以像素总数进行归一化。对归一化直方图调用 cumsum() 方法即可得到累积直方图,该方法计算数组的累积和,即 H[k] = h[0] + h[1] + \cdots + h[k]

结果分析

image-20260122131916936

归一化直方图 的每个灰度级值表示该灰度级在图像中出现的概率。累积直方图是归一化直方图的积分,从0单调递增到1,其斜率反映了对应灰度区间的像素密度。

Part 3: 高斯噪声对直方图的影响

实验目的

研究向图像添加噪声后直方图的变化,向图像添加高斯噪声相当于对每个像素的灰度值加上一个服从 \mathcal{N}(0, \sigma^2) 分布的随机变量。根据概率论,两个独立随机变量之和的分布是它们各自分布的卷积。因此,添加噪声后的直方图是原始直方图与高斯分布的卷积结果。

实验步骤

使用 noise(im, br) 函数向图像添加高斯白噪声,其中参数 br 是噪声的标准差 \sigma。该函数为每个像素生成一个服从 \mathcal{N}(0, \sigma^2) 的随机数并加到原始灰度值上。本实验设置 \sigma = 30,然后分别显示原始图像和噪声图像及其对应的直方图。

结果分析

image-20260122132056346

原始直方图具有明显的多峰结构,而噪声图像的直方图变得平滑,曲线类似高斯分布,整体分布变得更加平缓。

Part 4: 不同噪声强度的对比

实验目的

进一步验证噪声标准差 \sigma 对直方图平滑程度的影响。根据卷积理论,原始分布与高斯核 \mathcal{N}(0, \sigma^2) 卷积后,结果分布的宽度会增加。具体而言,若原始分布的方差为 \sigma_0^2,添加方差为 \sigma^2 的高斯噪声后,结果分布的方差变为 \sigma_0^2 + \sigma^2。因此 \sigma 越大,直方图越宽、越平滑。

实验步骤

分别对原始图像添加标准差为 \sigma = 0, 10, 30, 50 的高斯噪声,并观察图像质量和直方图形态的变化。

结果分析

image-20260122132154576

随着 \sigma 增大,直方图由多峰结构开始接近单峰的钟形曲线,在\sigma=50 时直方图几乎接近高斯分布曲线

3.2 对比度变化

Part 3: 非递增变换的效果

实验目的

对比度变化本质上是对图像灰度值应用一个变换函数 y = f(x),其中 x 是输入灰度级,y 是输出灰度级。这里我们不使用递增变换函数,观察图像变化。两个典型的非递增变换是:V形变换 y = |x - 128| 和正弦变换 y = 128 + 100\sin(\pi x / 128)

实验步骤

分别对图像应用恒等变换 y = x、V形变换 y = |x - 128| 和正弦变换,并绘制对应的变换曲线

结果分析

image-20260122132309153

恒等变换是一条斜率为1的直线,V形变换在 x=128 处有一个最小值点,两侧对称上升,因此左右的灰度值都会被映射到相同的输出值,破坏了原有的明暗区分。正弦变换曲线在 [0, 255] 范围内完成了一个完整周期,存在多个极值点,导致不同的输入灰度级可能产生相同的输出,从而造成灰度可能折叠。

3.3 直方图均衡化

Part 1: 基本均衡化

实验目的

直方图均衡化的目标是使输出图像的直方图尽可能接近均匀分布,以增强对比度。数学上,均衡化使用累积分布函数(CDF)作为变换函数,变换后原本像素密集的灰度区域会被展开,稀疏的区域则被"压缩",从而使输出直方图趋于平坦。

实验步骤

读取图像 sombre.jpg,计算其归一化直方图和累积直方图。将累积直方图乘以255作为查找表,对每个像素的灰度值进行映射,得到均衡化后的图像。同时绘制变换函数曲线和均衡化前后的直方图、累积直方图进行对比。

结果分析

image-20260122132640161

原始直方图显示像素高度集中在灰度级20-60之间,这就是为什么图片偏暗。均衡化直方图分布更加分散,虽然不是均匀分布,但整体趋势更加平坦。最后对比了两条累积直方图曲线:原始图像的CDF(蓝色)在低灰度区域上升然后趋于平缓,而均衡化后的CDF(橙色)呈现阶梯状上升,整体更接近理想的直线

Part 2: 均衡化原理的进一步理解

实验步骤

对 Lena 图像计算累积直方图并应用均衡化变换,将原始直方图和均衡化后的直方图叠加显示以便对比。

结果分析

image-20260122132929918

可见均衡化后的直方图分布更加均匀

3.4 直方图规定化

Part 1: 同场景不同曝光图像的差异

实验目的

直方图规定化是将一幅图像的直方图变换成指定的目标直方图。与均衡化不同,规定化的目标不是均匀分布,而是任意指定的分布。

实验步骤

读取两张图像 vue1.tif(图像 u)和 vue2.tif(图像 v),它们拍摄的是同一场景,但曝光参数不同。计算并显示两图的逐像素差值的绝对值 |u - v|,以直观展示曝光差异造成的影响。

结果分析

image-20260122133034325

可见由于曝光,灰度分布差异明显

Part 2: 直方图匹配算法

实验目的

算法基于一个简单的思想:将两幅图像的像素分别按灰度值排序,然后建立一一对应的映射关系,将图像 u 的直方图变换为图像 v 的直方图。具体步骤为:

  1. 将图像 u 展平为一维数组,并获取按灰度值排序的索引 \text{ind}
  2. 将图像 v 展平并排序得到 \text{sort}(v)
  3. 构造新图像:u_{\text{new}}[\text{ind}] = \text{sort}(v)

这样,u 中最暗的像素被赋予 v 中最暗的值,u 中第二暗的像素被赋予 v 中第二暗的值,依此类推。由于排序后的数组决定了直方图的形状,u_{\text{new}} 必然具有与 v 相同的直方图。

实验步骤

使用 np.argsort 获取排序索引,使用 np.sort 对数组排序,然后按照上述算法构造新图像 u_{\text{new}}。分别显示原始图像、目标图像、匹配后的图像及其直方图,并对比匹配前后的差异图像。

结果分析

image-20260122133227413

上方四幅图像展示了直方图匹配的效果。第一幅是原始图像 u,较暗;第二幅是目标图像 v,较亮;第三幅是将 u 的直方图匹配到 v 后的结果 u_{\text{new}},可以看到其亮度和对比度与 v 非常接近;第四幅是新的差异图 |u_{\text{new}} - v|,相比Part 1中的 |u - v| 明显变暗,说明差异大幅减小。

u 的直方图主要集中在低灰度区域,v 的直方图峰值更高(图像更亮)。得到的u_{\text{new}} 的直方图与 v 的直方图形状一致,差异分布对比图显示(|u_{\text{new}} - v|)曲线几乎集中在0附近,说明匹配后两图的像素值非常接近,证明直方图匹配有效地消除了曝光差异。

Part 3: 线性变换替代方案

实验目的

对于同一场景不同曝光的图像,如果两张图像仅因曝光不同而产生灰度差异,理论上它们之间应该存在近似的线性关系 v \approx k \cdot u + b。因此可以尝试通过匹配两图的均值和标准差来构造线性变换:

u_{\text{linear}} = \frac{u - \mu_u}{\sigma_u} \cdot \sigma_v + \mu_v

其中 \mu_u, \sigma_u 是图像 u 的均值和标准差,\mu_v, \sigma_v 是图像 v 的均值和标准差。这个变换将 u 标准化后再按 v 的统计特性进行缩放和平移。

实验步骤

分别计算两图的均值和标准差,应用上述线性变换得到 u_{\text{linear}},并与目标图像 v 进行对比。

结果分析

image-20260122133519651

可见简单的线性变换已经能够获得不错的效果

Part 4: 用直方图规定化实现均衡化

实验步骤

使用 np.linspace(0, 255, n_pixels) 生成一个均匀分布的参考数组,其中 n_pixels 是图像的总像素数。然后应用Part 2中的直方图匹配算法,将原图像与均匀数组进行匹配。同时使用累积直方图方法(3.3节的标准均衡化)计算另一个结果,以便对比两种方法。

结果分析

image-20260122133638366

可以观察到两种均衡化方法产生的结果基本一致,都表现出增强的对比度

3.5 抖动

Part 1: 图像量化

实验目的

抖动是一种在有限颜色数目下模拟更多灰度级的技术,最早用于只能输出黑白两色的打印设备。

实验步骤

使用 quantize(im, n) 函数将图像分别量化为 n = 16, 8, 4, 2 个灰度级,观察量化级数减少对图像质量的影响。

结果分析

image-20260122133746652

随着从256级到2级,量化效果越来越丢失灰度信息,细节严重丢失

Part 2: 简单阈值处理与抖动对比

实验目的

比较两种将灰度图像转换为二值图像的方法:简单阈值处理和抖动(Dithering)。简单阈值处理直接将灰度值与阈值比较,大于等于阈值的像素变白,小于阈值的变黑。抖动方法则是先向图像添加随机噪声,再进行阈值处理。噪声的引入使得边界处的像素有一定概率变白或变黑,从而通过黑白点的疏密来模拟灰度渐变。

实验步骤

使用 seuil(im, 128) 对原图进行阈值处理得到二值图像。对于抖动,先用 noise(im, 40) 添加标准差为40的高斯噪声,再进行阈值处理。同时显示局部放大图以便观察细节差异。

结果分析

image-20260122133938449

简单阈值的结果图细节信息不足,而抖动处理结果更加清晰,这是因为抖动使用空间分辨率换取灰度分辨率,增加了区域密度

Part 3: 抖动的概率分析

实验目的

从概率角度理解抖动的工作原理。设原始像素灰度值为 x,添加的高斯噪声服从 \mathcal{N}(0, \sigma^2),阈值为128。则该像素变为白色的概率为:

P(\text{white}) = P(x + \text{noise} \geq 128) = P(\text{noise} \geq 128 - x) = 1 - \Phi\left(\frac{128 - x}{\sigma}\right)

其中 \Phi 是标准正态分布的累积分布函数。这个概率与原始灰度值 x 之间的关系决定了抖动效果的质量。

实验步骤

绘制 P(\text{white}) 关于灰度值 x 的曲线,并比较不同噪声标准差 \sigma = 10, 20, 40, 60 对曲线形状的影响。

结果分析

image-20260122134132955

Part 4: 不同噪声强度的抖动效果

实验目的

验证Part 3中的理论分析,通过实验观察不同噪声强度对抖动效果的影响。

实验步骤

分别使用 \sigma = 10, 20, 40, 80 的高斯噪声进行抖动处理,与简单阈值处理的结果进行对比。

结果分析

image-20260122134247484

随着噪声强度的增加,过小的噪声抖动不足,过大则噪声过度。因此要根据具体情况选择最优的 \sigma

3.6 相邻灰度级差异

Part 1: 计算图像梯度

实验目的

研究图像中相邻像素之间灰度级差异的统计特性。定义水平方向梯度为相邻像素的差值:

g_x[i, j] = I[i, j+1] - I[i, j]

同理,垂直方向梯度为:

g_y[i, j] = I[i+1, j] - I[i, j]

梯度图像能够反映原图像的边缘信息:在平坦区域梯度接近零,在边缘处梯度值较大。

实验步骤

使用 gradxgrady 函数分别计算水平和垂直方向的梯度图像,并进行可视化。由于梯度值可正可负,显示时灰色表示零值,亮色表示正值,暗色表示负值。

结果分析

image-20260122134353958

水平梯度 g_x 对垂直边缘敏感,垂直梯度 g_y 对水平边缘敏感。两个梯度图像的组合包含了图像的完整边缘信息。

Part 2: 梯度的直方图

实验目的

观察梯度值的统计分布特性。如果将梯度值视为随机变量,其直方图就是该随机变量的经验分布。

实验步骤

分别绘制水平梯度 g_x、垂直梯度 g_y 以及合并后所有梯度值的直方图,观察分布的形态特征。

结果分析

image-20260122134433816

Part 3: 对数坐标下的直方图

实验目的

使用对数坐标更清晰地观察梯度分布的尾部特性。如果分布是高斯分布 p(x) \propto e^{-x^2/(2\sigma^2)},则对数直方图应呈现抛物线形状,因为 \log p(x) \propto -x^2。通过对比实际分布与高斯分布的差异,可以揭示自然图像梯度的统计特性。

实验步骤

将梯度直方图以线性坐标和对数坐标分别显示,观察曲线形状的差异。

结果分析

image-20260122134501243

线性坐标下的梯度直方图难以观察尾部细节,对数直方图可以看到振荡形式的尾部

Part 4: 与高斯分布和拉普拉斯分布的对比

实验目的

定量比较图像梯度的实际分布与两种理论分布:高斯分布和拉普拉斯分布。高斯分布的概率密度函数为:

p_G(x) = \frac{1}{\sqrt{2\pi}\sigma} \exp\left(-\frac{x^2}{2\sigma^2}\right)

拉普拉斯分布的概率密度函数为:

p_L(x) = \frac{1}{2b} \exp\left(-\frac{|x|}{b}\right)

两者的主要区别在于:高斯分布在对数坐标下呈抛物线(\log p_G \propto -x^2),而拉普拉斯分布在对数坐标下呈V形直线(\log p_L \propto -|x|)。

实验步骤

计算梯度的均值和标准差,用相同参数生成高斯分布和拉普拉斯分布的理论曲线,与实际梯度直方图进行对比。分别在线性坐标和对数坐标下进行可视化。

结果分析

image-20260122134702935

可见拉普拉斯分布和实际分布更接近

Part 5: 不同距离像素差异的分布

实验目的

研究当计算差异的像素距离增大时,分布会如何变化。定义距离为 d 的差异为:

g_d[i, j] = I[i, j+d] - I[i, j]

d 增大时,两个像素之间跨越更多区域,可能经过更多的边缘,因此差异值的方差应该增大。

实验步骤

分别计算 d = 1, 2, 5, 10 时的像素差异,并在对数坐标下显示其直方图。

结果分析

image-20260122134754385

随着距离 d 增大,分布明显变宽,产生较大的灰度差异,但分布曲线形状不变,仍然表现为尖峰+ 重尾

4.1 频谱可视化

Part 1: 基本频谱显示

实验目的

傅里叶变换将图像从空间域转换到频率域,揭示图像中各个空间频率分量的强度。对于二维图像 I(x, y),其二维傅里叶变换定义为:

F(u, v) = \sum_{x=0}^{M-1} \sum_{y=0}^{N-1} I(x, y) \exp\left(-j2\pi\left(\frac{ux}{M} + \frac{vy}{N}\right)\right)

频谱是傅里叶变换的幅度 |F(u, v)|。频谱图像中,中心对应零频率(图像的直流分量,即平均亮度),离中心越远对应越高的空间频率(越精细的细节)。

实验步骤

使用 np.fft.fft2 计算二维FFT,np.fft.fftshift 将零频率移到图像中心。由于频谱的动态范围极大(中心的低频能量远大于边缘的高频能量),通常需要取对数 \log(1 + |F|) 来压缩动态范围以便观察。

结果分析

image-20260122134908542

线性频谱由于低频分量的能量远大于高频分量,因此线性显示无法同时呈现两者,几乎全黑色,对数显示频谱中心最亮(低频能量最强),且有十字形或斜向条纹,这是由于图像边界不连续造成的伪影产生的

Part 2: 不同图像的频谱对比

实验步骤

分别计算 Lena 图像和地图图像(carte_nb.tif)的频谱,使用对数显示进行可视化对比。

结果分析

image-20260122135058982

Part 3: Hamming 窗的作用

实验目的

图像在进行傅里叶变换时被隐式地视为周期信号,如果图像的左右边缘或上下边缘灰度值不连续,这种"周期延拓"会导致频谱中出现十字形伪影。Hamming 窗通过将图像边缘平滑过渡到零来消除这种不连续性。二维 Hamming 窗定义为:

w(x, y) = \left(1 - \cos\frac{2\pi x}{M-1}\right) \left(1 - \cos\frac{2\pi y}{N-1}\right)

窗函数在图像中心为最大值,向边缘逐渐衰减到零。

实验步骤

将原图像乘以 Hamming 窗,分别计算加窗前后的频谱并进行对比。同时显示 Hamming 窗本身和两个频谱的差异图。

结果分析

image-20260122135141226

加窗后的图像边缘变暗,频谱十字形条纹基本消失,证实了 Hamming 窗确实有效地消除了边界伪影。

Part 4: 条纹图像的频谱

实验目的

分析具有强周期性的条纹图像的频谱特征。条纹图像由于其规则的空间周期性,在频谱中会产生离散的峰值,这些峰值的位置和方向与条纹的频率和方向直接相关。

实验步骤

读取条纹图像(若不存在则合成一幅斜条纹图像),分别计算加窗前后的频谱,并放大频谱中心区域以便观察峰值结构。

结果分析

image-20260122135246135

Part 5: 下采样对频谱的影响

实验目的

研究图像下采样(降低分辨率)对频谱的影响。下采样是指每隔若干个像素取一个样本,例如2倍下采样就是每隔1个像素取1个,图像尺寸缩小为原来的一半。根据奈奎斯特采样定理,如果原图像中存在高于新采样率一半的频率分量,下采样会导致混叠(aliasing)现象——高频信号被错误地解释为低频信号。

实验步骤

对原始 512 \times 512 图像分别进行2倍下采样(得到 256 \times 256)和4倍下采样(得到 128 \times 128),使用 im[::2, ::2]im[::4, ::4] 实现。分别计算三幅图像的频谱并进行对比。

结果分析

image-20260122135358120

下采样后,频谱的像素数量减少,但频谱所代表的频率范围不变,那么导致频谱的密度降低,且发生了频谱折叠(aliasing),使得结果图非常不清晰

4.2 振铃效应

Part 1: 理想低通滤波器

实验目的

理想低通滤波器在频域中直接截断高于截止频率的所有分量,其频率响应为:

H(u, v) = \begin{cases} 1, & \sqrt{u^2 + v^2} \leq f_c \\ 0, & \sqrt{u^2 + v^2} > f_c \end{cases}

其中 f_c 是截止频率。这种滤波器在频域具有完美的截止特性,但会在空间域产生振铃效应(Ringing),也称为吉布斯现象(Gibbs phenomenon)。

实验步骤

使用 filterlow 函数对图像应用理想低通滤波器,截止频率设为最高频率的四分之一。观察滤波后的图像,特别是边缘附近的振铃现象。同时显示滤波前后的频谱以及滤波器的频域掩模。

结果分析

image-20260122135509726

滤波后的频谱只保留了中心的矩形区域,高频分量被完全置零,可看到明显的振铃效应

Part 2: 高斯低通滤波器对比

实验目的

高斯低通滤波器使用高斯函数作为频率响应,在频域具有平滑的过渡而非尖锐的截止:

H(u, v) = \exp\left(-\frac{u^2 + v^2}{2\sigma^2}\right)

由于高斯函数的傅里叶变换仍是高斯函数,高斯滤波器在空间域也是平滑衰减的,不会产生振荡,因此可以避免振铃效应。

实验步骤

使用 filtergauss 函数对同一图像应用高斯低通滤波,并与理想低通滤波的结果进行对比。特别关注局部放大图中边缘区域的表现。

结果分析

image-20260122135542251

理想低通滤波后,帽子边缘出现了明显的波纹状振铃,严重影响了图像质量。高斯低通滤波后,边缘同样变得模糊,但过渡是平滑的,没有波纹状伪影

Part 3: 滤波器形状对比分析

实验目的

从频域和空间域两个角度深入理解两种滤波器产生不同效果的原因。

实验步骤

分别构造理想低通和高斯低通滤波器的频域掩模,通过逆傅里叶变换计算它们的空间域冲激响应。分别以二维图像和一维切片的形式显示,以便直观比较。

结果分析

image-20260122135614903

理想低通滤波器存在明显的不连续性,高斯滤波器从中心向外平滑衰减,没有不连续点。

理想低通滤波器的冲激响应中心有一个亮点,周围环绕着逐渐衰减的明暗交替的环,这就是sinc函数的二维形式,其振荡的旁瓣正是造成振铃效应的原因。高斯滤波器的冲激响应只有中心一个亮点,没有任何振荡结构。


评论