第2章 · 图像基础
数字图像表示 · 像素与色彩空间 (RGB / HSV / YUV) · 图像直方图
📷 数字图像表示 连续→离散
数字图像由像素 (pixel) 构成,每个像素存储亮度/颜色信息。灰度图像每个像素为 0–255 的标量;彩色图像通常为多通道。图像分辨率 = 宽度 × 高度 (像素)。
# 数字图像本质:NumPy 数组 (H, W) 或 (H, W, C)
import numpy as np
gray_img = np.random.randint(0, 256, (480, 640), dtype=np.uint8)
color_img = np.random.randint(0, 256, (480, 640, 3), dtype=np.uint8)
🎨 像素与色彩空间 RGB / HSV / YUV
像素是图像的最小采样单元。色彩空间定义了如何用数值表示颜色。常用空间:
| 色彩空间 | 通道 | 特点 |
|---|---|---|
| RGB | R (红), G (绿), B (蓝) | 面向显示设备,通道高度相关 |
| HSV | H (色相), S (饱和度), V (明度) | 更接近人类感知,适合颜色分割 |
| YUV / YCbCr | Y (亮度), U/Cb (蓝色差), V/Cr (红色差) | 亮度与色度分离,视频压缩常用 |
# OpenCV 色彩空间转换 (Python)
import cv2
img_bgr = cv2.imread('image.jpg')
img_hsv = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2HSV)
img_yuv = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2YUV)
📊 图像直方图概念 亮度分布
直方图统计每个灰度级 (0–255) 的像素个数,反映图像对比度、亮度分布。横轴:灰度值,纵轴:频数。累积直方图用于均衡化。
# 使用 OpenCV 计算直方图
import cv2
import matplotlib.pyplot as plt
img = cv2.imread('image.jpg', 0) # 灰度
hist = cv2.calcHist([img], [0], None, [256], [0,256])
plt.plot(hist, color='#2563eb')
plt.title('灰度直方图')
plt.xlabel('像素值')
plt.ylabel('频数')
直方图应用: 直方图均衡化、对比度拉伸、阈值分割、色调映射等。