图像RGB-YUV

RGB颜色空间

RGB(Red, Green, Blue)颜色空间是最常见的颜色表示方法,用于大多数显示设备如电视、电脑显示器和相机。每个颜色分量(红、绿、蓝)通常用8位表示,范围从0到255。

红色 ®: 表示红色强度
绿色 (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)
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值