RGB颜色空间
RGB(Red, Green, Blue)颜色空间是最常见的颜色表示方法,用于大多数显示设备如电视、电脑显示器和相机。每个颜色分量(红、绿、蓝)通常用8位表示,范围从0到255。
红色 (R): 表示红色强度
绿色 (G): 表示绿色强度
蓝色 (B): 表示蓝色强度
在RGB颜色空间中,所有颜色都是通过混合这三种基色生成的。
YUV颜色空间
YUV颜色空间主要用于视频压缩和传输。YUV分为三个分量:
Y (Luminance): 亮度,表示图像的灰度值。
U (Chrominance): 色度分量,表示蓝色与亮度的差异。
V (Chrominance): 色度分量,表示红色与亮度的差异。
YUV的优势在于将亮度与色度分离,这样可以在压缩时优先保留亮度信息,减少对人眼不敏感的色度信息的精度,达到更好的压缩效果。
RGB到YUV的转换公式
常用的转换公式之一(BT.601标准):
YUV到RGB的转换公式
逆转换公式为:
可视化示例
为了更好地理解这些转换,以下是一些示例:
RGB图像:
红色:R=255, G=0, B=0
绿色:R=0, G=255, B=0
蓝色:R=0, G=0, B=255
白色:R=255, G=255, B=255
黑色:R=0, G=0, B=0
RGB转YUV:
红色:Y=76.245, U=150.975, V=29.90
绿色:Y=149.685, U=-74.125, V=-25.905
蓝色:Y=29.07, U=176.09, V=-100.0
白色:Y=255, U=0, V=0
黑色:Y=0, U=0, V=0
可视化转换的代码示例(Python)
import numpy as np
import matplotlib.pyplot as plt
def rgb_to_yuv(rgb):
matrix = np.array([[0.299, 0.587, 0.114],
[-0.147, -0.289, 0.436],
[0.615, -0.515, -0.100]])
return np.dot(rgb, matrix.T)
def yuv_to_rgb(yuv):
matrix = np.array([[1, 0, 1.140],
[1, -0.394, -0.581],
[1, 2.032, 0]])
return np.dot(yuv, matrix.T)
# 示例 RGB 图像
rgb_colors = np.array([[255, 0, 0],
[0, 255, 0],
[0, 0, 255],
[255, 255, 255],
[0, 0, 0]])
# 转换为 YUV
yuv_colors = rgb_to_yuv(rgb_colors)
# 转换回 RGB
rgb_converted_back = yuv_to_rgb(yuv_colors)
# 显示结果
print("Original RGB:\n", rgb_colors)
print("Converted to YUV:\n", yuv_colors)
print("Converted back to RGB:\n", rgb_converted_back)
标签:colors,rgb,yuv,RGB,图像,YUV,255
From: https://www.cnblogs.com/mxh010211/p/18288842