跳转至

第1章 图像处理基础概念与彩色图像处理

一、图像数字化基础(Basic BIP Concepts)

1.1 数字图像的类型

位图(bitemap): 由许多像素表示的图像,每个像素具有颜色属性和位置属性。位图可分为强度图像、索引彩色图像和真彩色图像。

矢量图像(Vector Images):利用几何形状(如点、线段和曲线)来描述图像的轮廓,并根据轮廓用颜色填充图像以展现图像内容。矢量图形通过矢量(向量)来描述边缘方向,从而描绘图像的轮廓。

区别:

  • 因为矢量图形使用几何图形来描述轮廓,因此图像可以无限放大而仍然清晰显示。而位图放大后会变模糊。

  • 矢量图形难以生成具有丰富色调或过多色彩变化的图像,例如自然场景图像。

  • 位图使用像素来形成图像,适合展示色彩丰富的图像。医学图像基本上是位图。

  • 位图文件通常比矢量图形更大。

1.2 数字图像的存储格式

BMP(未压缩):每个像素位置对应图像中该像素的空间位置,位图数据值对应相应像素的亮度值。

TIFF(标签图像文件格式):支持多种编码方式,包括未压缩的RGB、RLE压缩及JPEG压缩等,同时具备可扩展性、便捷性及可修改性。ATTIFF图像由三个数据结构组成:文件头、一个或多个名为IFDs的目录(其中包含标记指针)以及数据本身。

JPG:JPEG是最为流行的高效率静态图像压缩标准格式之一。在保存图像文件时,JPEG通过压缩编码来减小文件大小,并删除那些对视觉认知而言并不重要的图像信息,从而节省存储空间并降低传输流量。

GIF(图形交换格式):基于LZW算法的连续色调无损压缩格式,其压缩率通常约为50%,常用于网页动画。

DICOM:医学影像与通信,定义了一种可用于数据交换的医学图像格式,其质量符合临床需求。广泛应用于医学影像(如X光、CT、磁共振成像、超声等),并在眼科和牙科等其他医疗领域也得到广泛接受。

1.3 图像数字化的两个步骤

物理信号(连续信号)经过数字化(Digitalization)变成数字信号,包含两个核心步骤:

采样(Sampling)+ 量化(Quantization)→ 数字图像

1.4 采样(Sampling)

基本概念

  • 采样将空间连续的图像 \(f(x,y)\) 转换为离散的像素矩阵
  • 采样结果:图像大小 \(M \times N\)(矩阵的行数和列数)
  • 采样分为:
    • 时间采样(Temporal Sampling):沿时间轴离散化(一维信号)
    • 空间采样(Spatial Sampling):沿空间轴离散化,将图像空间划分成网格(二维信号,图像)

一维切片(Line Plot)

对一幅二维图像沿某个方向取一条线(切片),得到该位置像素灰度值沿该方向变化的一维曲线,称为 Line Plot。这是理解图像空间变化的重要工具——可以看作是图像在该位置的"剖面图"。\(0\) 表示黑色(Black),\(2^N-1\) 表示白色(White)

三种典型的切片方向:水平切片(沿 \(x\) 方向 \(y\) 固定)、垂直切片(沿 \(y\) 方向 \(x\) 固定)、任意方向切片。

物理分辨率 vs 矩阵尺寸

注意

物理分辨率(Physical Resolution)≠ 矩阵尺寸(Matrix Size)

  • 物理分辨率 = 像素代表的实际物理尺寸(如 \(1 \times 1\text{mm}\)\(2 \times 2\text{mm}\)
  • 矩阵尺寸 = 像素的数量(如 \(256 \times 256\)\(128 \times 128\)

img

采样效应

  • 采样点越密集(矩阵越大),图像细节保留越多
  • \(256 \times 256 \to 128 \times 128 \to 64 \times 64 \to 16 \times 16\):随着采样数减少,图像变得模糊

1.5 量化(Quantization)

基本概念

  • 量化将连续灰度值映射为离散灰度级(Gray Levels)
  • 量化级数:\(K = 2^N\)(N 为比特深度/位深度,bit depth)
  • 8 位图像:\(K = 2^8 = 256\) 级灰度,范围 \([0, 255]\)
  • \(0\) 表示黑色(Black),\(2^N-1\) 表示白色(White)

动态范围与存储大小

  • 动态范围(Dynamic Range):图像中最亮与最暗部分的比值。动态范围越大,图像能展示的明暗层次越丰富
  • 存储大小(Storage Size)\(M \times N \times K\)(行 × 列 × 位深度)

量化效应

  • 量化级数越少,灰度层次越少,出现伪轮廓(False Contour)
  • \(K=8 \to K=4 \to K=2\):灰度阶跃越来越明显
  • 高动态范围(HDR):使用更高的位深度捕捉更丰富的光照信息
参数 含义 符号
矩阵行数 图像高度 \(M\)
矩阵列数 图像宽度 \(N\)
量化级数 灰度级数 \(K = 2^{\text{bit depth}}\)
存储大小 总存储空间 \(M \times N \times K\)

二、插值(Interpolation)

2.1 插值的定义

插值是一种基本工具,广泛用于图像的缩放、缩小、旋转和其他几何变换中。它是从已知范围内的离散数据点恢复连续数据的过程。

  • 1-D 插值:从 \((x_1, y_1)\) 恢复 \(y = f(x)\)
  • 2-D 插值:从 \((x_1, y_1, z_1)\) 恢复图像表面
  • 3-D 插值:体素插值(体积图像)

2.2 像素邻域(Pixel Neighborhood)

img

在 2-D 图像中,像素 \((x,y)\) 的邻域定义为:

  • 4-邻域(4-neighbors)\(N_4(p)\)

$$ (x+1,y), (x-1,y), (x,y+1), (x,y-1) $$

  • 8-邻域(8-neighbors)\(N_8(p)\)

$$ N_4(p) \cup {(x+1,y+1), (x-1,y+1), (x+1,y-1), (x-1,y-1)} $$

2.3 为什么需要插值?

在对图像进行旋转、缩放等几何变换后:

  • 目标图像的某些像素可能没有对应的源像素(空缺)

  • 多个源像素可能映射到同一个目标像素

  • 必须对源图像进行重采样(Resample)

img

解决思路:反向映射(Reverse Mapping)——从目标图像坐标反推源图像对应位置,再通过插值获取该位置的像素值。

2.4 常用插值方法

(1)最近邻插值(Nearest Neighbor, NN)

最简单的插值方法,直接取离目标点最近的源像素值

  • 优点:计算速度快
  • 缺点:会产生锯齿状边缘(图像不够平滑)

(2)双线性插值(Bilinear Interpolation)

使用目标点周围 4 个像素\(2 \times 2\) 邻域)进行线性插值:

\[f(x,y) = ax + by + cxy + d\]

其中 \(a, b, c, d\)\(N_4\) 邻域的 4 个像素确定。

img

计算步骤

首先沿 \(x\) 方向做两次线性插值得到 \(R_1\)\(R_2\)

\[R_1 = \frac{(x - x_1)(f_{21} - f_{11})}{x_2 - x_1} + f_{11}\]
\[R_2 = \frac{(x - x_1)(f_{22} - f_{12})}{x_2 - x_1} + f_{12}\]

然后在 \(y\) 方向上再做一次线性插值:

\[f(x,y) = \frac{(y - y_1)(R_2 - R_1)}{y_2 - y_1} + R_1\]
计算示例

img

已知 \((1,1)=2\), \((3,1)=4\), \((1,3)=6\), \((3,3)=8\),求 \((2.5, 2.25)\) 的值:

  1. 第一次线性插值(在 \(x\) 方向上):

$$ R_1 = \frac{(2.5-1)(4-2)}{3-1} + 2 = 3.5 $$

$$ R_2 = \frac{(2.5-1)(8-6)}{3-1} + 6 = 7.5 $$

  1. 第二次线性插值(在 \(y\) 方向上):

$$ f(2.5, 2.25) = \frac{(2.25-1)(7.5-3.5)}{3-1} + 3.5 = 6 $$

  • 优点:比最近邻更平滑
  • 缺点:有一定模糊效应

(3)双三次插值(Bi-Cubic Interpolation,仅作了解即可)

使用目标点周围 16 个像素\(4 \times 4\) 邻域)进行更高阶插值:

1-D 形式(使用 4 个点):

\[ f(x) = \sum_{i=0}^{3} a_i x^i = a_0 + a_1 x + a_2 x^2 + a_3 x^3 \]

满足条件:\(f(x_i) = y_i\)\(f(x_{i+1}) = y_{i+1}\)

使用拉格朗日基函数(Lagrange Basis Function)

\[ L_i(x) = \prod_{k=0, k\neq i}^{3} \frac{x - x_k}{x_i - x_k} \]
\[ f(x) = \sum_{i=0}^{3} y_i \cdot L_i(x) \]

2-D 形式(使用 16 个点): $$ f(x,y) = \sum_{i=0}^{3} \sum_{j=0}^{3} a_{ij} \cdot x^i \cdot y^j $$

其中 \(a_{ij}\)\(N_{16}\) 邻域的 16 个像素确定。

(4)其他方法

样条插值(Spline)、小波插值(Wavelet)、基于深度学习的超分辨率(Super-Resolution)等。

2.5 插值方法对比

方法 使用像素数 特点
最近邻 NN 1 个 快速但锯齿明显
双线性 Bilinear 4 个 平滑但有模糊
双三次 Bi-Cubic 16 个 最精细,计算量大

三、彩色图像处理(Color Image Processing)

3.1 彩色视觉基础(Color Fundamentals)

人眼中的感光细胞

  • 视锥细胞(Cones):负责彩色视觉
  • 人眼有约 \(6-7 \times 10^6\) 个视锥细胞
  • 65% 的视锥细胞对红光敏感,33% 对绿光敏感,2% 对蓝光敏感(但蓝光最敏感)
  • 因此三基色为 RGB

光谱分布

  • 反射(Reflect)+ 吸收(Absorption)= 入射光
  • RGB 三基色并不能合成所有颜色(存在可见色域的限制)

3.2 彩色模型(Color Models)

(1)RGB 模型

  • 基于硬件设备的彩色模型
  • 用于显示器、相机
  • 三个通道分别存储 R、G、B 的值
  • 每个通道 8 bits → 范围 \([0, 255]\)
  • 归一化后范围为 \([0, 1]\)
  • 像素深度(Pixel Depth):总位数 = \(8 \times 3 = 24\) bits
  • 可表示的颜色数:\((2^8)^3 = 16,777,216\) 种颜色

(2)CMY / CMYK 模型

  • 基于颜料和打印机的彩色模型
  • CMY 是 RGB 的补色:
\[\begin{bmatrix} C \\ M \\ Y \end{bmatrix} = \begin{bmatrix} 1 \\ 1 \\ 1 \end{bmatrix} - \begin{bmatrix} R \\ G \\ B \end{bmatrix}\]
  • CMYK:在 CMY 基础上增加 K(黑色,true black)
  • 原因:CMY 三色混合理论上产生黑色但实际效果不佳,需专用黑色

(3)HSI 模型

  • 基于人眼感知的彩色模型,将颜色分解为三个独立分量:
分量 含义 描述
Hue(色调) 混合波长 人眼感知的颜色类型(红、蓝、绿等)
Saturation(饱和度) 纯度 色调中白光量的多少,\(\text{Pink} = a \cdot \text{red} + b \cdot \text{white}\)
Intensity(亮度) 明暗 无色的亮度信息(与颜色无关)
RGB → HSI 转换公式
\[I = \frac{R + G + B}{3}\]
\[S = 1 - \frac{3}{R + G + B} \cdot \min(R, G, B)\]
\[H = \cos^{-1}\left\{\frac{0.5[(R - G) + (R - B)]}{\sqrt{(R - G)^2 + (R - B)(G - B)}}\right\}\]

img

转换示例

将 RGB 彩色图像分解为 H、S、I 三个通道:

  • Hue 通道:表示颜色种类

  • Saturation 通道:颜色越鲜艳越亮(高饱和度),越淡越暗(低饱和度)

  • Intensity 通道:与灰度图类似,反映整体明暗

3.3 伪彩色(Pseudocolor)

定义

伪彩色(False Color):将灰度图像映射为彩色图像的技术。

为什么需要伪彩色?

  • 人眼能分辨的彩色色调和强度远多于灰度级
  • 人眼只能分辨约 30 种灰度,但可以分辨上千种颜色
  • 伪彩色能提供比灰度图像更丰富的信息

伪彩色的方法

(1)强度分层与颜色编码(Intensity Slicing and Color Coding)
  • 将灰度范围划分为多个区间
  • 每个区间分配不同颜色
  • 例如:用 8 种颜色对灰度图进行强度分层
(2)多模态融合(Multi-modality)
  • 将不同成像模态的图像分别赋给 R、G、B 通道
  • 例如:可见光(R+G+B)与近红外 IR(biomass content)融合
  • IR+G+B 合成能更清晰地表征地物信息
(3)标签着色(Assigning Colors to Labels)
  • 将分割结果中的不同标签分配不同颜色
  • 便于可视化分类/分割结果
(4)方向编码彩色图(Directional Encoded Colormap)
  • 用于纤维束追踪(Tractography)
  • 不同方向用不同颜色表示(如左右方向=红色,前后方向=绿色,上下方向=蓝色)
  • 生成方向编码彩色图(Directional Encoded Colormap)

3.4 彩色图像处理须知

  • 灰度图像:\(N \times M\)(2-D 矩阵)
  • 彩色图像:\(N \times M \times 3\)(3-D 矩阵,多一个颜色通道维度)
  • 彩色图像处理的基础方法与灰度图像相似,但需处理三个通道

四、本章总结(Outline)

基础图像概念

  • 采样(Sampling):空间化图像 → 矩阵索引 \(N \times M\)

    • 物理分辨率 ≠ 矩阵尺寸
    • 时间采样 vs 空间采样
  • 量化(Quantization):图像强度 → 矩阵值 \(K = 2^N\)

    • 比特深度决定灰度级数
    • 动态范围与存储大小 \(M \times N \times K\)
  • 插值(Interpolation):索引 \((x,y)\) + 强度 \((v)\)

    • 最近邻:1 个像素,速度快
    • 双线性:4 个像素,平滑但有模糊
    • 双三次:16 个像素,最精细
    • 反向映射 → 强度赋值

彩色图像处理

  • 彩色模型

    • RGB(显示器/相机)
    • CMY/CMYK(颜料/打印机),\(C=1-R\)
    • HSI(人眼感知),Hue/Saturation/Intensity
  • 伪彩色(Pseudocolor)

    • 伪彩色 ≠ 真彩色(False Color)
    • 强度分层、多模态融合、方向编码、标签着色
    • 提供比灰度图像更丰富的信息

历年卷解答

一、给图做切片,选择正确的一维结果(2020 / 2021 / 2022 均考)

知识点定位:采样(Sampling)中的 Line Plot

解题思路:对二维图像取一条线(切片),即为在该位置做一维剖面(Line Plot),得到沿该方向灰度值变化的一维曲线。该曲线反映了灰度值沿切片方向的变化趋势。

  • 如果在灰度均匀区域切片 → 一维曲线近似水平直线
  • 如果在灰度变化区域(如边缘处)切片 → 一维曲线有明显阶跃/跳变
  • 如果在渐变区域切片 → 一维曲线呈缓慢上升或下降趋势

具体答案取决于题目所给图像和切片位置。判断原则:切片结果 = 原图沿切片方向的灰度剖面曲线,需要与图像的几何结构和灰度分布对应。注意点:0为黑色,最大值为白色


二、空间变换 + 双线性插值(2020 / 2021)

知识点定位:插值(Interpolation)中的双线性插值

解题思路

  1. 空间变换(如旋转、缩放)后像素坐标通常变为非整数,无法直接对应到源图像的整数像素位置
  2. 采用反向映射(Reverse Mapping):从目标图像坐标 \((x',y')\) 逆向映射回源图像坐标 \((x,y)\)
  3. 对非整数坐标 \((x,y)\),用双线性插值计算该点的像素值

双线性插值核心公式

对于落在 \((x_1,y_1), (x_2,y_1), (x_1,y_2), (x_2,y_2)\) 四个已知像素之间的点 \((x,y)\)

先沿 \(x\) 方向线性插值:

\[R_1 = \frac{(x-x_1)f(x_2,y_1)+(x_2-x)f(x_1,y_1)}{x_2-x_1}\]
\[R_2 = \frac{(x-x_1)f(x_2,y_2)+(x_2-x)f(x_1,y_2)}{x_2-x_1}\]

再沿 \(y\) 方向线性插值:

\[f(x,y) = \frac{(y-y_1)R_2+(y_2-y)R_1}{y_2-y_1}\]

作图要点

  • 标注四个已知像素的坐标和灰度值

  • 标注目标点 \((x,y)\) 位置

  • 标出 \(R_1\)(下边插值结果)和 \(R_2\)(上边插值结果)

  • 最终 \(f(x,y)\)\(R_1\)\(R_2\) 之间


三、灰阶的动态范围主要改变什么(2021)

知识点定位:量化(Quantization)中的动态范围

答案:动态范围主要改变的是图像的对比度和灰度层次

  • 动态范围 = 图像中最亮值 / 最暗值,由比特深度(bit depth)决定
  • 例如 8-bit 图像,动态范围为 256 个灰阶 \([0, 255]\)
  • 动态范围越大 → 能区分的灰度层次越丰富 → 对比度越高
  • 动态范围越小 → 相邻灰度级之间差距大 → 出现伪轮廓(False Contour)

核心结论:灰阶的动态范围主要改变图像的对比度。(增加位深度 → 增大动态范围 → 灰度表现更加细腻)


实验(LAB1)

实验 1:灰度渐变图像生成与马赫带效应

实验内容:生成 \(256 \times 256\) 平滑渐变图像和条带渐变图像(条带宽 16 像素,步长 16)

涉及原理

  • 采样与量化:将连续的灰度变化离散化为 \(256 \times 256\) 个像素,每个像素用 8-bit 整数 \([0,255]\) 表示
  • 马赫带效应(Mach Band Effect):人类视觉系统中视网膜神经节细胞的侧抑制(Lateral Inhibition)机制造成的视错觉。在两个亮度不同的相邻均匀条带交界处,人眼感知到暗侧边缘更暗、亮侧边缘更亮——尽管物理上每个条带内部亮度完全均匀。这说明人眼感知的亮度并不完全等于物理亮度
  • 该效应提醒我们:在医学图像分析中,必须考虑人眼视觉特性对图像判断的影响

实验 2:灰度量化与伪轮廓

实验内容:读取灰度图像,将灰度级从 256 级压缩到 \(2^n\) 级(分别取 \(n=8,6,4\)),观察效果

涉及原理

  • 量化(Quantization):将连续/高精度灰度值映射到有限个离散灰度级。量化级数 \(K = 2^n\)\(n\) 为位深度(bit depth)
  • 量化误差与伪轮廓(False Contouring):当灰度级减少到不足以平滑过渡时,原本连续的灰度变化区域出现阶梯状色块(伪轮廓)。\(n=6\)(64级)时人眼几乎无法察觉差异;\(n=4\)(16级)时伪轮廓非常明显
  • 这解释了为什么 CT、MRI 等医学图像通常采用 12-bit 或 16-bit 高动态范围存储——微小的灰度变化可能包含关键的病理信息,低比特深度会导致信息丢失

实验 3:图像降采样/上采样与灰度剖面分析

实验内容:将图像缩小至 \(1/4\) 后再放大 4 倍恢复原尺寸,对比特定列的灰度剖面线(Profile)

涉及原理

  • 双线性插值(Bilinear Interpolation):使用目标点周围 \(2 \times 2\)(4 个像素)进行线性插值来估计未知像素值,缩放操作中 order=1 即使用双线性插值
  • 降采样的不可逆信息丢失:缩小图像时丢弃了高频细节信息(如边缘、纹理的精细变化)。再放大时,插值算法只能平滑地填补像素,无法恢复已丢失的高频信息
  • 灰度剖面线(Profile / Line Plot):沿图像某列取灰度值绘制一维曲线。原图剖面线包含丰富的高频起伏(剧烈变化),而恢复后的剖面线更平滑(高频信息丢失),直观展示了采样定理的约束——低于 Nyquist 频率的采样导致不可逆的信息损失
  • 这强调了医学影像采集阶段保持高空间分辨率的重要性

实验 4:阈值分割与伪彩色叠加

实验内容:设定阈值(\(I > \text{threshold}\))生成掩膜,将掩膜区域在红色通道高亮,生成彩色叠加图像

涉及原理

  • 阈值分割(Thresholding):根据像素灰度值与设定阈值的大小关系,将图像划分为目标区域和背景区域,生成二值掩膜(Mask)。这是最简单的图像分割方法
  • 单通道到多通道的转换:灰度图像 \(N \times M\) → 三通道 RGB 图像 \(N \times M \times 3\),通过 np.stack 复制三个相同的灰度通道
  • 伪彩色叠加(Pseudocolor Overlay):利用掩膜对特定通道赋值,是一种强度分层(Intensity Slicing)的伪彩色技术。将 ROI 区域在红色通道设为 255(亮红),绿色和蓝色通道清零 → 目标区域呈现红色高亮
  • 阈值选择的敏感性:阈值降低 → 掩膜条件宽松 → 更多像素被标记(可能包含伪阳性);阈值升高 → 掩膜条件严苛 → 只有极亮区域被标记(可能遗漏目标)。这体现了医学图像分割中最优阈值选择的重要性——需根据不同组织的灰度分布特征来设定阈值