图像与视频基础:像素与色彩空间、帧率分辨率、噪声模型

各位同学好,欢迎来到第二章。这一章我们聊点基础,但别小看基础——我见过太多项目栽在这些看似简单的概念上。说白了,像素、色彩、帧率、噪声,这些东西搞不清楚,后面做运动补偿和低光照增强,你连问题出在哪都不知道。

2.1 像素——图像的最小单元

像素是什么?就是一张图里最小的那个点。每个像素存一个颜色值,成千上万个像素拼在一起,就成了我们看到的画面。

我习惯把像素想象成「数字世界的感光细胞」。每个细胞记录一个颜色,细胞越多,画面越细腻。

关键指标: 一张 1920×1080 的图像,总共有 2,073,600 个像素。每个像素通常用 8 位(0-255)或 10 位(0-1023)表示亮度或颜色分量。

2.2 色彩空间——RGB 与 YUV

色彩空间,说白了就是「用哪套规则来描述颜色」。最常用的两套:RGB 和 YUV。

2.2.1 RGB 色彩空间

RGB 用红、绿、蓝三个通道叠加出所有颜色。每个通道 0-255,三个通道组合就是 1600 多万种颜色。显示器、摄像头传感器,基本都是 RGB 的天下。

但 RGB 有个问题——三个通道相关性太强。你调一下亮度,三个通道都得跟着变。这在视频压缩和图像处理里非常不友好。

我的经验: 做低光照增强时,直接在 RGB 上操作容易把颜色搞偏。我一般先把图像转到 YUV,只处理亮度通道,颜色通道保持不动。效果稳得多。

2.2.2 YUV 色彩空间

YUV 把亮度(Y)和色度(U、V)分开。Y 通道存灰度信息,U、V 存颜色信息。人眼对亮度敏感,对颜色不敏感——所以视频压缩时可以对 UV 通道降采样,人眼看不出区别。

常见的 YUV 格式:

格式 采样方式 数据量(相对 RGB) 典型应用
YUV 4:4:4 每个像素都有 Y、U、V 与 RGB 相同 专业调色、无损编辑
YUV 4:2:2 每 2 个像素共享一组 UV 减少 1/3 广播级视频
YUV 4:2:0 每 4 个像素共享一组 UV 减少 1/2 H.264/H.265 编码、网络视频

避坑指南: 我曾经在 YUV 转 RGB 时用错了转换矩阵,结果画面偏绿。折腾了两天才发现是 BT.601 和 BT.709 的系数搞混了。记住:标清用 BT.601,高清用 BT.709。

2.3 视频帧率与分辨率

帧率就是每秒显示多少帧画面,单位 fps。分辨率就是每帧有多少像素。

这两个参数直接决定了视频的流畅度和清晰度,也决定了你的算法要处理多少数据。

2.3.1 常见帧率

  • 24 fps:电影标准,有「胶片感」
  • 30 fps:电视、网络视频标准
  • 60 fps:体育直播、游戏,画面丝滑
  • 120/240 fps:慢动作拍摄,后期可以放慢 4-8 倍

做运动补偿时,帧率越高,相邻帧之间的运动位移越小,补偿效果越好。但数据量也越大——这是个 trade-off。

2.3.2 常见分辨率

名称 分辨率 像素数 典型场景
SD (480p) 720×480 0.3M 老式 DVD
HD (720p) 1280×720 0.9M 入门高清
Full HD (1080p) 1920×1080 2.1M 主流视频
4K UHD 3840×2160 8.3M 高端影视、监控
8K UHD 7680×4320 33.2M 前沿设备

我的建议: 做低光照增强时,别一上来就上 4K。先用 720p 或 1080p 调通算法,再往高分辨率迁移。否则调试一次跑几分钟,效率太低。

2.4 噪声模型——图像质量的隐形杀手

噪声是什么?就是图像里不该出现的随机波动。低光照环境下,噪声尤其明显。你想想看,光线不足,传感器信号弱,噪声就相对变大了。

做低光照增强,本质上就是在「放大信号」和「抑制噪声」之间找平衡。搞懂噪声模型,是第一步。

2.4.1 高斯噪声

高斯噪声是最常见的噪声模型。它服从正态分布,每个像素独立叠加一个随机值。

数学上:I_noisy = I_clean + N(0, σ²)

σ 越大,噪声越强。高斯噪声通常来自传感器热噪声、电路噪声。

代码示例: 给图像添加高斯噪声

import numpy as np
import cv2

def add_gaussian_noise(image, sigma=25):
    noise = np.random.normal(0, sigma, image.shape).astype(np.int16)
    noisy = image.astype(np.int16) + noise
    noisy = np.clip(noisy, 0, 255).astype(np.uint8)
    return noisy

img = cv2.imread('frame.jpg')
noisy_img = add_gaussian_noise(img, sigma=30)

2.4.2 泊松噪声

泊松噪声跟光子计数有关。光线越弱,光子数越少,泊松噪声越明显。它有个特点:噪声强度跟信号强度成正比——亮的地方噪声大,暗的地方噪声小。

数学上:I_noisy = Poisson(I_clean)

泊松噪声在低光照场景下特别突出。我做过一个夜间监控项目,画面暗部全是颗粒感,那就是泊松噪声在作怪。

我的经验: 高斯噪声用高斯滤波就能压住,但泊松噪声不行。泊松噪声需要更复杂的模型,比如 Anscombe 变换把它转成高斯噪声再处理。这个后面章节会细讲。

2.4.3 两种噪声的对比

特性 高斯噪声 泊松噪声
来源 热噪声、电路噪声 光子计数统计波动
与信号关系 独立,与信号强度无关 相关,与信号强度成正比
分布 正态分布 泊松分布
典型场景 传感器升温、高 ISO 低光照、短曝光
处理方式 高斯滤波、双边滤波 Anscombe 变换 + 高斯滤波

避坑指南: 我曾经在低光照增强时只考虑了高斯噪声,结果处理完画面还是脏兮兮的。后来才发现是泊松噪声没处理好。记住:低光照场景下,泊松噪声是主角,高斯噪声是配角。

2.5 本章知识体系

下面这张图把本章的核心概念串起来了。你可以看到像素、色彩空间、帧率分辨率、噪声模型之间的关系。

图像与视频基础 · 知识体系 图像与视频基础 像素 (Pixel) 色彩空间 帧率 & 分辨率 噪声模型 最小图像单元 8位 / 10位 深度 RGB YUV 帧率 (fps) 分辨率 高斯噪声 泊松噪声 低光照场景下 泊松噪声是主要干扰源

嗯,这一章的内容就到这里。像素、色彩空间、帧率分辨率、噪声模型——这四个概念是后续所有算法的基础。搞懂了它们,你才能理解为什么运动补偿要做亚像素插值,为什么低光照增强要先做噪声估计。