VCI - 7: 图像表示与处理

6.1 图像的定义

图像(Image) 是二维平面上光能量的分布,可以表示为:

\[E(x, y, \lambda, t)\]

其中:

  • \(x, y\) - 空间位置坐标
  • \(\lambda\) - 波长(蓝色、绿色、黄色、红色、紫色等)
  • \(t\) - 时间

这是一个连续表示,在计算机中难以直接表示,需要进行离散化处理。

成像过程: 光源照射场景中的物体,反射的光线经过成像系统(如相机镜头)后,在图像平面上形成光能量的二维分布。这个分布就是我们所说的图像。


6.2 图像的表示方法

6.2.1 矢量表示 (Vector Representation)

优点:

  • 任意分辨率,可无限缩放
  • 适合线条图(文本、图标等)
  • 文件小(只存储数学描述)

缺点:

  • 可能重复绘制同一点
  • 难以表示复杂的颜色变化
  • 不适合照片类图像

应用: SVG格式、矢量图形编辑器

6.2.2 栅格表示 (Raster Representation)

优点:

  • 适合彩色图像
  • 通用性强,能表示任何图像
  • 显示速度快

缺点:

  • 分辨率有限(存在锯齿/走样)
  • 需要存储每个像素
  • 缩放会导致质量损失

应用: JPEG、PNG、BMP等图像格式

核心差异:

  • 矢量图 使用数学描述(线条、曲线、几何形状),放大后仍保持清晰
  • 栅格图 使用像素网格存储,放大后会出现锯齿和像素化现象
  • 矢量适合图标和文字,栅格适合照片和复杂图像

6.3 帧缓冲区 (Framebuffer)

6.3.1 基本概念

帧缓冲区 是存储二维像素数组的内存区域。

  • 图像: 二维像素数组
  • 像素值: 控制每个像素的亮度
  • 刷新频率: 视频硬件以约60Hz的频率扫描帧缓冲区
  • 实时更新: 对帧缓冲区的修改会立即显示

6.3.2 像素深度

不同显示器支持的像素深度:

  • 黑白显示: 1 bit/pixel(位图)
  • 基础彩色显示: 8、16或24 bits/pixel
  • 高端显示: 96位或更多

工作机制: 帧缓冲区存储像素值,视频硬件以约60Hz的频率周期性扫描这些值并驱动显示器。现代显示器(LCD、OLED)本质上就是一个二维像素阵列,每个像素对应帧缓冲区中的一个存储位置。


6.4 颜色图像存储

6.4.1 全彩色 (RGB) 存储

24位色彩:

  • R、G、B各8位(每个通道0-255)
  • 例:\((255, 0, 0)\) 表示纯红色,\((255, 255, 255)\) 表示白色
  • 可产生 \(2^{24} = 16,777,216\) 种颜色

15位色彩:

  • R、G、B各5位
  • 较低的颜色精度,但存储空间减半

存储方式: 每个像素存储R、G、B三个独立分量,视频硬件使用这些值驱动显示器的红、绿、蓝电子枪(CRT)或子像素(LCD/OLED)。

6.4.2 颜色查找表 (Colormap/LUT)

索引颜色模式:

  • 每个像素存储一个索引值(如8位)
  • 索引指向颜色查找表中的RGB三元组
  • 8位索引可表示256种预设颜色

适用场景:

  • 灰度图像(灰度渐变表)
  • 预定义颜色集
  • 自适应颜色调色板

工作原理: 像素存储索引值(如112),通过查找表映射到实际的RGB值(如255, 0, 0表示红色)。这种方式可以节省存储空间(像素只需8位),但颜色数量受限(最多256种)。例如:pixel[x,y] = 112 → LUT[112] = (255, 0, 0)


6.5 常见图像文件格式

格式 位深度 文件大小 特点
JPEG 24 有损压缩
TIFF 8, 24 中等 通用格式
GIF 1, 4, 8 中等 支持动画,8位限制
PPM 24 易于读写
EPS 1-24 巨大 适合打印
PNG 1-32 中等 无损压缩,支持透明通道
BMP 1-32 Windows位图格式

PNG格式 是现代Web和数字图像的首选格式,支持透明通道(Alpha通道),无损压缩。


6.6 Alpha通道与图像合成

6.6.1 Alpha通道

Alpha通道 是像素的额外8位,用于表示透明度:

  • \(\alpha = 0\):完全透明
  • \(\alpha = 1\):完全不透明
  • \(0 < \alpha < 1\):半透明

通常作为8位数值存储(0-255),但在数学公式中规范化为\([0, 1]\)。

6.6.2 图像合成公式

将图像\(a_2\)叠加到\(a_1\)上,使用遮罩\(\alpha\):

\[b = (1-\alpha) \cdot a_1 + \alpha \cdot a_2\]
  • \(\alpha = 0\) 或 \(1\):硬遮罩 (Hard Matte)
  • \(0 < \alpha < 1\):软遮罩 (Soft Matte)

合成效果: 通过Alpha通道,可以将前景图像\(a_2\)平滑地叠加到背景图像\(a_1\)上。Alpha通道中白色(\(\alpha=1\))表示完全不透明,黑色(\(\alpha=0\))表示完全透明,灰色(\(0<\alpha<1\))表示半透明。这使得物体边缘可以实现平滑过渡,避免生硬的锯齿边缘。

应用场景:

  • 照片修饰和特效
  • 半透明多边形渲染
  • 体积渲染

6.7 深度帧缓冲区

高端帧缓冲区可能有96位或更多,除了RGB和Alpha,还包括:

6.7.1 Z-buffer(深度缓冲区)

  • 每像素16位,存储深度值
  • 用于3D隐藏面消除
  • 总计:RGB(24) + Alpha(8) + Z(16) = 48位

6.7.2 双缓冲 (Double Buffering)

  • 目的: 实现流畅的实时动画,避免闪烁
  • 机制:
    • 维护两个完整的帧缓冲区
    • 一个可见(前缓冲区),一个不可见(后缓冲区)
    • 在后缓冲区绘制,然后瞬间交换
  • 总计: \(2 \times 48 = 96\) 位

双缓冲可以避免:

  • 绘制过程中的闪烁
  • 部分绘制的画面被看到
  • 撕裂现象

6.8 图像处理概述

图像处理 是对数字图像进行各种变换和操作的过程。

6.8.1 主要类别

1. 点处理 (Point Processing)

  • 每个像素的输出仅取决于该像素的输入值
  • \[b[x, y] = f(a[x, y])\]
  • 应用: 对比度调整、亮度变换、伽马校正

2. 滤波 (Filtering)

  • 输出是输入像素邻域的函数
  • 应用: 模糊、锐化、边缘检测

3. 其他操作

  • 图像变换(缩放、旋转、形变)
  • 图像压缩(有损/无损)
  • 图像分割
  • 图像修复(Inpainting)
  • 图像抠图(Matting)
  • 视频处理

6.9 点处理

6.9.1 基本变换

假设像素值规范化到\([0, 1]\):

函数 效果
\(f(v) = v\) 恒等(无变化)
\(f(v) = 1 - v\) 图像反转(黑变白,白变黑)
\(f(v) = v^p, \quad p < 1\) 变亮
\(f(v) = v^p, \quad p > 1\) 变暗

伽马校正 就是点处理的一种应用,用于补偿显示器的非线性响应。


6.10 图像滤波

6.10.1 线性滤波与卷积

一维卷积:

\[b[x] = \sum_{t=-\infty}^{+\infty} a[t] \cdot h[x - t]\]

简记为 \(b = a \otimes h\)

二维卷积:

\[b[x, y] = \sum_{u=-\infty}^{+\infty} \sum_{v=-\infty}^{+\infty} a[u, v] \cdot h[x - u, y - v]\]

其中:

  • \(a[x, y]\):输入信号/图像
  • \(h[x, y]\):滤波器/卷积核
  • \(b[x, y]\):输出信号/图像

卷积的性质:

  • 交换律: \(a \otimes h = h \otimes a\)
  • 线性: 满足叠加原理
  • 平移不变性: 滤波器在图像各处效果相同

6.10.2 模糊滤波器

3×3均值模糊:

\[h = \frac{1}{9} \begin{pmatrix} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{pmatrix}\]

\(n \times n\)均值模糊:

\[h = \frac{1}{n^2} \begin{bmatrix} 1 & \cdots & 1 \\ \vdots & \ddots & \vdots \\ 1 & \cdots & 1 \end{bmatrix}\]

效果说明: 滤波器窗口越大,模糊程度越强。例如3×3模糊会产生轻微的平滑效果,而5×5或更大的滤波器会导致明显的模糊和细节损失。这种滤波器常用于降噪或创建景深效果。

6.10.3 边缘检测滤波器

边缘检测的核心思想: 计算图像的梯度(一阶导数)。

图像梯度:

\[\nabla a = \left( \frac{\partial a}{\partial x}, \frac{\partial a}{\partial y} \right)\]

梯度幅值:

\[|\nabla a| = \sqrt{\left(\frac{\partial a}{\partial x}\right)^2 + \left(\frac{\partial a}{\partial y}\right)^2}\]

Sobel算子:

\[\frac{\partial}{\partial x} \Rightarrow \begin{pmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{pmatrix}, \quad \frac{\partial}{\partial y} \Rightarrow \begin{pmatrix} 1 & 2 & 1 \\ 0 & 0 & 0 \\ -1 & -2 & -1 \end{pmatrix}\]

工作原理:

  • \(x\)方向Sobel算子检测垂直边缘(左右亮度变化)
  • \(y\)方向Sobel算子检测水平边缘(上下亮度变化)
  • 通过计算\(\|\nabla a\|\)得到边缘强度图,突出显示建筑物轮廓、窗户边缘等特征
  • 注意:这是非线性滤波器,因为最终的梯度幅值计算包含平方根和平方运算

6.11 图像修复 (Image Inpainting)

6.11.1 问题定义

给定图像\(f^*\),其中某些区域\(\Omega\)的信息丢失,目标是填充这些区域使结果尽可能合理(Plausible)

“合理”的含义:

  • 空间局部性: 同一物体的邻近部分应该相似
  • 奥卡姆剃刀原则: 除非从图像其余部分推断出,否则不应存在多余信息
  • 平滑性: 平滑区域应具有尽可能小的梯度

6.11.2 Laplace编辑(拉普拉斯修复)

优化目标:

\[f^* = \arg\min_{f} \iint_{\Omega} \|\nabla f\|^2 \quad \text{s.t.} \quad f|_{\partial\Omega} = f^*|_{\partial\Omega}\]

即最小化区域内梯度的L2范数,同时保持边界值不变。

欧拉-拉格朗日方程:

\[\Delta f = 0 \quad \text{s.t.} \quad f|_{\partial\Omega} = f^*|_{\partial\Omega}\]

其中\(\Delta\)是拉普拉斯算子:

\[\Delta = \frac{\partial^2}{\partial x^2} + \frac{\partial^2}{\partial y^2}\]

这是一个泊松方程,可以通过数值方法求解。

左图中的黑色区域(标记为\(\Omega\),边界为\(\partial\Omega\))是需要修复的缺失区域,右图展示了修复后的效果。算法基于周围像素的信息,通过求解泊松方程,平滑地填充了缺失区域,使得修复结果与周围环境自然融合。


6.12 泊松编辑 (Poisson Editing)

6.12.1 问题扩展

如何向修复区域”注入”某些形状或信息?

修改优化目标:

\[f^* = \arg\min_{f} \iint_{\Omega} \|\nabla f - \mathbf{g}\|^2 \quad \text{s.t.} \quad f|_{\partial\Omega} = f^*|_{\partial\Omega}\]

其中\(\mathbf{g}\)是引导场 (Guidance Field),通常是另一张图像的梯度。

欧拉方程:

\[\Delta f = \operatorname{div}\mathbf{g} \quad \text{s.t.} \quad f\big|_{\partial\Omega} = f^*\big|_{\partial\Omega}\]

其中,若

\[\mathbf{g}=(g_x,g_y),\]

\[\operatorname{div}\mathbf{g}=\frac{\partial g_x}{\partial x}+\frac{\partial g_y}{\partial y}.\] \[\operatorname{div}\mathbf{g}=\frac{\partial g_x}{\partial x}+\frac{\partial g_y}{\partial y}.\]

该方程的物理含义是:在修复区域内注入引导场 (\mathbf{g}) 的梯度信息,使得解 (f) 在区域内部采用期望的局部变化(纹理或亮度),同时在边界 (\partial\Omega) 保持给定的边界条件,从而实现无缝融合或克隆。

特例:

  • 当\(\mathbf{g} = 0\)时,泊松编辑退化为Laplace编辑(图像修复)
  • 单色区域的填充就是这种特殊情况

6.12.2 泊松方程离散化

连续形式:

\[\Delta f = -\rho, \quad \Delta \equiv \frac{\partial^2}{\partial x^2} + \frac{\partial^2}{\partial y^2}\]

离散形式(中心差分):

\[\frac{f_{i+1,j} + f_{i-1,j} - 2f_{i,j}}{h^2} + \frac{f_{i,j+1} + f_{i,j-1} - 2f_{i,j}}{h^2} = \rho_{i,j}\]

化简为:

\[f_{i-1,j} + f_{i+1,j} + f_{i,j-1} + f_{i,j+1} - 4f_{i,j} = h^2 \rho_{i,j}\]

这形成一个稀疏线性方程组,可以用迭代方法求解(如Jacobi、Gauss-Seidel、多重网格法)。

6.12.3 应用:图像克隆

泊松编辑的典型应用是无缝图像克隆:将一张图像中的物体无缝地克隆到另一张图像中,同时自动适应目标图像的光照和色调。

上图展示了图像克隆的完整流程:源图像中选择要克隆的区域,通过泊松方程求解,使用引导梯度场\(\mathbf{g}\)控制内部纹理,同时通过边界条件$$f\big _{\partial\Omega}$$与目标场景自然融合。泊松编辑会根据边界条件自动调整颜色和亮度,实现物体与新背景的自然过渡。

6.13 图像抠图 (Image Matting)

6.13.1 问题定义

图像抠图 是图像合成的逆问题,目标是从图像中分离前景和背景。

图像合成方程:

\[I_i = \alpha_i F_i + (1 - \alpha_i) B_i\]

其中:

  • \(I\):观察到的图像
  • \(F\):前景
  • \(B\):背景
  • \(\alpha\):Alpha通道(透明度)

RGB三通道形式:

\[\begin{cases} I_i^R = \alpha_i F_i^R + (1 - \alpha_i) B_i^R \\ I_i^G = \alpha_i F_i^G + (1 - \alpha_i) B_i^G \\ I_i^B = \alpha_i F_i^B + (1 - \alpha_i) B_i^B \end{cases}\]

病态问题: 3个方程,7个未知数(\(\alpha, F_R, F_G, F_B, B_R, B_G, B_B\))

6.13.2 蓝/绿幕抠图

假设:

  • 背景已知且为纯蓝色(或绿色)
  • 前景中不含蓝色(或绿色)

简化: \(F_b = 0, B_r = B_g = 0\)

求解:

\[\begin{cases} C_r = \alpha F_r \\ C_g = \alpha F_g \\ C_b = (1 - \alpha) B_b \end{cases}\]

可以直接从蓝色通道计算\(\alpha\),从红绿通道计算前景。

缺点:

  • 前景不能有蓝/绿色成分(限制性强)
  • 蓝/绿溢色问题(Blue/Green Spilling):背景反射光会污染前景

应用: 电影特效、虚拟演播室


6.14 小结

本章介绍了图像的表示和基础处理方法:

图像表示:

  • 矢量表示 vs 栅格表示
  • 帧缓冲区与像素存储
  • RGB存储与颜色查找表
  • Alpha通道与图像合成

图像处理:

  • 点处理:对比度、亮度调整
  • 滤波:模糊、锐化、边缘检测
  • 图像修复:Laplace编辑
  • 泊松编辑:图像克隆、无缝融合
  • 图像抠图:前景背景分离

数学工具:

  • 卷积与线性滤波
  • 梯度与边缘检测
  • 拉普拉斯算子与泊松方程
  • 变分方法与优化

这些技术是现代图像编辑软件(Photoshop、GIMP)和计算机视觉算法的基础。




Enjoy Reading This Article?

Here are some more articles you might like to read next:

  • notes of ML
  • notes of VCI
  • notes of AIP
  • notes of AI Math Fundamentals
  • notes of ICS