📊 基础知识可视化
通过流程图、树图、表格等可视化方式理解视频处理核心概念
1. 视频基本概念
视频参数关系图
graph TD
A[视频 Video] --> B[帧率 FPS]
A --> C[分辨率 Resolution]
A --> D[码率 Bitrate]
A --> E[长宽比 Aspect Ratio]
A --> F[像素深度 Bit Depth]
B --> B1[24fps - 电影]
B --> B2[30fps - 电视]
B --> B3[60fps - 游戏]
C --> C1[720p 1280×720]
C --> C2[1080p 1920×1080]
C --> C3[4K 3840×2160]
D --> D1[影响质量与文件大小]
D --> D2[单位: bps/kbps/Mbps]
E --> E1[16:9 宽屏]
E --> E2[4:3 传统]
E --> E3[21:9 超宽]
F --> F1[8-bit 标准]
F --> F2[10-bit HDR]
F --> F3[12-bit 专业]
| 参数 | 定义 | 常见值 | 影响 |
|---|---|---|---|
| 帧率 (FPS) | 每秒显示帧数 | 24/30/60/120 | 流畅度、文件大小 |
| 分辨率 | 视频空间尺寸 | 720p/1080p/4K/8K | 清晰度、文件大小 |
| 码率 | 每秒数据量 | 1-50+ Mbps | 画质、文件大小 |
| 像素深度 | 每像素位数 | 8/10/12 bit | 色彩精度 |
2. 色彩空间与转换
RGB 色彩空间
- 加色模型
- R(红) + G(绿) + B(蓝)
- 适合显示设备
- 真彩色: 24-bit (8×3)
YUV/YCbCr 色彩空间
- 亮色分离模型
- Y: 亮度 (Luma)
- U/V: 色度 (Chroma)
- 适合视频压缩
RGB ↔ YUV 转换流程
flowchart LR
subgraph RGB["RGB色彩空间"]
R[Red 红]
G[Green 绿]
B[Blue 蓝]
end
subgraph Convert["色彩空间转换"]
F1[BT.601 标清]
F2[BT.709 高清]
F3[BT.2020 超高清]
end
subgraph YUV["YUV色彩空间"]
Y[Luma 亮度]
U[Chroma-U 蓝色色度]
V[Chroma-V 红色色度]
end
RGB --> Convert
Convert --> YUV
style RGB fill:#e3f2fd
style YUV fill:#f3e5f5
style Convert fill:#fff9c4
📝 RGB → YUV 转换公式 (BT.601)
Y = 0.299R + 0.587G + 0.114B U = -0.169R - 0.331G + 0.500B + 128 V = 0.500R - 0.419G - 0.081B + 128
色度采样格式对比
graph TB
A[色度采样 Chroma Subsampling] --> B[4:4:4]
A --> C[4:2:2]
A --> D[4:2:0]
A --> E[4:1:1]
B --> B1[无色度采样]
B --> B2[最高质量]
B --> B3[专业后期]
C --> C1[水平采样减半]
C --> C2[高质量]
C --> C3[专业视频]
D --> D1[水平垂直各减半]
D --> D2[最常用]
D --> D3[消费级视频]
E --> E1[水平采样1/4]
E --> E2[最低质量]
E --> E3[视频会议]
3. 容器格式与编码格式
容器 vs 编码 区别
graph LR
A[视频文件] --> B[容器 Container]
B --> C[视频流 Video Stream]
B --> D[音频流 Audio Stream]
B --> E[字幕 Subtitles]
B --> F[元数据 Metadata]
C --> G[编码格式 Codec]
G --> G1[H.264/AVC]
G --> G2[H.265/HEVC]
G --> G3[VP9]
G --> G4[AV1]
style B fill:#e3f2fd
style G fill:#f3e5f5
| 容器格式 | 特点 | 支持编码 | 应用场景 |
|---|---|---|---|
| MP4 | 兼容性最好,广泛支持 | H.264, H.265, AAC | 网络视频、移动设备 |
| MKV | 开源,支持多轨道 | 几乎所有编码 | 高清电影、多语言 |
| WebM | Web优化,免费开源 | VP9, AV1, Opus | HTML5视频 |
| MOV | Apple格式,质量高 | H.264, ProRes | Apple设备、专业制作 |
编码格式发展历程
timeline
title 视频编码发展历程
1998 : MPEG-2 : DVD, 数字电视
2003 : H.264/AVC : 主流编码, 广泛应用
2008 : VP8 : Google开源
2013 : H.265/HEVC : 50%压缩提升
2013 : VP9 : YouTube采用
2018 : AV1 : 免费开源, 新一代编码
4. 图像处理基础
图像处理方法分类
graph TB
A[图像处理] --> B[空域处理]
A --> C[频域处理]
B --> B1[线性滤波]
B --> B2[非线性滤波]
B --> B3[形态学操作]
B1 --> B1a[均值滤波]
B1 --> B1b[高斯滤波]
B1 --> B1c[卷积运算]
B2 --> B2a[中值滤波]
B2 --> B2b[双边滤波]
C --> C1[傅里叶变换 DFT/FFT]
C --> C2[频域滤波]
C2 --> C2a[低通滤波 - 去噪]
C2 --> C2b[高通滤波 - 边缘增强]
style A fill:#667eea,color:#fff
style B fill:#764ba2,color:#fff
style C fill:#764ba2,color:#fff
线性滤波
- 均值滤波 - 简单平滑
- 高斯滤波 - 平滑去噪
- 特点: 可分离、快速
非线性滤波
- 中值滤波 - 去椒盐噪声
- 双边滤波 - 保边去噪
- 特点: 保边缘效果好
5. 图像变换技术
DCT变换编码流程
flowchart LR
A[原始图像块
8×8像素] --> B[DCT变换]
B --> C[频域系数]
C --> D[量化]
D --> E[量化后系数]
E --> F[熵编码]
F --> G[压缩数据]
style A fill:#e3f2fd
style C fill:#f3e5f5
style G fill:#c8e6c9
🔑 DCT (离散余弦变换) 核心特点
- 能量集中:大部分能量集中在低频系数
- 去相关:消除像素间的相关性
- 可分离:2D DCT可分解为两次1D DCT
- 快速算法:有高效的快速算法实现
| 变换类型 | 应用 | 优点 | 缺点 |
|---|---|---|---|
| DCT | JPEG, H.264, H.265 | 能量集中、快速算法 | 块效应 |
| DWT | JPEG 2000 | 多分辨率、无块效应 | 计算复杂 |
| DFT | 频谱分析 | 物理意义明确 | 复数计算 |
6. 边缘检测与特征提取
边缘检测方法分类
graph TB
A[边缘检测] --> B[一阶导数算子]
A --> C[二阶导数算子]
A --> D[最优边缘检测]
B --> B1[Sobel算子]
B --> B2[Prewitt算子]
B --> B3[Roberts算子]
C --> C1[Laplacian算子]
C --> C2[LoG算子]
D --> D1[Canny边缘检测]
D1 --> D1a[高斯滤波]
D1a --> D1b[计算梯度]
D1b --> D1c[非极大值抑制]
D1c --> D1d[双阈值检测]
style A fill:#667eea,color:#fff
style D fill:#764ba2,color:#fff
1. 高斯滤波
2. 计算梯度
3. 非极大值抑制
4. 双阈值检测
Canny边缘检测算法流程
7. 运动估计与运动补偿
运动估计原理
flowchart TB
A[当前帧] --> B[划分为宏块]
B --> C[块匹配算法]
C --> D[在参考帧搜索]
D --> E[找到最佳匹配]
E --> F[计算运动矢量MV]
F --> G[运动补偿预测]
H[参考帧] --> D
style A fill:#e3f2fd
style H fill:#f3e5f5
style G fill:#c8e6c9
| 搜索算法 | 搜索点数 | 精度 | 速度 |
|---|---|---|---|
| 全搜索 | 最多 | 最高 | 最慢 |
| 三步搜索 | 25点 | 中等 | 快 |
| 钻石搜索 | 较少 | 较高 | 很快 |
| 六边形搜索 | 少 | 高 | 最快 |
8. 帧类型与GOP结构
视频帧类型对比
graph TB
A[视频帧类型] --> B[I帧
Intra Frame]
A --> C[P帧
Predicted Frame]
A --> D[B帧
Bi-directional Frame]
B --> B1[帧内编码]
B --> B2[独立解码]
B --> B3[数据量最大]
B --> B4[随机访问点]
C --> C1[前向预测]
C --> C2[参考前帧]
C --> C3[数据量中等]
C --> C4[运动补偿]
D --> D1[双向预测]
D --> D2[参考前后帧]
D --> D3[数据量最小]
D --> D4[压缩率最高]
style B fill:#ffcdd2
style C fill:#c8e6c9
style D fill:#bbdefb
GOP结构示例
sequenceDiagram
participant I as I帧
participant P1 as P帧
participant B1 as B帧
participant B2 as B帧
participant P2 as P帧
participant B3 as B帧
participant B4 as B帧
Note over I: GOP开始
I->>P1: 预测参考
P1->>B1: 前向参考
P1->>B2: 前向参考
I->>B1: 后向参考
I->>B2: 后向参考
P1->>P2: 预测参考
P2->>B3: 前向参考
P2->>B4: 前向参考
P1->>B3: 后向参考
P1->>B4: 后向参考
Note over B4: GOP结束
📐 GOP (Group of Pictures) 参数
- GOP长度:两个I帧之间的帧数,影响压缩率和随机访问
- 闭合GOP:GOP独立,不依赖其他GOP
- 开放GOP:可参考其他GOP的帧,压缩率更高
- 典型结构:IBBPBBPBBP (长度为12)
9. 视频质量评估指标
质量评估方法分类
graph TB
A[视频质量评估] --> B[主观评估]
A --> C[客观评估]
B --> B1[MOS]
B --> B2[DMOS]
B --> B3[ITU-R BT.500]
C --> C1[全参考 FR]
C --> C2[部分参考 RR]
C --> C3[无参考 NR]
C1 --> C1a[PSNR]
C1 --> C1b[SSIM]
C1 --> C1c[VMAF]
C3 --> C3a[深度学习方法]
C3 --> C3b[自然场景统计]
style A fill:#667eea,color:#fff
style B fill:#764ba2,color:#fff
style C fill:#764ba2,color:#fff
| 指标 | 公式/说明 | 范围 | 应用 |
|---|---|---|---|
| PSNR | 10·log₁₀(MAX²/MSE) | >30dB 可接受 | 编码质量评估 |
| SSIM | 结构相似性指数 | [0, 1] | 感知质量评估 |
| VMAF | Netflix多方法融合 | [0, 100] | 流媒体质量 |
| MOS | 平均意见分 | [1, 5] | 主观测试 |
10. 视频压缩原理
视频压缩去除冗余
graph TB
A[视频数据冗余] --> B[空间冗余]
A --> C[时间冗余]
A --> D[编码冗余]
A --> E[视觉冗余]
B --> B1[帧内预测]
B --> B2[变换编码 DCT]
C --> C1[帧间预测]
C --> C2[运动估计补偿]
D --> D1[熵编码]
D --> D2[Huffman/算术编码]
E --> E1[量化]
E --> E2[色度采样]
style A fill:#667eea,color:#fff
style B fill:#e3f2fd
style C fill:#c8e6c9
style D fill:#fff9c4
style E fill:#f3e5f5
混合编码框架
flowchart LR
A[输入帧] --> B[帧内/帧间预测选择]
B --> C[预测编码]
C --> D[残差]
D --> E[变换 DCT]
E --> F[量化]
F --> G[熵编码]
G --> H[输出码流]
F --> I[反量化]
I --> J[反变换]
J --> K[重建帧]
K --> L[帧存储]
L --> C
style A fill:#e3f2fd
style H fill:#c8e6c9
⚡ 率失真优化 (RDO)
代价函数: J = D + λ·R D = Distortion (失真) R = Rate (码率) λ = Lagrange multiplier (拉格朗日乘子) 目标: 在给定码率下最小化失真,或在给定失真下最小化码率