📷 摄像头实时亮度自适应调整实战课程

第2章 · 图像基础:数字图像表示、像素与色彩空间(RGB、HSV、灰度)

2.1 数字图像表示

数字图像本质是一个二维矩阵(或三维张量),每个元素称为像素。对于灰度图像,每个像素存储一个亮度值(通常 0~255);对于彩色图像,每个像素由多个通道组成(如 RGB 三通道)。

数字图像 = 二维矩阵 p₁₁ p₁₂ p₁₃ p₁₄ p₂₁ p₂₂ p₂₃ p₂₄ ⋯ ⋮ 宽度 (列数) → 高度 (行数) ↓

图像分辨率 = 宽度 × 高度(像素数)。例如 640×480 的图像共有 307,200 个像素。每个像素的位深决定了颜色精度:8位灰度可表示 256 级亮度,24位彩色可表示 16,777,216 种颜色。

2.2 像素与邻域

像素是图像的最小基本单元。相邻像素之间的关系对于图像处理至关重要。常见的邻域类型包括 4-邻域、8-邻域和对角邻域。

像素邻域示例 (8-邻域) P N1 N2 N3 N4 N5 N6 N7 N8

2.3 色彩空间

色彩空间是颜色表示的数学模型。在计算机视觉中,最常用的三种色彩空间是 RGB、HSV 和 灰度。

2.3.1 RGB 色彩空间

RGB 基于三原色(红、绿、蓝)叠加原理。每个通道取值范围 0~255。常用于显示器、摄像头原始数据。

R G B RGB 加色模型
颜色RGB
红色25500
绿色02550
蓝色00255
白色255255255
黑色000
灰色128128128

2.3.2 HSV 色彩空间

HSV 将颜色分解为色调 (Hue)、饱和度 (Saturation) 和明度 (Value)。更符合人类视觉感知,常用于亮度调整、颜色分割。

Hue (色调) 0° ~ 360° Saturation (饱和度) 低 → 高 Value (明度) 暗 → 亮
💡 为什么 HSV 对亮度调整友好? 因为亮度信息集中在 V 通道,调整 V 通道不会改变色调和饱和度,可避免颜色失真。

2.3.3 灰度图像

灰度图像每个像素只有一个亮度值,通常由 RGB 加权转换得到:Gray = 0.299·R + 0.587·G + 0.114·B。灰度图简化了计算,是亮度分析的基础。

0 64 128 176 208 255

2.4 色彩空间转换实战

使用 OpenCV 可以轻松转换色彩空间。以下代码演示了如何读取图像并转换为 HSV 和灰度。

import cv2

# 读取图像 (BGR 格式)
img = cv2.imread('scene.jpg')

# 转换为灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 转换为 HSV
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

# 分离 HSV 通道
h, s, v = cv2.split(hsv)

# 显示结果
cv2.imshow('Original', img)
cv2.imshow('Gray', gray)
cv2.imshow('Value Channel', v)
cv2.waitKey(0)
cv2.destroyAllWindows()

在亮度自适应调整中,我们通常提取 V 通道进行分析,然后对 V 通道进行增强,最后合并回 HSV 再转回 BGR 显示。